# 通过SQL语句创建数据集
在数据分析中，一些复杂的逻辑或模型可通过自定义SQL创建数据表。此外，自定义SQL支持变量设置，可满足更复杂多变的分析场景。
#### 约束限制
- 一个数据集中最多只有一个SQL语句。
- 创建自定义数据集的SQL语法仅支持SELECT，FROM，WHERE，GROUP BY，ORDER BY，SET，LIMIT等。
 
#### 前提条件
- 已创建项目，请参见[创建并管理DataArts Insight项目](https://support.huaweicloud.com/usermanual-dataartsinsight/dataartsinsight_03_0002.html)。

- 已接入数据源，请参见[建立DataArts Insight与数据源的连接](https://support.huaweicloud.com/usermanual-dataartsinsight/dataartsinsight_03_0100.html)。
 
#### SQL创建数据集
1. 登录[智能数据洞察控制台](https://auth.huaweicloud.com/authui/login.html?#/login)。
2. 单击管理控制台左上角的![](https://support.huaweicloud.com/usermanual-dataartsinsight/zh-cn_image_0000001831547921.png)，选择区域，单击右上角的企业项目，选择企业项目。
3. 在控制台上方单击"项目"后，单击项目名称，进入项目页面。
4. 单击"数据管理 \> 数据集 \> 新建数据集"，进入新建数据集页面。

5. 单击页面右上方的"SQL编辑"，进入SQL编辑页面。
6. 在SQL编辑页面，单击![](https://support.huaweicloud.com/usermanual-dataartsinsight/zh-cn_image_0000001646145117.png)对自定义数据表命名，如果未对自定义数据表进行命名，则数据表名默认为"sql"。
7. 按业务需求输入SQL语句，支持通过[SQL参数]进行动态查询，编写完成单击"运行"。
   样例：将data数据表中data1、data2、data3数据整理成一个数据集。
   ```
   SELECT
     *
   FROM
     data
   WHERE
     city IN ('data1', 'data2', 'data3') 
     and date > ${param}
   ```
   ![](https://support.huaweicloud.com/usermanual-dataartsinsight/public_sys-resources/note_3.0-zh-cn.png)
   SQL编辑会创建一个表用于数据集的数据建模。如果数据集画布中已存在表，新建的SQL表会与画布中现有的表建立关联关系，详见[多表级联建模](https://support.huaweicloud.com/usermanual-dataartsinsight/dataartsinsight_03_0204.html)。
   
8. 运行成功后，您可以在运行页签看到运行后的数据。
9. 单击"完成并退出"，保存自定义数据集。
 
 #### 设置SQL参数
在分析数据的过程中，当您在查看仪表板、大屏时需要把参数传到SQL中，可以按照需求进行SQL参数设置，本章节介绍如何设置SQL参数。
1. SQL脚本中使用SQL参数进行动态SQL编写：
   - 参数的格式为${param}，param为参数名称，支持通过序号获取指定参数值。示例：${params\[0\]}可以获取params参数列表中第一个值。
   
   - 参数为空时，执行SQL时默认会把相关条件设为1=1，从而可以正常查询数据。另外支持通过\<if test="param != null"\>动态语句\</if\>的方式灵活控制参数不为空时最终的SQL语句。
    
2. 在SQL编辑页单击右上方的"参数设置"，进入参数设置页面。
   图1参数设置页面   
   ![](https://support.huaweicloud.com/usermanual-dataartsinsight/zh-cn_image_0000001876177550.png "点击放大")
   表1参数说明 
   | 参数名称 | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   |:---|:---|
   | 变量名   | 变量名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | 变量类型 | 支持文本、数值、日期和系统变量。 - 文本：普通文本类型，组装执行sql时"输入值"使用单引号包裹，如：'value'；  - 数值：整数或小数类型，组装执行sql时，直接拼接输入值；  - 日期：年季月日时分秒等日期类型数据，组装执行sql时，按指定日期格式组装为字符串并使用单引号包裹，支持以下类型： - YEARREGION：日期-年类型；  - QUARTERREGION：日期-年季类型；  - MONTHREGION：日期-年月类型；  - DATEREGION：日期-年月日类型；  - YMDHMSREGION：日期-年月日时分秒类型。    - 系统变量：系统级变量，无法指定具体值，由系统后台填写，如："访问用户名称"后台将当前访问用户名作为值组装执行sql。 说明： 系统变量在仪表板的查询控件中不显示。    |
   | 默认值生效范围 | 支持全局生效和仅编辑页生效范围。 - 全局生效：查询默认值在仪表板、大屏、SQL编辑页面都生效。  - 仅编辑页生效：查询默认值只在sql编辑页面有效。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | 查询默认值    | 可选项。当数据集数据量过大，导致数据集保存失败或仪表板查询过长时，推荐您配置查询默认值。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
      
   
 
#### 修改SQL代码
根据分析场景的改变，存在需要对SQL代码进行相应的调整以适应新的数据需求。
1. 登录[智能数据洞察控制台](https://auth.huaweicloud.com/authui/login.html?#/login)。
2. 单击管理控制台左上角的![](https://support.huaweicloud.com/usermanual-dataartsinsight/zh-cn_image_0000001831547921.png)，选择区域，单击右上角的企业项目，选择企业项目。
3. 在控制台上方单击"项目"后，单击项目名称，进入项目页面。
4. 单击"数据管理 \> 数据集"，进入数据集页面。
5. 单击数据集名称，进入数据集编辑页面。
   ![](https://support.huaweicloud.com/usermanual-dataartsinsight/public_sys-resources/note_3.0-zh-cn.png)
   由自定义SQL创建的数据集，数据集名称后会有"SQL"字样。
   

6. 单击"SQL编辑"，进入SQL编辑页面，对SQL语句进行编辑修改。
   - SQL编辑器提供了格式化工具，可以对您输入的SQL语句格式化。
   
   - 支持设置SQL参数，参数说明请参考[设置SQL参数]。
   
   
   图2配置字段   
   ![](https://support.huaweicloud.com/usermanual-dataartsinsight/zh-cn_image_0000002206708989.png "点击放大") 
7. 单击"运行"，测试运行成功后，可在"运行结果"中查看运行后的数据。
8. 单击"完成并退出"，保存修改后的数据集。
 
#### 后续操作（可选）
数据集创建完成后，您可以根据业务场景的需求编辑、删除数据集。参见[后续操作（可选）](https://support.huaweicloud.com/usermanual-dataartsinsight/dataartsinsight_03_0202.html#dataartsinsight_03_0202__section1279109185918)。
