教程:使用联接和数据建模生成指标视图

在本教程中,你将在 TPC-H 数据集上生成销售分析指标视图。 最后,你将获得一个指标视图,该视图包括:

  • 使用雪花架构跨多个表联接订单和客户。
  • 定义时间、地理和顺序属性的字段(也称为维度)。
  • 计算简单和复杂的度量值,包括比率、筛选的聚合和窗口度量值。
  • 使用可组合性从更简单的度量值生成复杂指标。
  • 定义在查询时应用折扣率的参数。
  • 包含供仪表板和 AI 工具使用的代理元数据。

如果你不熟悉指标视图,请从 “创建指标”视图 开始,了解基础知识。 本教程利用实际复杂性扩展了该基础。

Requirements

若要完成本教程,必须满足以下先决条件:

  • 已启用 Unity Catalog 的工作区
  • 运行 Databricks Runtime 17.3 或更高版本的 SQL 仓库或计算资源。

有关创建指标视图所需的权限的完整列表,请参阅 先决条件。

注释

Databricks Runtime 16.4 及更高版本支持创建指标视图。 本教程使用需要 Databricks Runtime 17.3 或更高版本的功能,并且某些步骤需要更高版本的运行时。 有关每个功能的最小运行时,请参阅 指标视图功能可用性。

数据模型

TPC-H 数据集为批发供应链建模。 本教程使用在雪花架构中联接的三个表:

  • orders 联接到 customer on o_custkey = c_custkey
  • customer 联接到 nation on c_nationkey = n_nationkey
表 角色 键列
orders 事实数据表(订单事务) o_orderkey、o_custkey、o_totalprice、o_orderdate、o_orderstatus
customer 维度表(客户详细信息) c_custkey、c_name、c_mktsegment、c_nationkey
nation 维度表(国家或地区参考) n_nationkey、n_name、n_regionkey

步骤 1:创建指标视图并打开编辑器

可以在目录资源管理器 UI 中生成此指标视图,或直接编写完整的 YAML 定义。 这三种方法都解析为为指标视图建模的单个 YAML 定义。 在后续步骤中,选择 目录资源管理器 UI 或 YAML 编辑器 选项卡以遵循首选方法。 如果使用 YAML 编辑器,则每个步骤中的示例代码是与在此步骤中生成的内容相对应的 YAML 定义的部分。

注释

本教程中的 YAML 示例使用 fields 关键字。 在低代码编辑器中生成指标视图时,生成的 YAML 将改用等效 dimensions 关键字。 请参阅 字段。

如果不熟悉用于创建指标视图的 UI,请参阅 “创建指标”视图。

若要创建指标视图,请在目录资源管理器中:

  1. 搜索 samples.tpch.orders。
  2. 单击表名。
  3. 单击 创建>指标视图,并为该视图命名。

有关详细创建步骤,请参阅 “创建指标”视图。 当编辑器打开时,使用 UI 选项卡以交互方式生成,或单击 <> 该按钮直接编辑 YAML 定义。

步骤 2:设置指标视图

为指标视图设置版本和描述。 version 用于确定 YAML 规范版本,comment 用于说明指标视图的用途,该用途说明会显示在目录资源管理器中。 Azure Databricks为你管理版本。

目录浏览器 UI

该版本已为你定义好。 若要在保存指标视图后添加或编辑说明:

  1. 在目录资源管理器中,搜索指标视图并单击其名称。
  2. 单击 “说明”,然后输入指标视图的说明。 可以使用 YAML 编辑器 选项卡中显示的示例说明。

此文本对应于 comment YAML 定义中的字段。 有关编辑指标视图的更多方法,请参阅 “编辑指标”视图。

YAML 编辑器

version: 1.1

comment: |-
  Sales analytics metric view for order performance analysis.
  Joins orders with customers and geography.
  Owner: Analytics Team
  Last updated: 2025-01-15

步骤 3:定义源和联接

定义主源表并联接相关表:

  • source 将事实数据表(orders)设置为粒度。
  • joins 使用多对一关系引入客户数据。
  • 嵌套的 nation 连接演示了雪花型架构模式,通过 customer 连接到地理数据,其中 nation 是 customer 的子维度。

目录浏览器 UI

此示例添加了两个联接,这两个联接均为 多对一,以对雪花架构进行建模。

添加customer联接:

  1. 在编辑器中,单击右上角的 “联接 ”以打开 “添加联接 ”对话框。
  2. 搜索 samples.tpch.customer,单击表名,然后单击“ 添加”。
  3. 将联接条件设置为 o_custkey = c_custkey。
  4. 在“联接基数”下,选择“多对一”。 有关选择基数的指导,请参阅 联接基数。

然后添加嵌套 nation 联接。 重复执行 customer 联接中的步骤,将 samples.tpch.nation 联接到 c_nationkey = n_nationkey。 将联接嵌套在 customer 下,会将国家建模为客户的一个子维度。

有关完整联接对话框步骤,请参阅 步骤 2:添加联接。

YAML 编辑器

source: SELECT * FROM samples.tpch.orders

joins:
  - name: customer
    source: samples.tpch.customer
    'on': o_custkey = c_custkey
    joins:
      - name: nation
        source: samples.tpch.nation
        'on': c_nationkey = n_nationkey

步骤 4:定义筛选器

filter 会限制源数据,并且它适用于指标视图上的所有查询。 本教程将指标视图限制为最近数据。

目录浏览器 UI

定义筛选器:

  1. 在编辑器中,单击“筛选器”图标。右上角的筛选器。
  2. 使用下拉菜单将列设置为o_orderdate,将运算符设置为>=,并将值设置为1995-01-01。

有关筛选器的详细信息,请参阅 步骤 3:定义筛选器。

YAML 编辑器

filter: o_orderdate >= '1995-01-01'

步骤 5:定义字段

字段是用户用于分组和筛选的属性。 字段可以是分类列(例如区域或状态),也可以是用户在查询时聚合的未聚合数值列(例如年龄或数量)。

代理元数据

本教程中的每个字段和度量值都包含 代理元数据 属性,这些属性可改进指标视图使用仪表板和 AI 工具的方式:

  • display_name: 可视化效果中显示的可读标签,而不是技术列名称。
  • synonyms: 帮助 Ai 工具(如 Genie)通过自然语言查询发现字段和度量值的备用名称。
  • format: 值在下游图面(例如仪表板、笔记本和 SQL 查询结果)中的显示方式,例如货币、数字或百分比。

这些属性是可选的,但建议使用。 以下步骤中的字段和度量值定义会以内联方式直接给出。

字段定义

本教程添加:

  • 时间字段:order_date、order_month和order_year,提供多个粒度,以支持不同的分析需求。
  • 转换后的字段:order_status 和 order_priority,其使用 CASE 和 SPLIT 将源代码值转换为可读标签。
  • 已联接字段:customer_name、market_segment和customer_nation,它们使用联接名称引用已联接的表。 嵌套联接列使用链式点表示法(如 customer.nation.n_name)来遍历雪花型架构。

目录浏览器 UI

编辑器会自动将所有源列添加到 “字段 ”选项卡。 通过编辑、重命名、删除和添加字段,使指标视图恰好定义以下内容。 对于每个字段,请单击其名称以编辑它或单击 “添加”或“加号”图标以创建 它,然后在 生成器 或 自定义 模式下设置表达式。 设置每个字段的显示名称和同义词,如下所示。

  1. order_date:在 Builder 模式下,选择 o_orderdate 列。 将显示名称设置为 Order Date.

  2. order_month:在 自定义 模式下,输入 DATE_TRUNC('MONTH', order_date)。 将显示名称设置为 Order Month.

  3. order_year:在 自定义 模式下,输入 YEAR(order_date)。 将显示名称设置为 Order Year.

  4. order_status:在 自定义 模式下,输入以下表达式。 将显示名称和 Order Status 同义词设置为 status, fulfillment status。

    CASE o_orderstatus
      WHEN 'O' THEN 'Open'
      WHEN 'P' THEN 'Processing'
      WHEN 'F' THEN 'Fulfilled'
    END
    
  5. order_priority:在 自定义 模式下,输入 SPLIT(o_orderpriority, '-')[0]。 将显示名称设置为 Priority.

  6. customer_name:在生成器模式下,从联接c_name表中选择customer列。 将显示名称设置为 Customer Name.

  7. market_segment:在生成器模式下,从联接c_mktsegment表中选择customer列。 将显示名称和 Market Segment 同义词设置为 segment, industry。

  8. customer_nation:在 自定义 模式下,输入 customer.nation.n_name 以引用嵌套的 nation 联接。 将显示名称和 Country 同义词设置为 nation, country。

有关完整字段步骤,请参阅 步骤 4:添加字段。

YAML 编辑器

fields:
  - name: order_date
    expr: o_orderdate
    display_name: Order Date

  - name: order_month
    expr: "DATE_TRUNC('MONTH', order_date)"
    display_name: Order Month

  - name: order_year
    expr: YEAR(order_date)
    display_name: Order Year

  - name: order_status
    expr: |-
      CASE o_orderstatus
        WHEN 'O' THEN 'Open'
        WHEN 'P' THEN 'Processing'
        WHEN 'F' THEN 'Fulfilled'
      END
    display_name: Order Status
    synonyms:
      - status
      - fulfillment status

  - name: order_priority
    expr: "SPLIT(o_orderpriority, '-')[0]"
    display_name: Priority

  - name: customer_name
    expr: customer.c_name
    display_name: Customer Name

  - name: market_segment
    expr: customer.c_mktsegment
    display_name: Market Segment
    synonyms:
      - segment
      - industry

  - name: customer_nation
    expr: customer.nation.n_name
    display_name: Country
    synonyms:
      - nation
      - country

步骤 6:定义参数

参数允许在查询值时将值传递到指标视图中,因此单个定义可以提供许多查询变体。 本教程中添加了一个 discount 参数,后续度量值会使用该参数来计算折后收入。 该参数的默认值为 0,因此未传入值的查询会返回未折扣收入。 有关参数的详细信息,请参阅 将参数与指标视图配合使用。

目录浏览器 UI

在编辑器标题中,单击“ 添加参数”。 输入 discount 为名称,然后输入默认值 0 并选择 double 数据类型。

YAML 编辑器

parameters:
  - name: discount
    data_type: double
    default: 0

步骤 7:定义度量值

度量值是用户要分析的计算。 首先定义原子度量值,然后使用可组合性生成复杂指标,以使用函数引用早期定义的度量 MEASURE() 值。 按照display_name中所述,为每个度量设置format、synonyms和。 本教程添加:

  • 原子度量:order_count、total_revenue和unique_customers,这些构成基础组成部分的简单聚合方式。
  • 组合度量值:avg_order_value 和 revenue_per_customer,它引用早期定义的度量值 MEASURE() ,而不是复制聚合逻辑。 如果 total_revenue 更改,这些度量值会自动使用更新的定义。 请参阅 “可组合性”。
  • 筛选度量:open_order_revenue 和 fulfilled_order_revenue,它们使用 FILTER (WHERE ...) 来创建无需单独字段的条件度量。
  • 参数化度量值:discounted_revenue,它引用 discount 参数以应用折扣率。 请参阅 将参数与指标视图配合使用。
  • 窗口度量:t7d_customers用于计算过去 7 天内独立客户的滚动计数。 有关更多窗口测量模式,请参阅 窗口测量。

目录浏览器 UI

编辑器会自动添加示例 COUNT(*) 度量值。 编辑或删除它并添加度量值,以便指标视图定义以下内容。 对于每个度量值,请单击“ 添加”或“加号”图标“添加”,然后在 Builder 或 Custom 模式下设置表达式。 按如下所示设置 显示名称、 格式和 同义词 。 对货币格式使用 2 个小数位数,对数字格式使用 0 个小数位数。

  1. order_count:在构建器模式下,选择对执行o_orderkey聚合。 将显示名称设置为 Order Count,格式设置为 数字。
  2. total_revenue:在构建器模式下,选择上的o_totalprice聚合。 将显示名称设置为 Total Revenue,格式设置为 Currency (USD),同义词设置为 revenue, sales。
  3. discounted_revenue:在 自定义 模式下,输入 SUM(o_totalprice * (1 - discount))。 将显示名称 Discounted Revenue设置为 “货币”(USD)格式。
  4. unique_customers:在生成器模式下,在上选择o_custkey聚合。 将显示名称设置为 Unique Customers,格式设置为 数字。
  5. avg_order_value:在 自定义 模式下,输入 MEASURE(total_revenue) / MEASURE(order_count)。 将显示名称设置为 Avg Order Value,格式设置为 Currency (USD),同义词设置为 AOV。
  6. revenue_per_customer:在 自定义 模式下,输入 MEASURE(total_revenue) / MEASURE(unique_customers)。 将显示名称 Revenue per Customer设置为 “货币”(USD)格式。
  7. open_order_revenue:在 自定义 模式下,输入 SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')。 将显示名称设置为 Open Order Revenue,格式设置为 Currency (USD),同义词设置为 backlog。
  8. fulfilled_order_revenue:在自定义模式下,输入SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F')。 将显示名称 Fulfilled Revenue设置为 “货币”(USD)格式。
  9. t7d_customers:在 自定义 模式下,输入 COUNT(DISTINCT o_custkey)。 然后单击“+ 窗口”,并配置一个按order_date排序、范围为trailing 7 day且采用last半累加聚合的窗口。 将显示名称设置为 7-Day Rolling Customers,格式设置为 数字。

有关完整度量步骤,请参阅 步骤 5:添加度量值。

YAML 编辑器

measures:
  - name: order_count
    expr: COUNT(DISTINCT o_orderkey)
    display_name: Order Count
    format:
      type: number
      decimal_places:
        type: exact
        places: 0
      abbreviation: compact

  - name: total_revenue
    expr: SUM(o_totalprice)
    display_name: Total Revenue
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
    synonyms:
      - revenue
      - sales

  - name: discounted_revenue
    expr: SUM(o_totalprice * (1 - discount))
    display_name: Discounted Revenue
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact

  - name: unique_customers
    expr: COUNT(DISTINCT o_custkey)
    display_name: Unique Customers
    format:
      type: number
      decimal_places:
        type: exact
        places: 0
      abbreviation: compact

  - name: avg_order_value
    expr: MEASURE(total_revenue) / MEASURE(order_count)
    display_name: Avg Order Value
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
    synonyms:
      - AOV

  - name: revenue_per_customer
    expr: MEASURE(total_revenue) / MEASURE(unique_customers)
    display_name: Revenue per Customer
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact

  - name: open_order_revenue
    expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')
    display_name: Open Order Revenue
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
    synonyms:
      - backlog

  - name: fulfilled_order_revenue
    expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F')
    display_name: Fulfilled Revenue
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact

  - name: t7d_customers
    expr: COUNT(DISTINCT o_custkey)
    window:
      - order: order_date
        semiadditive: last
        range: trailing 7 day
    display_name: 7-Day Rolling Customers
    format:
      type: number
      decimal_places:
        type: exact
        places: 0

查看完整定义

完成上述步骤后,指标视图具有以下完整定义:

查看完整的 YAML 定义
version: 1.1

parameters:
  - name: discount
    data_type: double
    default: 0

source: SELECT * FROM samples.tpch.orders

joins:
  - name: customer
    source: samples.tpch.customer
    'on': o_custkey = c_custkey
    joins:
      - name: nation
        source: samples.tpch.nation
        'on': c_nationkey = n_nationkey

filter: o_orderdate >= '1995-01-01'

comment: |-
  Sales analytics metric view for order performance analysis.
  Joins orders with customers and geography.
  Owner: Analytics Team
  Last updated: 2025-01-15

fields:
  - name: order_date
    expr: o_orderdate
    display_name: Order Date
  - name: order_month
    expr: "DATE_TRUNC('MONTH', order_date)"
    display_name: Order Month
  - name: order_year
    expr: YEAR(order_date)
    display_name: Order Year
  - name: order_status
    expr: |-
      CASE o_orderstatus
        WHEN 'O' THEN 'Open'
        WHEN 'P' THEN 'Processing'
        WHEN 'F' THEN 'Fulfilled'
      END
    display_name: Order Status
    synonyms:
      - status
      - fulfillment status
  - name: order_priority
    expr: "SPLIT(o_orderpriority, '-')[0]"
    display_name: Priority
  - name: customer_name
    expr: customer.c_name
    display_name: Customer Name
  - name: market_segment
    expr: customer.c_mktsegment
    display_name: Market Segment
    synonyms:
      - segment
      - industry
  - name: customer_nation
    expr: customer.nation.n_name
    display_name: Country
    synonyms:
      - nation
      - country

measures:
  - name: order_count
    expr: COUNT(DISTINCT o_orderkey)
    display_name: Order Count
    format:
      type: number
      decimal_places:
        type: exact
        places: 0
      abbreviation: compact
  - name: total_revenue
    expr: SUM(o_totalprice)
    display_name: Total Revenue
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
    synonyms:
      - revenue
      - sales
  - name: discounted_revenue
    expr: SUM(o_totalprice * (1 - discount))
    display_name: Discounted Revenue
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
  - name: unique_customers
    expr: COUNT(DISTINCT o_custkey)
    display_name: Unique Customers
    format:
      type: number
      decimal_places:
        type: exact
        places: 0
      abbreviation: compact
  - name: avg_order_value
    expr: MEASURE(total_revenue) / MEASURE(order_count)
    display_name: Avg Order Value
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
    synonyms:
      - AOV
  - name: revenue_per_customer
    expr: MEASURE(total_revenue) / MEASURE(unique_customers)
    display_name: Revenue per Customer
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
  - name: open_order_revenue
    expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')
    display_name: Open Order Revenue
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
    synonyms:
      - backlog
  - name: fulfilled_order_revenue
    expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F')
    display_name: Fulfilled Revenue
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
  - name: t7d_customers
    expr: COUNT(DISTINCT o_custkey)
    window:
      - order: order_date
        semiadditive: last
        range: trailing 7 day
    display_name: 7-Day Rolling Customers
    format:
      type: number
      decimal_places:
        type: exact
        places: 0
使用 SQL 创建指标视图

如果要在目录资源管理器外部生成此定义,请运行以下 SQL 来创建指标视图:

CREATE OR REPLACE VIEW catalog.schema.tpch_sales_analytics
WITH METRICS
LANGUAGE YAML
AS $$
version: 1.1

parameters:
  - name: discount
    data_type: double
    default: 0

source: SELECT * FROM samples.tpch.orders

joins:
  - name: customer
    source: samples.tpch.customer
    'on': o_custkey = c_custkey
    joins:
      - name: nation
        source: samples.tpch.nation
        'on': c_nationkey = n_nationkey

filter: o_orderdate >= '1995-01-01'

comment: |-
  Sales analytics metric view for order performance analysis.
  Joins orders with customers and geography.
  Owner: Analytics Team
  Last updated: 2025-01-15

fields:
  - name: order_date
    expr: o_orderdate
    display_name: Order Date
  - name: order_month
    expr: "DATE_TRUNC('MONTH', order_date)"
    display_name: Order Month
  - name: order_year
    expr: YEAR(order_date)
    display_name: Order Year
  - name: order_status
    expr: |-
      CASE o_orderstatus
        WHEN 'O' THEN 'Open'
        WHEN 'P' THEN 'Processing'
        WHEN 'F' THEN 'Fulfilled'
      END
    display_name: Order Status
    synonyms:
      - status
      - fulfillment status
  - name: order_priority
    expr: "SPLIT(o_orderpriority, '-')[0]"
    display_name: Priority
  - name: customer_name
    expr: customer.c_name
    display_name: Customer Name
  - name: market_segment
    expr: customer.c_mktsegment
    display_name: Market Segment
    synonyms:
      - segment
      - industry
  - name: customer_nation
    expr: customer.nation.n_name
    display_name: Country
    synonyms:
      - nation
      - country

measures:
  - name: order_count
    expr: COUNT(DISTINCT o_orderkey)
    display_name: Order Count
    format:
      type: number
      decimal_places:
        type: exact
        places: 0
      abbreviation: compact
  - name: total_revenue
    expr: SUM(o_totalprice)
    display_name: Total Revenue
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
    synonyms:
      - revenue
      - sales
  - name: discounted_revenue
    expr: SUM(o_totalprice * (1 - discount))
    display_name: Discounted Revenue
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
  - name: unique_customers
    expr: COUNT(DISTINCT o_custkey)
    display_name: Unique Customers
    format:
      type: number
      decimal_places:
        type: exact
        places: 0
      abbreviation: compact
  - name: avg_order_value
    expr: MEASURE(total_revenue) / MEASURE(order_count)
    display_name: Avg Order Value
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
    synonyms:
      - AOV
  - name: revenue_per_customer
    expr: MEASURE(total_revenue) / MEASURE(unique_customers)
    display_name: Revenue per Customer
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
  - name: open_order_revenue
    expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')
    display_name: Open Order Revenue
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
    synonyms:
      - backlog
  - name: fulfilled_order_revenue
    expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F')
    display_name: Fulfilled Revenue
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
  - name: t7d_customers
    expr: COUNT(DISTINCT o_custkey)
    window:
      - order: order_date
        semiadditive: last
        range: trailing 7 day
    display_name: 7-Day Rolling Customers
    format:
      type: number
      decimal_places:
        type: exact
        places: 0
$$;

有关创建指标视图的其他方法,请参阅 “创建指标”视图。

步骤 8:查询指标视图

使用业务友好语法查询指标视图。 该 MEASURE() 函数在所选字段的粒度处聚合度量值。

按维度聚合指标

此示例跨多个字段聚合度量值。 它按客户所在国家和市场细分返回总收入、订单数量和平均订单金额,并按收入从高到低排序:

SELECT
  customer_nation,
  market_segment,
  MEASURE(total_revenue) AS total_revenue,
  MEASURE(order_count) AS order_count,
  MEASURE(avg_order_value) AS avg_order_value
FROM catalog.schema.tpch_sales_analytics
GROUP BY customer_nation, market_segment
ORDER BY total_revenue DESC;

分析每月趋势

此示例将时间字段与度量值组合在一起,以跟踪趋势。 按月份和订单状态返回总收入和未结订单收入(积压订单):

SELECT
  order_month,
  order_status,
  MEASURE(total_revenue) AS total_revenue,
  MEASURE(open_order_revenue) AS open_order_revenue
FROM catalog.schema.tpch_sales_analytics
GROUP BY order_month, order_status
ORDER BY order_month;

传递参数值

由于指标视图定义了参数,因此你可以将其调用为表值函数,并在查询时传递值。 以下查询使用 10% 折扣。 由于 discount 存在默认值 0,因此省略参数的查询将返回未分配的收入:

SELECT
  customer_nation,
  MEASURE(total_revenue) AS total_revenue,
  MEASURE(discounted_revenue) AS discounted_revenue
FROM catalog.schema.tpch_sales_analytics(discount => 0.1)
GROUP BY customer_nation
ORDER BY discounted_revenue DESC;

你学到的内容

你生成了一个指标视图,该视图演示了:

Feature 示例
Snowflake 架构联接 客户到国家/国的订单(嵌套多对一联接)
时间字段 日期、月份、年份精度
转换后的字段 CASE 语句, SPLIT 函数
简单度量值 COUNT、SUM
可组合性 avg_order_value 和 revenue_per_customer 使用 MEASURE() 引用早期定义的度量标准
筛选度量值 FILTER (WHERE ...) 用于条件聚合
窗口度量值 使用滚动 7 天客户计数 trailing 7 day
参数 应用于 discount 度量值中的 discounted_revenue 参数
代理元数据 display_name、format、synonyms上的字段和度量值

其他资源