围绕指标建立组织级别的一致性,并满怀信心地将指标定义发布到组织的其余部分
Transform 是数据堆栈中的集中度量存储,使您能够使用我们的度量框架MetricFlow在一个地方定义所有重要度量,使用度量目录探索和协作处理这些度量,并通过查询其中的度量来执行进一步分析使用我们的Metrics API的您最喜欢的工具。
MetricFlow 提供了许多好处,包括提供集中的事实来源以及在简化复杂 SQL 的同时查询指标和维度的能力。最重要的是,随着组织的发展和壮大,您可以满怀信心地轻松将指标定义发布给公司的其他部门并进行规模化治理。
这篇博文简要概述了如何将框架设置为提供准确见解的基础。
配置语言
要使用 MetricFlow,第一步是通过我们的配置语言对仓库中的数据进行建模。让我们从假设的网上商店中的一个简单示例开始。可能位于数据仓库中的表是一个订单表,其中包含有关已下订单的信息。
给定的表可以使用以下 YAML 配置在 MetricFlow 中表示为数据源:
配置中有很多字段,为了保持这篇文章的简短,我们将重点介绍要点。
第一个要注意的是 sql_table 字段。这指定了此配置适用的 SQL 表的名称。对于更复杂的事情,也可以使用 SQL 查询(如 sql_query)。
您还可以注意到,表中的各个列已分为三种主要类型:标识符、度量和维度。
- name 字段是指 SQL 表中列的名称。
- 标识符通常是在规范化表之间的连接中使用的键。
- 度量是您要度量和聚合的事物的定量数值。所有度量都包含一个 agg 字段,可用于指定应如何聚合这些字段。
- 维度是可用于对度量进行分类的定性值。
- 对于所有这些元素,可以指定一个 SQL 表达式 (expr),告诉 MetricFlow 框架如何从 SQL 表或 SQL 查询中提取相关值。
使用数据源中定义的度量,我们可以定义一个简单的度量。在此示例中,度量与度量几乎相同,因此我们创建的度量类型称为度量代理。更复杂的指标,如比率和表达指标也是可能的。对于这种情况,您可以看到我们正在使用 order_total 度量来创建income_usd 度量。
这些文件可以存储在源代码控制(例如 git)中,允许对更改进行审查和审计。
API 的力量
创建上述定义后,您可以通过 API 回答如下问题:
- 去年收入
- 收入同比增长
- 去年无优惠券订单收入
- 优惠券订单收入同比增长
如果添加了另一个描述用户表的数据源,您可以快速回答诸如
- 用户所在国家/地区的收入
- 按用户年龄划分的收入
- 来自美国的收入同比增长
- 和更多…
您无需编写 SQL 即可完成所有这些工作!MetricFlow 将生成 SQL 来实现连接并为您生成去规范化的数据集。虽然这些都是简单的示例,但当涉及大量指标、维度和连接时,查询可能会变得复杂。
上面的配置可以作为在数据生态系统中如何计算指标的单一定义。使用该定义,通过 API 返回的数据也可以成为度量值的唯一真实来源。
