
# 准备智能分析助手数据
使用智能分析助手，建议准备"干净"、"简单"、"适量"的数据才能发挥更好的效果。
#### "干净"的数据
- **数据内容需与业务口径一致。**
  某些原始表，为了节省存储空间，会使用数值/代码来存储枚举值，如用0、1、2来存储男性、女性、未知，如果不对数据做清洗，模型无法将数字和性别做出对应。其余类似的情况还有口语表达和书面表达之间的区别，比如数据中存储了书面表达的内容，而用户提问往往采用口语表达。DataArts Insight提供了三种能力，可以帮助缓解上述问题：
  - 新建维度：用户可以通过新建一个虚拟列，将数字/代码映射为具有语义的文本。 通过"数据管理 \> 数据集"在数据集详情中新建维度来完成内容映射，请参考[新建维度](https://support.huaweicloud.com/usermanual-dataartsinsight/dataartsinsight_03_0205.html)。
    图1新建维度入口   
    ![](https://support.huaweicloud.com/usermanual-dataartsinsight/zh-cn_image_0000002357899113.png "点击放大")
    图2新建维度字段表达示例   
    ![](https://support.huaweicloud.com/usermanual-dataartsinsight/zh-cn_image_0000002324100526.png "点击放大") 
  
  - 同义词和关键词：
    - 对于一些口语化的表达，可以通过编写同义词和字段描述来帮助模型理解。例如：农业银行的全称是"中国农业银行"，可能会缩写为"农行"，DataArts Insight提供了同义词配置，来帮助模型检索、理解。 通过"数据管理 \> 数据集"在数据集详情问答配置页签中配置同义词来提升模型理解。请参考[问答配置（可选）](https://support.huaweicloud.com/usermanual-dataartsinsight/dataartsinsight_03_0202.html#dataartsinsight_03_0202__section13602165111269)。
      图3同义词配置入口   
      ![](https://support.huaweicloud.com/usermanual-dataartsinsight/zh-cn_image_0000002357859169.png "点击放大")
      图4同义词配置示例   
      ![](https://support.huaweicloud.com/usermanual-dataartsinsight/zh-cn_image_0000002358223021.png "点击放大") 
    
    - 同义词的作用是将某个数据中存在的枚举值，映射为一个用户常用问法。但有时候则需要反方向做映射，比如在金融行业，"基保理"是一个业内术语，指代的是"基金"、"保险"、"理财"，它是三个词汇的组合词，无法通过配置同义词完成。DataArts Insight提供了关键词改写，能将用户提问中包含的"基保理"改写成"基金"、"保险"、"理财"。 通过"问答管理 \> 智能分析助手"在智能分析助手详情页"知识库配置 \> 问题关键词改写"配置关键词改写，来改变用户问题。请参考[配置关键词](https://support.huaweicloud.com/usermanual-dataartsinsight/dataartsinsight_03_0545.html)。
      图5添加关键词入口   
      ![](https://support.huaweicloud.com/usermanual-dataartsinsight/zh-cn_image_0000002323940718.png "点击放大")
      图6添加关键词示例   
      ![](https://support.huaweicloud.com/usermanual-dataartsinsight/zh-cn_image_0000002324100530.png "点击放大")
      图7智能分析助手关键词改写效果图   
      ![](https://support.huaweicloud.com/usermanual-dataartsinsight/zh-cn_image_0000002357859173.png "点击放大") 
     
   

- **数据内容尽量不具有歧义。**
  大模型在缺少业务知识背景的情况下，难以鉴别歧义。比如数据中如果同时存在"客户名称"、"用户名称"两列，或者存在非常近似的两个枚举值，比如"吉林省"和"吉林市"，当前模型无法确认要使用哪一列和枚举值来回答用户问题（比如"王强的销售额"，"吉林的GDP"），请尽量避免此类数据歧义。DataArts Insight智能分析助手具备一定的歧义检测能力，主动提示用户确认问题中的歧义。
  图8DataArts Insight会主动提示用户问题的歧义   
  ![](https://support.huaweicloud.com/usermanual-dataartsinsight/zh-cn_image_0000002357939293.png "点击放大") 

- **数据内容尽量不存在冗余。**
  某些加工后的业务表的首要目的是用于报表展示，所以其内容可能存在冗余。例如，某用户的消费记录的维表和明细表同时加工到某数据表后，会存在冗余（年收入一列被冗余存储），在此表中提问用户的年收入时，则需要提前将聚合方式改为"无聚合"才能正确回答。
  通过"数据管理 \> 数据集"在数据集详情页数据预览页签中进行字段配置，设置默认聚合方式。请参考[字段配置](https://support.huaweicloud.com/usermanual-dataartsinsight/dataartsinsight_03_0202.html#dataartsinsight_03_0202__section914610423486)。
  表1数据表示例 
  | **用户ID**       | **消费日期**   | **消费金额** | **商品类别** | **年收入** |
  |:---|:---|:---|:---|:---|
  | **3130102182** | 2024-12-13 | 301.13   | 日用品      | 100,000 |
  | **3130102182** | 2024-12-14 | 345.59   | 食品       | 100,000 |
  | **3130102182** | 2024-12-14 | 1.29     | 云服务      | 100,000 |
  | **3130102182** | 2024-12-15 | 103.1    | 服装       | 100,000 |
     
  

- **字段类型被正确设置。**
  ChatBI对字段类型是敏感的，特别是时间字段。错误设置的字段类型容易使ChatBI生成的SQL无法执行。
  
 
#### "简单"的数据
- **指标已计算/** **可计算** 。
  当前大模型对指标的计算能力偏弱，往往无法写出合适的指标加工逻辑。如果能够提前将指标加工好，作为数据列加入到数据中，让大模型专注于执行查询而非计算。DataArts Insight提供了指标管理平台，用户可以提前定义指标的计算逻辑，模型将定义好的指标视作数据列即可。
  新建指标请参考[创建指标](https://support.huaweicloud.com/usermanual-dataartsinsight/dataartsinsight_03_0525.html)。
  图9编辑指标示例图   
  ![](https://support.huaweicloud.com/usermanual-dataartsinsight/zh-cn_image_0000002323940722.png "点击放大") 

- **单一的宽表** 。
  当前的ChatBI对自动选取多个数据表，JOIN后再执行查询的准确率较低。我们建议用户提前将数据加工成一个单一的宽表，让ChatBI专注于做好数据查询。为此，DataArts Insight提供了提前定义多表关联的能力，用户可提前定义好数据关联关系，模型将其视作宽表，专注于宽表的数据查询。
  通过"数据管理 \> 数据集"在数据集详情页定义多表关联关系。请参考[多表级联建模](https://support.huaweicloud.com/usermanual-dataartsinsight/dataartsinsight_03_0204.html)。
  图10选取多个数据表示例图   
  ![](https://support.huaweicloud.com/usermanual-dataartsinsight/zh-cn_image_0000002324100534.png "点击放大")
  图11建立多表关联示例图   
  ![](https://support.huaweicloud.com/usermanual-dataartsinsight/zh-cn_image_0000002357859177.png "点击放大") 
- **数据粒度保持统一。**
  一些企业可能会在同一个数据表中存储不同粒度的数据，以便制作报表。比如在不同层级结构上数据会不断进行汇总，并且汇总数据和明细数据被同时存在一个表中。比如，省、市、区/县的GDP数据都同时存在一个宽表中，如下表所示：
  表22023年广东省GDP数据示例表 
  | **省** | **市** | **区** **/** **县** | **GDP** **（亿元）** | **人均** **GDP** **（元）** |
  |:---|:---|:---|:---|:---|
  | 广东    | -     | -                 | 135,673          | 106,986                |
  | 广东    | 深圳    | -                 | 34,606           | 195,959                |
  | 广东    | 深圳    | 福田                | 5,705            | 375,053                |
  | 广东    | 深圳    | 罗湖                | 2,808            | 273,623                |
  | ...                                                                       |||||
     
  ChatBI习惯将上述表作为明细表，只存储最细粒度的数据，如果需要取粗粒度数据则向上汇总，如提问广东省的GDP时，ChatBI往往会写出如下SQL，从而得到错误的结论，数据存在冗余。
  ```
  SELECT SUM(`GDP（亿元）`) FROM table WHERE `省`='广东'
  ```
  解决此类问题，最好从源头抓起，杜绝在一张表中存储不同数据粒度的数据**。**DataArts Insight中，可以利用绑定条件来适配上述数据结构，比如可以为"省"这一列绑定"市"为空且"区县"为空。
  通过"数据管理 \> 数据集"在数据集详情页数据预览页签中进行字段配置，为字段绑定条件。请参考[字段配置](https://support.huaweicloud.com/usermanual-dataartsinsight/dataartsinsight_03_0202.html#dataartsinsight_03_0202__section914610423486)。
  图12绑定条件入口   
  ![](https://support.huaweicloud.com/usermanual-dataartsinsight/zh-cn_image_0000002357939297.png "点击放大")
  图13为字段设置绑定条件示例   
  ![](https://support.huaweicloud.com/usermanual-dataartsinsight/zh-cn_image_0000002323940726.png "点击放大")
  生成SQL时则会增加如下条件，即可获得正确查数结果。
  ```
  SELECT SUM(`GDP（亿元）`) FROM table WHERE `省`='广东' 
  AND `市` IS NULL AND `区县` IS NULL
  ```
  
 
#### "适量"的数据
**列数不建议超过100**。
一般而言，数据列越多，而模型的输入token数量则会相对变多，对模型的准确率造成影响。此时需引入检索来筛选与用户问题相关的列，而检索的准确率和召回率则又会为模型提示词生成的精度带来影响。所以，我们推荐宽表的列数要适量，最好控制在100列以内。
