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

在本教程中,你将在 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_orderkeyo_custkeyo_totalpriceo_orderdateo_orderstatus
customer 维度表(客户详细信息) c_custkeyc_namec_mktsegmentc_nationkey
nation 维度表(国家或地区参考) n_nationkeyn_namen_regionkey

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

可以在目录资源管理器 UI 中生成此指标视图,使用 Genie Code 生成它,或直接编写完整的 YAML 定义。 这三种方法都解析为为指标视图建模的单个 YAML 定义。 在后续步骤中,选择 目录资源管理器 UIYAML 编辑器 选项卡以遵循首选方法。 如果使用 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_dateorder_monthorder_year,提供多个粒度,以支持不同的分析需求。
  • 转换后的字段:order_statusorder_priority,其使用 CASESPLIT 将源代码值转换为可读标签。
  • 已联接字段:customer_namemarket_segmentcustomer_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 同义词设置为 statusfulfillment 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 同义词设置为 segmentindustry

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

有关完整字段步骤,请参阅 步骤 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中所述,为每个度量设置formatsynonyms。 本教程添加:

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

目录浏览器 UI

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

  1. order_count:在构建器模式下,选择对执行o_orderkey聚合。 将显示名称设置为 Order Count,格式设置为 数字
  2. total_revenue:在构建器模式下,选择上的o_totalprice聚合。 将显示名称设置为 Total Revenue,格式设置为 Currency (USD),同义词设置为 revenuesales
  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 函数
简单度量值 COUNTSUM
可组合性 avg_order_valuerevenue_per_customer 使用 MEASURE() 引用早期定义的度量标准
筛选度量值 FILTER (WHERE ...) 用于条件聚合
窗口度量值 使用滚动 7 天客户计数 trailing 7 day
参数 应用于 discount 度量值中的 discounted_revenue 参数
代理元数据 display_nameformatsynonyms上的字段和度量值

其他资源