数据与分析

BI 工作区

仪表板建立在与智能体相同的数据目录、已准备表和度量之上——因此图表和解读它的智能体不可能给出互相矛盾的答案。

打开 数据 → BI 工作区。仪表板存放在工作区与文件夹中;每个仪表板都是一格格可调整大小的组件,由你拖放摆位。

搭建仪表板

  1. 1

    创建仪表板

    给它指定一个所属文件夹——文件夹就是你区隔开发与生产内容的方式。
  2. 2

    添加可视化

    右侧的构建面板接收你的数据源(表、已准备表,或受治理的度量)、要作图的字段,以及图表类型。
  3. 3

    或者直接描述

    AI 页签能根据一句话生成整个仪表板或单个可视化。在相信图表之前,先读一遍它生成的查询。
  4. 4

    排布并发布

    拖动、调整大小,然后发布,让你共享过的人能看到它。

你也可以在 SQL 工作台里直接把图表发过来,用 添加到仪表板 ,只要某个查询返回了值得留存的结果。

组件的数据从哪里来

每个图表组件都保存它执行过的 SQL 以及返回数据的一份 快照 。查看者看到哪一份取决于组件的数据模式,而这个差别决定了新鲜度、成本,以及——有一种情况值得仔细读——数字是否正确。

模式查看时会发生什么适用场景
导入 (默认)渲染已保存的快照。不执行查询、不碰你的数仓,加载是瞬时的。几乎总是用它。配合刷新计划一起使用。
直接查询每次查看都对数仓重跑该组件的 SQL,拿到当下的真实值。必须实时的数字,且该仪表板打开的人不多。

已发布和已嵌入的仪表板始终渲染快照

直接查询模式只作用于编辑器和已登录的查看者。 公开分享或嵌入 无论组件是什么模式,一律渲染已保存的快照——否则每个匿名访客都会变成一次对你数仓的实时查询。所以在已发布的仪表板上,刷新计划 就是 数据的新鲜度,每个组件也会显示它上次计算的时间。

行数上限,以及它会悄悄弄错的合计

一份快照最多保存 500 行。对于十二个月或二十个地区的图表没问题,但对于基于原始明细行搭起来的图表就是个问题——因为把重复类别加起来的是浏览器。

被截断的快照只加了一部分,却把它当成合计

图表 sum(amount) 在一张 5 万行的表上按地区汇总,快照只留下前 500 行。渲染器接着把它 看得到的那些地区加起来,画出一张看着完全正常、但结果是错的柱形图——不报错,只是数字偏小。处于这种状态的组件会带上一个 部分 徽标,修法见下一节。

在 SQL 中聚合

打开 在 SQL 中聚合 会把图表编译成一条 GROUP BY ,让数据库来做加法。每个类别只回一行,而不是成千上万条原始明细,于是合计是完整的,行数上限也就不再要紧:

SQL
-- what the widget stores
SELECT region, amount FROM sales

-- what actually runs with "Aggregate in SQL" on
SELECT region, SUM(amount) AS amount
FROM (SELECT region, amount FROM sales) AS _dq
GROUP BY region

支持的聚合函数有 sum (默认)、 avg, min, max, count 和 count_distinct。对已经做过聚合的 SQL 再包一层无妨——对键已唯一的行再分组,结果原样返回。

为什么不干脆全部打开

新建组件默认开启。已有组件刻意 不会,因为打开它可能改变某人已经在上报的数字——旧数字本来就是部分求和,而悄悄纠正它本身就是另一种不诚实。它们改为显示 部分 徽标,让所有者看到问题,自己来改。

增量刷新

对于只有近期数据会变的大表,组件可以只按你指定的日期列重查最近一段时间窗口,并保留上一份快照中更早的行。这样一次刷新读的是一周而不是三年。在构建面板里绑定它:选好日期列,然后选 全量重新查询 或一个 7, 30, 90 或 365 天的窗口。

它假定历史数据不会变

重算的是整个时间桶,而不是合并部分聚合结果——这正是保证 avg 和 count_distinct 正确的原因,因为这类函数无法由部分结果合并得出。你接受的取舍还是那个老问题: 窗口之外某一行的迟到修改,要等到全量刷新才会体现出来。 如果你的数据源会回溯修改历史,要么把窗口拉宽到超过你的修正滞后期,要么就别开增量刷新。

图表类型——全部 26 种及其必填字段

每种图表都声明了自己需要哪些字段。构建面板只会给出你所选列能满足的类型,因此缺必填字段的图表根本建不出来。

对比与趋势

类型必填字段可选适用于
barxField、yFieldseriesField、stacked纵向柱形;用于排名与对比
hbarxField、yField—横向条形;适合类别名很长的情况
linexField、yFieldseriesField随时间的变化
areaxField、yFieldseriesField趋势,并强调体量
scolumnxField、yField、seriesField—堆叠纵向柱形
shbarxField、yField、seriesField—堆叠横向条形
comboxField、barField、lineField—两个量级不同的度量(体量 + 比率)
waterfallxField、yField—一个合计是如何由各部分累加起来的

构成占比

类型必填字段适用于
pienameField、valueField分片要少——超过 6 个左右就读不清了
treemapnameField、valueField很多组成部分,按大小嵌套
funnelnameField、valueField各环节之间的流失
nightingalenameField、valueField极坐标玫瑰图——周期性类别
sankeyxField(起点)、yField(终点)、valueField节点之间的流量

单一数值

类型必填字段可选适用于
kpivalueFieldlabel、targetField一个核心数字,可选择对比目标值
gaugevalueFieldlabel、targetField、max朝上限推进的进度

分布与相关性

类型必填字段可选适用于
scatterxField、yFieldsizeField两个度量之间的相关性
heatmapxField、yField、valueField—两个维度上的密度分布
boxplotxField、yField—各类别的离散程度与异常值
radarxField、yFieldseriesField多个度量在不同实体间的对比

表格与地理

类型必填字段可选适用于
table—columnFormats逐行阅读的精确数字
matrixrowField、colField、valueFieldrowSubField、condFormat透视表。rowSubField 让行成为可展开的分组并带小计;condFormat 给单元格上色。
maplocationField、valueField—按地区着色的分级统计图
bubblemaplocationField、valueField—点位上的量级

特殊图表

类型必填字段可选适用于
barracexField、yField、timeField—随时间变化的动态排名
wordcloudtextFieldvalueField词频;有 valueField 时按它加权
ontologyspec—由 AI 构建的知识图谱:跨数据集、数仓和知识库图谱的主语—谓语—宾语三元组;节点与连边均可点击

为什么这样设计

从问题出发选图表,而不是反过来。“哪个地区最大”是柱形图;“它在增长吗”是折线图;“占多少份额”是分片不多的饼图。如果你没法用一句话说出某个可视化回答的是什么问题,那它就是装饰——而装饰正是让仪表板不再被人看的原因。

数字格式

选项取值说明
formatcurrency | percent普通数字则省略不填
currencyISO 4217 代码format 为 currency 时默认 USD
decimals0 – 4固定小数位数。留空则使用自动 / 紧凑格式(如 1.24M)。
columnFormats按列设置仅表格组件可用——为每一列单独设定格式(number | currency | percent,各自的币种与小数位)。

分析选项

每种图表配置都可用;各渲染器只应用自己支持的项。大部分分析价值都在这里,而这恰恰是最容易被忽略的部分。

选项取值应用范围作用
drillFieldsstring[]bar、hbar、pie下钻层级;第 0 层是已配置的字段。读者每点一次下降一层。
dateGrainauto | day | week | month | quarter | yearline、area默认的时间分桶;查看者可以切换。
compareprior_period | prior_yearline、area(单序列)叠加上一周期,或去年同期。
runningbooleanline、area(单序列)累计求和。
trendbooleanline(单序列)线性趋势线。
forecast分桶数量line(单序列)向前预测,并给出 ±1.96σ 的置信区间带。

预测就是一条直线外推

±1.96σ 区间带是线性外推外围的 95% 置信带,不是对你业务的建模。它对不确定性是诚实的,但对季节性、新品上线和价格变动一无所知。用它来引导讨论,永远不要用它来承诺某个数字。

条件格式(矩阵图)

模式配置项
scale在数值范围上做连续色阶,可选一个基准色。
rules一个有序列表—— 先匹配者生效。每条规则包含一个运算符(gt, gte, lt, lte, eq, neq, between)、一个值(between 时另需 value2 ,含端点),以及一个颜色。

参考线

在笛卡尔坐标图上画一条水平参考线,有两种模式: avg 画出序列平均值,或者 value 画出你给定的固定值。两种模式都可以加标签——请加上,因为没有标签的参考线只会让读者去猜它是什么意思。

让它可交互

全局筛选
仪表板级别的控件——取值选择器、数值区间,以及相对日期预设(最近 7 天、本季度)。把默认值存下来,仪表板一打开就落在正确的视角上。
交叉筛选
点一根柱子,其余所有组件都跟着筛选。这是回答“那个尖峰是什么造成的”最快的办法,什么都不用另建。
下钻层级
定义年 → 季 → 月,或地区 → 国家 → 城市,让读者一层层往下看。
穿透下钻
打开任意数据点背后的明细行——这是“这个数字是真的吗”的答案,也是发现联接出错最快的办法。
询问 AI(嵌入场景)
在嵌入的仪表板上,读者可以用自然语言就其数据继续追问,包括针对刚点击的内容做下钻。在应用内部这不是一个单独的控件——构建面板里的 AI 分析师回答同样的问题,而且背后调用的模型能力更强。

AI 洞察

每个可视化都能生成一段文字解读——值得注意的变动、异常值,以及一个人看了会说出口的那句话。还有一个仪表板级别的摘要,概括整个页面。

小心

洞察是基于图表里实际的数据生成的,但它终究是模型输出:可以作为初步判断,不能替代你自己去看。把它当成同事的第一印象。

告警与定时报告

  • 告警 ——盯住某个度量与阈值的关系,越过时通知你。通过应用内消息和邮件送达。
  • 定时刷新 ——按固定节奏重建导入的数据,让仪表板不至于过期。
  • 增量刷新 ——只重查最近一段窗口,而不是整张表。详见 组件的数据从哪里来,那里也说明了它让你接受的前提假设。
  • 定时报告 ——按计划把仪表板摘要发到邮箱。

在 SQL 中聚合——任意表规模下都给出完整合计

图表组件保存的是一份有上限的快照(500 行)。在大表上,在浏览器里对被截断的快照求和得到的是 部分 合计——数字看起来很确定,实际上悄悄是错的。因此新建组件默认在数据库里聚合(一条由图表编译出的、经过校验的 GROUP BY ),于是数仓返回的是完整的分组结果,而不是原始明细。已有组件不会自动切换——打开它可能改变它显示的数字,这该由所有者决定——它们会在快照触到上限时显示一个 部分 徽标,组件菜单里有“在 SQL 中聚合”的开关。

在自托管部署上,这些功能需要调度器在运行——参见 安装与部署.

共享、导出与嵌入

方法谁能看到说明
分组共享指定用户或 IAM 用户组只读;遵循底层数据的授权
公开链接任何拿到该 URL 的人无需登录——把这个 URL 当作密钥来对待
嵌入密钥你允许的任意站点受域名限制;参见“网页嵌入”
导出你把文件发给谁,谁就能看页面导出 PDF,数据导出 Excel / CSV

发布前请确认

公开链接会去掉所有访问校验。共享和嵌入的仪表板上的组件经过净化,底层查询不会暴露,但页面上的数据对任何拿到 URL 的人都是可见的。发布这件事要慎重。

共享上的行筛选与隐藏列

仪表板授权(管理 → IAM → 访问控制)可以附带 行筛选 (被授权者只能看到某列取值在允许范围内的行)以及 隐藏列 (整列移除)。两者都在 服务端强制执行:授权带任何限制的被授权者,从不直接读取已保存的组件数据——服务端会先施加筛选、剔除被遮蔽的列,任何内容才会离开服务端,快照和实时直查一视同仁。语义与 IAM 其余部分一致:只要有一份无限制授权(直接授予或通过任意用户组),整个仪表板就可见;而某一列只有在 每一次 适用的授权都隐藏它时才会被隐藏。

版本管理与晋级发布

  • 版本历史 ——仪表板会保留历史版本,可供比对和恢复。
  • 开发 → 生产的晋级 ——在开发文件夹里搭建,评审通过后把该版本晋级到生产,而不是直接改别人正在看的东西。
  • Git 导出 ——把仪表板和模型定义导出为文件,在你自己的仓库里做评审。

如果仪表板很慢

  • 把负担重的组件从 直接查询改为导入快照 并配上刷新计划。通常这一条就解决了。
  • 打开 在 SQL 中聚合。它每个类别只回一行而不是成千上万行,所以能同时让仪表板更快、让合计更准。
  • 在做数据增补的步骤上,请使用 增量刷新 ,如果慢的是刷新本身而不是查看。
  • 先在 预处理表 里聚合,而不是拿几百万条原始明细去作图。
  • 减少单页上的组件数量——每一个都是一次查询。
  • 设一个默认日期筛选,别让仪表板一打开就加载全部历史。