在数据分析中,一些复杂的逻辑或模型可通过自定义SQL创建数据表。并且自定义SQL支持传参,可满足更复杂多变的分析场景。
前提条件
您已获取数据。输入SQL代码
您可以通过以下2种方式添加自定义SQL。
- 进入自定义SQL页面。
- 入口1:在数据源页面,单击右上角的SQL创建数据集。
- 入口2:数据集新建页面,在左侧面板选择数据源,画布中没有任何数据表时,单击画布中的使用SQL代码创建第一张表。
- 在弹框中输入SQL代码,单击运行。SQL示例如下:
SELECT report_date, order_level, shipping_type, area, price, order_number from company_sales_record where ${report_date :report_date} and ${order_level :order_level} and ${order_number :order_number}
运行成功后,您可以在运行结果页签,看到结果预览。 - 单击确认编辑。保存自定义SQL创建的数据集。
修改SQL代码
鼠标悬浮至画布的表上,单击编辑代码。
参数和占位符
Quick BI提供参数和占位符2种方式传参,在分析的过程中,当您在查看仪表板时需要把参数传到SQL中,可以按照需求进行选择。
类别 | 描述 | 使用场景 | 格式 |
占位符 | 可通过仪表板上的筛选控件传入一个值或一组值。 说明 当占位符是日期时,需要选择具体的日期格式,来控制传入值的格式。 | 适用于大部分需要传参的场景。 | ${占位符名} |
参数 | 可通过仪表板上的筛选控件传入一个条件。 | 当仪表板上的筛选条件中,用户可以自由修改筛选方式,需要使用参数,把整个筛选条件都传入SQL。 例如下图仪表板用户可设置 利润>50 或者利润<50 ,需要连同操作符一起传入SQL。 | ${物理字段名:参数名} |
配置方式
根据业务需要写SQL,加入占位符或参数。
- 在编辑代码片段页面,单击参数设置。
- 在参数设置面板,配置以下参数并单击确定。
参数名称 描述 类型 传参的类型,支持参数和占位符2种方式传参。 变量名 参数和占位符对应的变量名称。 变量类型 参数和占位符对应的变量类型。 支持文本、数值和时间3种变量类型。
查询默认值 可选项。当数据集数据量过大,导致数据集保存失败或仪表板查询过长时,推荐您配置查询默认值。 - 选择生效范围并输入查询默认值后,如果查询控件设置默认值,则通过查询控件传参,否则使用输入的查询默认值传参。
- 选择生效范围但未输入查询默认值,只能通过查询控件设置的默认值传参,否则SQL条件使用恒等式代替,请继续执行下一步。
- 单击保存,保存数据集。
- 在顶部菜单栏选择 。
- 在仪表板编辑页面添加查询条件,绑定占位符和参数。例如,在设置查询条件时,用一个下拉单选筛选区域,绑定SQL占位符,可传入1个值。用数值筛选过滤利润,绑定SQL参数,传入一个条件。
- 当仪表板查询时,会按照查询条件把对应内容传入占位符和参数中。例如,仪表板查询条件如下图所示。则对应的SQL为如下:
SELECT * FROM company_sales_record WHERE area = '华北' AND profit_amt > 0
占位符用法示例:SELECT * FROM tablename WHERE area in ('${area_ph}') -- 文本类型为多选 AND name = '${name_ph}' -- 文本类型为单选 AND number = ${number_ph} -- 数值类型 AND report_date > '${report_date_ph.get(0)}' -- 日期类型为获取日期范围控件起始日期 AND report_date < '${report_date_ph.get(1)}' -- 日期类型为获取日期范围控件结束日期
标签占位符
可通过标签占位符获取当前访问用户的标签值。
格式: $tag{用户标签名}
例如,控制某员工只能看到华北大区的数据,只能看到商品A,商品B的数据,则配置某用户的标签:
- 区域:
华北
- 商品:
商品A, 商品B
SQL代码片段示例:
select * from table_name
where
area = '$tag{区域}'
and
product in ('$tag{商品}')
当某用户访问数据时,系统会自动读取该用户的标签,运行时的SQL示例:
select * from table_name
where
area = '华北'
and
product in ('商品A', '商品B')