set

用法

view: view_name {
   set: set_name {
      fields: [field, field, ]
   }
}
层次结构
set
可能的字段类型
维度、维度组、过滤字段、衡量指标

接受
以方括号括起来的字段名称列表

定义

当在其他需要字段列表的参数(例如 fields [用于联接]drill_fields [用于字段])中引用时,集合非常有用。

您可以使用 set 参数定义每个集合。一个集可以包含当前视图中的任意数量的维度、衡量指标或过滤字段,包括由维度组生成的各个维度。它还可以使用 view_name.field_name 语法包含其他视图中的字段。

set 参数中,添加 fields 参数,然后列出字段,如以下示例所示:

set: my_first_set {
  fields: [
    dimension_one,
    another_view.dimension_two,
    measure_one
  ]
}

集合还可以包含其他集合。为了区分集名称与维度或度量名称,请添加 * 字符。例如:

set: my_first_set {
  fields: [
    dimension_one,
    another_view.dimension_two,
    measure_one
  ]
}

set: my_second_set {
  fields: [
    dimension_three,
    measure_two
  ]
}

set: my_third_set {
  fields: [
    my_first_set*,
    my_second_set*
  ]
}

名为 my_third_set 的集合将包含以下字段:

  • dimension_one
  • another_view.dimension_two
  • measure_one
  • dimension_three
  • measure_two

最后,可以使用 - 字符排除字段。例如:

set: my_first_set {
  fields: [
    dimension_one,
    another_view.dimension_two,
    measure_one
  ]
}

set: my_second_set {
  fields: [
    dimension_three,
    measure_two
  ]
}

set: my_third_set {
  fields: [
    my_first_set*,
    my_second_set*
  ]
}

set: my_fourth_set {
  fields: [
    my_first_set*,
    -measure_one
  ]
}

名为 my_fourth_set 的集合将包含以下字段:

  • dimension_one
  • another_view.dimension_two

示例

创建名为 financial_data 的集合

set: financial_data {
  fields: [
    subtotal,
    shipping,
    tax,
    total,
    cost,
    profit
  ]
}

客户视图中创建一个名为 basic_customer_data 的集,该集还引用了客户订单事实视图:

set: basic_customer_data {
  fields: [
    name,
    address,
    status,
    customer_order_facts.lifetime_orders,
    customer_order_facts.lifetime_revenue
  ]
}

常见挑战

其他视图中的字段必须与使用 set 的探索联接

如果您想引用 set 中来自其他视图的字段,则需要确保该视图已联接到使用 set探索。例如,以下代码将无法正常运行:

模型文件

explore: orders { ... }

查看文件

view: orders {
  set: customer_info {
    fields: [customer.name]
  }
}

在此示例中,customers 未与 orders 联接,因此无法在 customer_info 集内引用 customers 中的字段。

dimension_group 中的字段添加到集合中

如果您想将 dimension_group 中的字段添加到某个集合,则需要单独添加每个时间范围维度。例如,请考虑以下 dimension_group

dimension_group: created {
  type: time
  timeframes: [date, week, month]
  sql: ${TABLE}.created_at ;;
}

您无法向此类集合添加“日期”“周”和“月”维度:

set: created_timeframes {
  fields: [created]
}

您需要单独添加时间范围,如下所示:

set: created_timeframes {
  fields: [
    created_date,
    created_week,
    created_month
  ]
}