在数据分析中,一些复杂的逻辑或模型可通过自定义SQL创建数据表。并且自定义SQL支持传参,可满足更复杂多变的分析场景。
前提条件
您已获取数据,请参见连接数据源。
使用限制
API数据源不支持自定义SQL。
输入SQL代码
您可以通过以下2种方式添加自定义SQL。
进入自定义SQL页面。
入口1:在数据源页面,单击右上角的SQL创建数据集。
入口2:数据集编辑页面,在左侧面板选择数据源,画布中没有任何数据表时,单击画布中的使用SQL代码创建第一张表或左侧面板中的SQL代码创建表。
输入SQL代码后,单击运行。
SQL示例如下:
SELECT report_date, order_level, shipping_type, area, price, order_number from company_sales_record where $expr{report_date :report_date} and $expr{order_level :order_level} and $expr{order_number :order_number}
运行成功后,您可以在运行结果页签,看到结果预览。
单击确认编辑。
保存自定义SQL创建的数据集。
修改SQL代码
您可以通过以下2种方式修改SQL代码:
鼠标悬浮至画布的表上,单击编辑代码图标。
单击画布上的目标表,在右侧的面板中,单击编辑代码。
占位符
Quick BI提供占位符的方式进行传参,在查看报表并进行数据分析的过程中,您可以通过查询控件把占位符的值传到SQL中,从而实现数据的灵活分析。Quick BI支持值占位符和表达式占位符,您可以按照需求进行配置。
类型 | 描述 | 使用场景 | 格式 |
值占位符 | 可通过仪表板上的查询控件传入一个值、一组值。 说明 当占位符是日期时,需要选择具体的日期格式,来控制传入值的格式。 | 适用于大部分需要传参的场景。 |
|
表达式占位符 | 可通过仪表板上的查询控件传入一个条件。 | 当仪表板上的筛选条件中,用户可以自由修改筛选方式,需要使用表达式占位符,将整个筛选条件都传入SQL。 例如下图仪表板用户可设置 |
|
配置方式
根据业务需要写SQL,加入占位符。
在SQL代码编辑页面,单击占位符管理。
在占位符管理面板,配置以下占位符并单击确定。
配置项请参见占位符管理。
说明如果占位符应用在select语句后面,必须设置全局生效的默认值。
例如,在创建数据集时在select语句后面加了占位符“profit_range”,代码如下:
SELECT report_date, order_level, shipping_type,price,order_number,area, case when profit_amt< ${profit_range} then'亏损' when profit_amt> ${profit_range} then'盈利' else '持平' end '订单等级' from company_sales_record where $expr{report_date :report_date} and $expr{order_level :order_level} and $expr{order_number :order_number}
此时如果不设置默认值,无法正常运行。
需在占位符管理里设置“profit_range”的查询默认值。
默认值设置后可以正常运行,运行结果如下:
单击保存,保存数据集。
在顶部菜单栏选择
。在仪表板编辑页面添加查询条件,绑定占位符。
例如,在设置查询条件时,用一个下拉单选筛选area,绑定SQL占位符,可传入1个值。
用文本筛选过滤order_number,绑定SQL参数,传入一个条件。
当仪表板查询时,会按照查询条件把对应内容传入值占位符和表达式占位符中。
例如,仪表板查询条件如下图所示。
则对应的SQL为如下:
SELECT * FROM company_sales_record WHERE area = '华北' AND order_number > 0
占位符用法示例:
SELECT * FROM tablename WHERE area in ('$val{area_ph}') -- 文本类型 多选 AND name = '$val{name_ph}' -- 文本类型 单选 AND number = $val{number_ph} -- 数值类型 AND report_date > '$val{report_date_ph.get(0)}' -- 日期类型 获取日期范围控件起始日期 AND report_date < '$val{report_date_ph.get(1)}' -- 日期类型 获取日期范围控件结束日期
占位符的使用场景请参见占位符。
兼容历史写法:
值占位符(原占位符)的历史写法:${占位符名}
表达式占位符(原参数)的历史写法:${物理字段名:参数名}
后续步骤
当您需要分析的字段在不同的数据表时,Quick BI支持关联数据表,请参见构建模型。