You need to enable JavaScript to run this app.
文档中心
智能数据洞察(私有化)

智能数据洞察(私有化)

复制全文
下载 pdf
嵌入式分析
覆盖查询参数
复制全文
下载 pdf
覆盖查询参数

DataWind 支持通过 URL 参数覆盖嵌入仪表盘或图表的查询条件,实现自定义数据筛选效果。本文为您详细介绍 query 参数的语法规则和使用方法,帮助您灵活控制数据展示内容。

功能概述

当你需要根据实际场景修改嵌入仪表盘或者嵌入图表的查询条件时,你可以通过在 URL 中传入查询配置以覆盖原有查询条件。

  • 嵌入仪表盘时,你可以覆盖仪表盘的公共筛选器、查询容器中公共筛选器。请将对应的筛选字段添加为仪表盘的公共筛选器,使用筛选器名称进行匹配覆盖。
  • 嵌入单个图表时,你可以覆盖图表筛选项。请在可视化查询模块为图表添加对应字段到筛选中,使用字段名称进行匹配覆盖。
  • 如果希望在嵌入仪表盘时覆盖指定图表的筛选项,请将该筛选项添加为仪表盘的公共筛选器。

使用方式

在 iframe 中使用

在 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 中使用

在 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 个公共筛选器 CategoryShipModeRegionOrderDate

https://console.volcengine.com/bi/datawind-open/#/dashboard/******?appId=*******

你或许已经注意到 ShipModeOrderDate 与图表数据集字段并不一致,真实的数据集字段为 Ship ModeOrder Date。进行覆盖筛选器配置时,需要使用公共筛选器名称进行覆盖,而不是数据集字段。特别地,公共筛选器中不可以存在空格,否则在进行覆盖时无法识别。

示例一

&query=Category = 'Furniture' and Region in ('Central','South')

该配置表示查询 CategoryFurniture,且 RegionCentralSouth 的数据。

示例二

&query=Category != 'Furniture' and ShipMode = 'First Class' and ProductName like '%Desktop%'

该配置表示查询 Category 不为 Furniture,且 ShipModeFirst Class,且 ProductName 包含 Desktop 的数据。

示例三

&query=OrderDate between '20210101' and '20210301' and Profit >= 100

该配置表示查询 OrderDate2021-01-012021-03-01之间,且 Profit 大于 100的数据。

配置规则

完整的查询配置以&query=开头,由单个或多个查询语句组成。

单个查询语句语法

field op value scope?
每个查询语句的基本语法由fieldopvalue以及可选的scope构成:

field (查询组件名称)

嵌入仪表盘时为公共筛选器名称或查询容器中公共筛选器名称,嵌入图表时为图表上添加的筛选字段名称。
对应下图中,test则为该查询组件的名称:Image

注意

  • field名称为纯数字时,如123,需要用方括号将其括起,如:[123]
  • field名称中存在特殊字符时(除去中英文/数字/下划线之外的其他字符,如$test filter包含美元符和空格符),需要用方括号将其括起,如:[$test filter]
  • field名称中存在特殊字符需要用方括号将其括起,并且field名称本身也包含[]方符号时,需要使用\识别,如名称为test [demo] filter包含方括号和空格符,在语句中则可以这样表示:[test \[demo\] filter]

op (查询操作符)

可以根据实际场景使用inlike等操作符,具体操作符清单见后文中的基本查询操作符

value (查询值)

可以为数字或字符串。
如果查询值为字符串,需要使用单引号'*'包裹。如'Shanghai'
多个值时需要用小括号括起,如('Jiangsu', 'Zhejiang')
示例如下(当前查询组件名为 test):
&query=test in ('北京','上海')

scope (可选项,指定查询范围)

当需要指定查询范围时,可以通过 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

适用范围

说明

示例

in

文本-精确筛选
指标数值-精确筛选

多个值时用括号括起,逗号分隔如:('a', 'b')
注意:逗号必须是英文格式逗号

field in 'a'
field in ('a','b')

not in

同上

同上

field not in ('a','b')

like

文本-条件筛选

可以使用通配符 %
keyword% 表示以 keyword 开头
%keyword 表示以 keyword 结尾
%keyword% 表示包含 keyword
多个值时用括号括起,逗号分隔如:('%a%', '%b%')

field like '%abc%'
field like ('%a%','%b%')

not like

文本-条件筛选

同上

field not like '%abc%'

contains

文本-条件筛选

模糊匹配含有该值的数据项,效果相当于like: %abc%
多个值时用括号括起,逗号分隔如:('a', 'b')

field contains 'abc'
field contains with ('a','b')

not contains

文本-条件筛选

同上

field not contains 'abc'

starts with

文本-条件筛选

模糊匹配开头为该值的数据项,效果相当于like: abc%
多个值时用括号括起,逗号分隔如:('a', 'b')

field starts with 'abc'
field starts with ('a','b')

ends with

文本-条件筛选

模糊匹配结尾为该值的数据项,效果相当于like: %abc
多个值时用括号括起,逗号分隔如:('a', 'b')

field ends with 'abc'
field ends with ('a','b')

is empty

文本-条件筛选

field is empty

is not empty

文本-条件筛选

field is not empty

is null

文本-条件筛选

field is null

is not null

文本-条件筛选

field is not null

between value1 and value2

条件筛选
维度数值-条件筛选
指标数值

闭区间

field between 'a' and 'z'
field between 1 and 100

is NaN

指标数值

field is NaN

is not NaN

指标数值

field is not NaN

=

文本-条件筛选
维度数值-条件筛选
指标数值

等于

field = 100

!=/<>

文本-条件筛选
维度数值-条件筛选
指标数值

不等于

field != 100
field <> 100

>

文本-条件筛选
维度数值-条件筛选
指标数值

大于

field > 100

>=

文本-条件筛选
维度数值-条件筛选
指标数值

大于等于

field >= 100

<

文本-条件筛选
维度数值-条件筛选
指标数值

小于

field <= 100

<=

文本-条件筛选
维度数值-条件筛选
指标数值

小于等于

field <= 100

日期/日期时间查询操作符

op

适用范围

说明

示例

=

日期-单个日期

值为日期格式的字符串
支持'YYYY-MM-DD'(年-月-日)或'YYYY-MM'(年-月)

field = '2022-10-01'
field = '2022-06'

between value1 and value2

日期-固定日期
日期-高级日期

当 value1 和 value2 值均为日期格式的字符串时,则为固定日期;
同时,也支持对 value1 或 value2 任意一值由advancedDate函数描述的高级日期,具体见函数说明部分

field between '2022-10-01' and '2022-11-30'
field between '2022-10-01' and advancedDate(1, {unit: "day", offset: -1})

>=

日期-高级日期

起始时间为指定时间,终止时间无限制
指定时间可以是日期格式的字符串,也可以是由advancedDate函数描述的高级日期

field >= '2022-10-01'
field >= advancedDate(1, {unit: "day", offset: -1})

<=

日期-高级日期

起始时间无限制,终止时间为指定时间
指定时间可以是日期格式的字符串,也可以是由advancedDate函数描述的高级日期

field <= '2022-10-02'

is empty

日期-特殊日期

field is empty

is not empty

日期-特殊日期

field is not empty

查询函数

日期/日期时间查询函数

对于部分日期类型的查询,我们还提供了最近、最近有数、高级时间等函数来描述这类较复杂的场景。
查询函数说明如下:

latestDate

用于描述动态日期-最近*天(周/月/双月/季度/年)。

  • 语法

latestDate(field, data, options?)

  • 示例

latestDate(field, 1)
latestDate(field, 2, {unit: "week", offset: 0, until: "periodEnd" })

  • 参数说明

-- field: 查询组件名称
-- data: 动态日期取值
-- options: 配置项,非必传参数,不传时以默认值为准,具体信息如下

说明

取值列表

unit

单位(默认值"day")

"minute"(分钟)"hour"(小时)"day"(天)"week"(周)"month"(月)"year"(年)"bimonthly"(双月)"quarter"(季)

offset

时间偏移单位(默认值-1)

-1(不包含当前时间单位周期)0(包含当前时间单位周期)(例如:unit 取值为为week,则 offset 为-1 意为不包含本周,offset 为 0 意为包含本周)

until

截止到(默认"yesterday")

"now"(此时此刻)"yesterday"(昨天)"today"(今天)"periodEnd"(根据当前时间单位截止到该单位周期末)(例如:unit 取值为为week,则 until 取periodEnd意为截止到本周末,注意:until 仅当 offset 取值为 0 时赋值才有意义)

latestSyncDate

用于描述动态日期-最近有数*天(周/月/双月/季度/年),仅支持分区字段。

  • 语法

latestSyncDate(field, data, options?)

  • 示例

latestSyncDate(field, 1)
latestSyncDate(field, 2, {unit: "week"})

  • 参数说明

-- field: 查询组件名称
-- data: 动态日期取值
-- options: 配置项,非必传参数,不传时以默认值为准,具体信息如下:
unit 取值参考 latestDate

advancedDate

用于用于描述高级日期-动态日期,需要结合 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)

注意

函数中的options为 json,因此字符串需要用""括起。

unit 取值参考 latestDate
offset 取值列表:-1(前一天)1(后一天)

Array 查询函数

arrayHas

数组函数,用于描述数组中包含某些元素。

  • 语法

arrayHas(field, data)

  • 示例

arrayHas(field, ('a', 'b'))

  • 参数说明

-- field: 查询组件名称
-- data: 数组值

notArrayHas

数组函数,用于描述数组中不包含某些元素。

  • 语法

notArrayHas(field, data)

  • 示例

notArrayHas(field, ('a', 'b'))

  • 参数说明

-- field: 查询组件名称
-- data: 数组值

清空查询函数

clear

如需要清空某查询组件,可以通过 clear 函数进行清空,语法如下:
clear(field)

最近更新时间:2025.09.19 16:20:24
这个页面对您有帮助吗?
有用
有用
无用
无用