当你需要根据实际场景修改嵌入仪表盘或者嵌入图表的查询条件时,你可以通过在 url 中传入查询配置以覆盖原有查询条件。
在 iframe 的 url 中传入 query
参数来配置覆盖筛选器。
import React from 'react' import ReactDOM from 'react-dom' import '@aeolus/sdk' class BIComponent extends React.Component { render() { return ( <iframe src={`https://console.volcengine.com/bi/datawind-open/#/external/dashboard/*****?appId=********&inline=true&query=OrderDate between '20210101' and '20210301' and Profit >= 100`} /> ) } } ReactDOM.render(<BIComponent />, document.querySelector('body'))
在 SDK 组件中,可以传入 query
参数来配置覆盖筛选器。
import React from 'react' import ReactDOM from 'react-dom' import '@aeolus/sdk' class BIComponent extends React.Component { render() { return ( <aeolus-dashboard urlPrefix="https://console.volcengine.com/bi/datawind-open" dashboardId="*****" appId="******" query={`OrderDate between '20210101' and '20210301' and Profit >= 100`} /> ) } } ReactDOM.render(<BIComponent />, document.querySelector('body'))
我们以下面的仪表盘链接为例,可以看到该仪表盘已经配置了 4 个公共筛选器 Category
、ShipMode
、Region
、OrderDate
https://console.volcengine.com/bi/datawind-open/#/dashboard/******?appId=*******
你或许已经注意到 ShipMode
和 OrderDate
与图表数据集字段并不一致,真实的数据集字段为 Ship Mode
和 Order Date
。进行覆盖筛选器配置时,需要使用公共筛选器名称进行覆盖,而不是数据集字段。特别地,公共筛选器中不可以存在空格,否则在进行覆盖时无法识别。
&query=Category = 'Furniture' and Region in ('Central','South')
该配置表示查询 Category
为 Furniture
,且 Region
为 Central
或 South
的数据。
&query=Category != 'Furniture' and ShipMode = 'First Class' and ProductName like '%Desktop%'
该配置表示查询 Category
不为 Furniture
,且 ShipMode
为 First Class
,且 ProductName
包含 Desktop
的数据。
&query=OrderDate between '20210101' and '20210301' and Profit >= 100
该配置表示查询 OrderDate
在 2021-01-01
与 2021-03-01
之间,且 Profit
大于 100
的数据。
完整的查询配置以&query=
开头,由单个或多个查询语句组成。
field op value scope?
每个查询语句的基本语法由field
、op
、value
以及可选的scope
构成:
嵌入仪表盘时为公共筛选器名称或查询容器中公共筛选器名称,嵌入图表时为图表上添加的筛选字段名称。
对应下图中,test
则为该查询组件的名称:
【注意】
field
名称为纯数字时,如123
,需要用方括号将其括起,如:[123]
field
名称中存在特殊字符时(除去中英文/数字/下划线之外的其他字符,如$test filter
包含美元符和空格符),需要用方括号将其括起,如:[$test filter]
field
名称中存在特殊字符需要用方括号将其括起,并且field
名称本身也包含[
或]
方符号时,需要使用\
识别,如名称为test [demo] filter
包含方括号和空格符,在语句中则可以这样表示:[test \[demo\] filter]
可以根据实际场景使用in
、like
等操作符,具体操作符清单见后文中的 [查询操作符清单]
可以为数字或字符串
如果查询值为字符串,需要使用单引号'*'
包裹。如'Shanghai'
。
多个值时需要用小括号括起,如('Jiangsu', 'Zhejiang')
。
示例如下(当前查询组件名为 test):&query=test in ('北京','上海')
当需要指定查询范围时,可以通过 scope 来指定,例如限制筛选器覆盖指定 sheet 页:field op value scope sheetId = *
当有多个查询语句,需通过and
连接符连接,表示配置是且的关系。DataWind 不支持覆盖筛选器之间为或关系。
语法如下:field1 op1 value1 and field2 op2 value2
如果遇到需要判断优先级的情况,可以使用圆括号()
括起, 如 (test1 in ('Jiangsu', 'Zhejiang') scope sheetId = 123) and test2 like '%abc%'
op | 适用范围 | 说明 | 示例 |
---|---|---|---|
| 文本-精确筛选 | 多个值时用括号括起,逗号分隔如: |
|
| 同上 | 同上 |
|
| 文本-条件筛选 | 可以使用通配符 |
|
| 文本-条件筛选 | 同上 |
|
| 文本-条件筛选 | 模糊匹配含有该值的数据项,效果相当于 |
|
| 文本-条件筛选 | 同上 |
|
| 文本-条件筛选 | 模糊匹配开头为该值的数据项,效果相当于 |
|
| 文本-条件筛选 | 模糊匹配结尾为该值的数据项,效果相当于 |
|
| 文本-条件筛选 |
| |
| 文本-条件筛选 |
| |
| 文本-条件筛选 |
| |
| 文本-条件筛选 |
| |
| 条件筛选 | 闭区间 |
|
| 指标数值 |
| |
| 指标数值 |
| |
| 文本-条件筛选 | 等于 |
|
| 文本-条件筛选 | 不等于 |
|
| 文本-条件筛选 | 大于 |
|
| 文本-条件筛选 | 大于等于 |
|
| 文本-条件筛选 | 小于 |
|
| 文本-条件筛选 | 小于等于 |
|
op | 适用范围 | 说明 | 示例 |
---|---|---|---|
| 日期-单个日期 | 值为日期格式的字符串 |
|
| 日期-固定日期 | 当 value1 和 value2 值均为日期格式的字符串时,则为固定日期; |
|
| 日期-高级日期 | 起始时间为指定时间,终止时间无限制 |
|
| 日期-高级日期 | 起始时间无限制,终止时间为指定时间 |
|
| 日期-特殊日期 |
| |
| 日期-特殊日期 |
|
对于部分日期类型的查询,我们还提供了最近、最近有数、高级时间等函数来描述这类较复杂的场景。
查询函数说明如下:
用于描述动态日期-最近*天(周/月/双月/季度/年)
latestDate(field, data, options?)
latestDate(field, 1)
latestDate(field, 2, {unit: "week", offset: 0, until: "periodEnd" })
-- field: 查询组件名称
-- data: 动态日期取值
-- options: 配置项,非必传参数,不传时以默认值为准,具体信息如下
说明 | 取值列表 | |
---|---|---|
unit | 单位(默认值"day") |
|
offset | 时间偏移单位(默认值-1) |
|
until | 截止到(默认"yesterday") |
|
用于描述动态日期-最近有数*天(周/月/双月/季度/年),仅支持分区字段
latestSyncDate(field, data, options?)
latestSyncDate(field, 1)
latestSyncDate(field, 2, {unit: "week"})
-- field: 查询组件名称
-- data: 动态日期取值
-- options: 配置项,非必传参数,不传时以默认值为准,具体信息如下:
unit 取值参考 latestDate 。
用于用于描述高级日期-动态日期,需要结合 between、>=
、<=
等操作符使用
advancedDate(data, options?)
field between '2022-11-15' and advancedDate(1, {unit: "day", offset: -1})
field >= advancedDate(1, {unit: "day", offset: -1})
-- data: 动态日期取值
-- options: 配置项,非必传参数,不传时以默认值为准,具体信息如下:
unit: 单位(默认值"day"), offset: 时间偏移单位(默认值-1)
unit 取值参考 latestDate。
offset 取值列表:-1(前一天)
、 1(后一天)
【注意】函数中的options
为 json,因此字符串需要用""
括起。
数组函数,用于描述数组中包含某些元素
arrayHas(field, data)
arrayHas(field, ('a', 'b'))
-- field: 查询组件名称
-- data: 数组值
数组函数,用于描述数组中不包含某些元素
notArrayHas(field, data)
notArrayHas(field, ('a', 'b'))
-- field: 查询组件名称
-- data: 数组值
如需要清空某查询组件,可以通过 clear 函数进行清空,语法如下:clear(field)