在数据分析中,一些复杂的逻辑或模型可通过自定义SQL创建数据表。并且自定义SQL支持传参,可满足更复杂多变的分析场景。

前提条件

您已获取数据,请参见连接数据源

输入SQL代码

您可以通过以下2种方式添加自定义SQL。

  1. 进入自定义SQL页面。
    • 入口1:在数据源页面,单击右上角的SQL创建数据集SQL创建
    • 入口2数据集编辑页面,在左侧面板选择数据源,画布中没有任何数据表时,单击画布中的使用SQL代码创建第一张表412数据集
  2. 输入SQL代码后,单击运行
    输入代码412
    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}
    运行成功后,您可以在运行结果页签,看到结果预览。运行结果412
  3. 单击确认编辑
    保存自定义SQL创建的数据集。

修改SQL代码

您可以通过以下2种方式修改SQL代码:
  • 鼠标悬浮至画布的表上,单击编辑代码图标。编辑412
  • 单击画布上的目标表,在右侧的面板中,单击编辑代码编辑2_412

参数和占位符

Quick BI提供参数和占位符2种方式传参方式,在分析的过程中,当您在查看仪表板时需要把参数传到SQL中,可以按照需求进行选择。
类别 描述 使用场景 格式
占位符 可通过仪表板上的查询控件传入一个值或一组值。
说明 当占位符是日期时,需要选择具体的日期格式,来控制传入值的格式。
适用于大部分需要传参的场景。 ${占位符名}
参数 可通过仪表板上的查询控件传入一个条件。 当仪表板上的筛选条件中,用户可以自由修改筛选方式,需要使用参数,将整个筛选条件都传入SQL。
例如下图仪表板用户可设置利润>50或者利润<50,需要连同操作符一起传入SQL。参数传参
${物理字段名:参数名}

配置方式

根据业务需要写SQL,加入占位符或参数。

  1. 在SQL代码编辑页面,单击参数设置
    参数设置412
  2. 参数设置面板,配置以下参数并单击确定
    配置1
    参数名称 描述
    类型 传参的类型,支持参数占位符2种方式传参。
    变量名 参数占位符对应的变量名称。
    变量类型 参数占位符对应的变量类型。

    支持文本、数值和时间3种变量类型。

    查询默认值 可选项。当数据集数据量过大,导致数据集保存失败或仪表板查询过长时,推荐您配置查询默认值
    • 选择生效范围并输入查询默认值后,如果查询控件设置默认值,则通过查询控件传参,否则使用输入的查询默认值传参,具体操作请参见SQL参数默认值
    • 选择生效范围但未输入查询默认值,只能通过查询控件设置的默认值传参,否则SQL条件使用恒等式代替,请继续执行下一步。
  3. 单击保存,保存数据集。
    保存数据集412
  4. 在顶部菜单栏选择开始分析 > 创建仪表板
  5. 在仪表板编辑页面添加查询条件,绑定占位符和参数。
    例如,在设置查询条件时,用一个下拉单选筛选区域,绑定SQL占位符,可传入1个值。占位符传参
    用文本筛选过滤利润,绑定SQL参数,传入一个条件。参数传参
  6. 当仪表板查询时,会按照查询条件把对应内容传入占位符和参数中。
    例如,仪表板查询条件如下图所示。查询条件
    则对应的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')

SQL参数默认值

当SQL数据集的数据量过大时,仅通过参数查询会使数据返回时间过长,导致数据集保存超时失败,此时建议增加SQL参数默认值。Quick BI能根据默认值快速获取数据,降低查询时间。

SQL参数默认值的生效范围为仅编辑页全局生效
  • 仅编辑页:配置该选项后,该默认值仅在数据集预览页面生效。
    例如,设置profit_amt>200,则配置效果如下图。5
  • 全局生效:配置该选项后,基于该数据集创建的报表中,默认值的生效规则如下:
    • 若报表中没有查询控件或查询控件未设置默认值,则以数据集设置的查询默认值为准。
      例如,设置数据集查询默认值为华东,则仪表板中配置效果如下图。1
    • 若报表中的查询控件设置默认值,则以查询控件中的默认值为准。
      例如,查询控件的默认值为西北,则仪表板中配置效果如下图。4

后续步骤

当您需要分析的字段在不同的数据表时,Quick BI支持关联数据表,请参见构建模型