总体认知度

有关实现总体认知度的指南,另请参阅我们的总体认知度教程帮助中心文章。

概览

Looker 使用聚合感知逻辑查找数据库中可用且最小的表格来运行查询,同时仍保持准确性。

对于数据库中非常大的表,Looker 开发者可以创建较小的数据汇总表,并按各种属性组合分组。汇总表将充当总览表或汇总表,Looker 会尽可能将其用于查询,而不是原来的大型表。如果有策略地实施,总体认知度可以通过平均数量级提高平均查询量。

例如,您可能有一个 PB 级的数据表,其中对您网站上发生的每个订单都占一行。通过此数据库,您可以创建包含每日销售总额的汇总表格。如果您的网站每天收到 1,000 个订单,则您每天的每日汇总表格将比原始表格少 999 行。您可以创建另一个汇总表格,其中包含每月总销售额,这样会更加高效。因此,现在如果用户查询每日或每周销售情况,Looker 将使用每日销售总表。如果用户运行有关年度销售的查询,而您没有年度汇总表,则 Looker 会使用次优的汇总表,即本例中的每月销售汇总表。

此图片显示了 Looker 如何尽可能通过汇总表格回答用户的问题:

  • 对于有关每月总销售额的查询,Looker 会使用基于每月销售额 (sales_monthly_aggregate_table) 的汇总表格。
  • 对于与每天的销售总额有关的查询,没有具有该粒度的汇总表,因此 Looker 会从原始数据库表 (orders_database) 中获取查询结果。(但是,如果您的用户经常运行此类查询,则可以轻松地为其创建汇总表。)
  • 对于查询每周销售情况,没有每周汇总表格,因此 Looker 使用了次高指标,即基于每日销售额 (sales_daily_aggregate_table) 的汇总表格。

Looker 使用汇总认知度逻辑查询尽可能小的汇总表格,以回答您的用户的问题。原始表将仅用于需要的粒度高于汇总表所能提供的查询。

汇总表格无需联接或添加到单独的“探索”中。相反,Looker 会动态调整探索查询的 FROM 子句,以访问查询的最佳聚合表。这意味着您的钻石会得到保留,并且“探索”工具可以合并。借助“汇总认知度”报告,一次“探索”功能可自动利用汇总表格,但仍可根据需要深入研究细化的数据。

您还可以利用汇总表格大幅提升信息中心的性能,尤其是查询大量数据集的图块时更是如此。如需了解详情,请参阅 aggregate_table 参数文档页面上的从信息中心获取汇总表 LookML 部分。

将汇总表添加到项目中

如需访问汇总感知功能,必须在数据库中保留汇总表。由于汇总表是一种永久性派生表 (PDT),因此汇总表与 PDT 具有相同的要求。如需了解详情,请参阅 Looker 中的派生表文档页面。

Looker 开发者可以创建战略性汇总表,从而尽可能减少数据库中大型表所需的查询次数。汇总表必须永久保留到您的数据库中,以便访问汇总汇总表。因此,汇总表是一种永久性派生表 (PDT)

在 LookML 项目的 explore 参数下,您可以使用 aggregate_table 参数定义汇总表。

下面是一个在 LookML 中使用汇总表的 explore 示例:

explore: orders {
  label: "Sales Totals"
  join: order_items {
    sql_on: ${orders.id} = ${order_items.id} ;;
  }
  aggregate_table: sales_monthly {
    materialization: {
      datagroup_trigger: orders_datagroup
    }
    query: {
      dimensions: [created_month]
      measures: [order_items.total_sales]
    }
  }
  # other explore parameters
}

如需创建汇总表,您可以从头开始编写 LookML,也可以通过探索信息中心获取汇总表 LookML。如需详细了解 aggregate_table 参数及其子参数,请参阅 aggregate_table 参数文档页面。

设计聚合表

为了让“探索”查询能够使用汇总表格,汇总表格必须能够为“探索”查询提供准确的数据。如果满足以下所有条件,Looker 可以使用“探索”查询的汇总表:

  • “探索”查询的字段是汇总表格字段的子集(请参阅本页面上的字段因素部分)。或者,对于时间范围,“探索”查询的时间范围可根据汇总表格中的时间范围得出(请参阅本页面上的时间范围因素部分)。
  • “探索”查询包含汇总感知功能支持的衡量类型(请参阅本页面中的衡量类型因素部分),或者“探索”查询具有完全匹配的汇总表(请参阅本页面上的创建与“探索”查询完全匹配的汇总表部分)。
  • “探索”查询的时区与汇总表格使用的时区一致(请参阅本页面的时区因素部分)。
  • “探索”查询的过滤条件会引用在汇总表格中可用作维度的字段,或每个“探索”查询的过滤条件都与汇总表格中的某个过滤条件匹配(请参阅本页面的过滤条件因素部分)。

确保汇总表格可以为“探索”查询提供准确数据的一种方法是,创建与“探索”查询完全匹配的汇总表格。如需了解详情,请参阅本页面上的创建与“探索”查询完全匹配的汇总表部分。

字段因素

要用于“探索”查询,汇总表格必须包含该“探索”查询所需的所有维度和指标,包括“探索”查询中用于过滤条件的字段。如果“探索”查询包含未包含在汇总表格中的维度或度量方式,Looker 将无法使用汇总表,而会使用基表。

例如,如果查询按维度 A 和 B 分组,按维度 C 汇总,然后按维度 D 过滤,则汇总表的维度 A、B 和 D 至少要有一项,维度 C 必须有维度。

聚合表还可以包含其他字段,但必须至少包含“探索”查询字段,才能进行优化。但例外情况是时间范围维度,因为较宽泛的粒度时间范围可以从更精细的粒度衍生而来

出于这些字段方面的考虑,汇总表专用于定义该探索的“探索”。在一个“探索”中定义的汇总表格不会用于在其他“探索”中进行的查询。

时间范围因素

Looker 的汇总认知度逻辑能够从一个时间范围推导出另一个时间范围。汇总表可用于查询,只要该汇总表的时间范围具有比“探索”查询更精确(或相同)的粒度即可。例如,基于其他数据汇总的“探索”查询可以使用基于每日数据的汇总表,如查询“每日”、“每月”和“年度”数据,甚至是日期、“年”和“周几”数据。但是,年度汇总表格不能用于调用每小时数据的“探索”查询,因为汇总表格的数据不够精细,无法满足“探索”查询的需求。

这同样适用于时间范围子集。例如,如果您有一个针对过去三个月进行了过滤的汇总表,而某个用户使用过滤条件过去两个月来查询数据,则 Looker 能够针对该查询使用汇总表。

此外,使用时间范围过滤条件的查询也适用相同的逻辑:只要汇总表格的时间范围具有与“探索”查询中使用的时间范围过滤条件相比更精确(或相同)的粒度,汇总表格便可用于具有时间范围过滤条件的查询。例如,具有每日时间范围维度的汇总表格可用于按天、周或月过滤的“探索”查询。

衡量类型因素

为了让“探索”查询能够使用汇总表格,汇总表格中的指标必须能够为“探索”查询提供准确的数据。

因此,仅支持特定类型的衡量方式,如以下部分所述:

如果探索查询使用任何其他其他类型的衡量方式,Looker 将使用原始表(而非汇总表)返回结果。唯一的例外是“探索”查询与汇总表格查询完全匹配,如创建与“探索”查询完全匹配的汇总表部分中所述。

否则,Looker 将使用原始表(而不是汇总表)返回结果。

使用受支持的衡量类型进行衡量

汇总认知度功能可用于使用以下指标类型的“探索”查询:

如果探索联接多个数据库表,则 Looker 可以分别将 SUMCOUNTAVERAGE 类型的测量结果渲染为 SUM DISTINCTCOUNT DISTINCTAVERAGE DISTINCT。Looker 这样做是为了避免扇出计算错误,如本页“使用联接进行探索”的对称聚合中所述。

若要为 Google 探索查询使用汇总表格,Looker 必须能够针对该汇总表格采取的措施,在“探索”查询中提供准确的数据。例如,可以使用旨在衡量总体认知度的 type: sum 指标,因为您可以对多项求和求和:将每周的汇总表格加在一起,以获得准确的每月总和。同样,可使用具有 type: max 的测量值,因为可使用每日最高值汇总表格来查找准确的每周最高值。

对于包含 type: average 的测量结果,支持聚合感知,因为 Looker 使用求和和计数数据从汇总表中准确求出平均值。

使用 SQL 表达式定义的措施

聚合感知功能还可与 sql 参数中的表达式定义的衡量指标结合使用。使用 SQL 表达式定义时,还支持以下衡量类型:

对于定义为其他衡量指标组合的衡量指标,我们支持汇总认知度指标,如下例所示:

measure: total_revenue_in_dollars {
  type: number
  sql: ${total_revenue_in_dollars} - ${inventory_item.total_cost_in_dollars} ;;
}

sql 参数中定义计算的衡量方式也支持汇总认知度,例如以下衡量标准:

measure: wholesale_value {
  type: number
    sql: (${order_items.total_sale_price} * 0.60) ;;
}

此外,对于在 sql 参数中定义 MIN、MAX 和 COUNT 运算的度量,支持汇总感知,例如以下度量:

measure: most_recent_order_date {
  type: date
  sql: MAX(${users.created_at_raw})
}

只有 MIN()MAX()COUNT() 操作支持聚合感知。如果您想在汇总表格中使用平均值或总和衡量,则可以创建 type: averagetype: sum 指标,这两种指标都支持用于提高总体认知度。

引用 LookML 字段的措施

在衡量中使用 sql 表达式时,聚合感知支持以下类型的字段引用

  • 使用 ${view_name.field_name} 格式的引用,用于指示其他视图中的字段
  • 使用 ${field_name} 格式的引用,用于指示同一视图中的字段

使用 ${TABLE}.column_name 格式(表示表中的一列)定义的衡量操作不支持汇总认知度。(如需简要了解如何在 LookML 中使用引用,请参阅纳入 SQL 并引用 LookML 对象文档页面。)

例如,聚合表将不支持使用此 sql 参数定义的计量单位,因为它使用 ${TABLE}.column_name 格式:

measure: wholesale_value {
  type: number
  sql: (${TABLE}.total_sale_price * 0.60) ;;
}

如果您想在汇总表格中添加此衡量指标,可以改为创建使用 ${TABLE}.column_name 格式定义的维度,然后创建引用该维度的衡量指标,如下所示:


 dimension: total_sale_price {
    sql: (${TABLE}.total_sale_price) ;;
  }

  measure: wholesale_value {
    type: number
    sql: (${total_sale_price} * 0.60) ;;
}

现在,您可以在聚合表中使用 wholesale_value 测量值。

测量值是近似不同的计数

通常情况下,汇总计数不支持区分不同的数据,因为如果您尝试汇总不同的数据,则无法获得准确的数据。例如,如果您要统计网站上的不同用户数,则可能会出现两次访问网站两次、间隔三周的用户。如果您尝试应用每周汇总表格,以统计您网站上不同用户的每月计数,那么在每月的唯一身份计数查询中,该用户会重复计算两次,因此数据会有误。

要解决此问题,可以创建与 Google 探索查询完全匹配的汇总表,如本页中的创建与 Google 探索查询完全匹配的汇总表部分中所述。当“探索”查询和汇总表格查询相同时,不同的计数指标可提供准确的数据,因此可用于汇总认知度数据。

另一种选择是为不同的计数使用近似值。对于支持 HyperLogLog 草图的方言,Looker 可以利用 HyperLogLog 算法来估算汇总表的不同计数。

已知 HyperLogLog 算法的错误率约为 2%。allow_approximate_optimization: yes 参数要求 Looker 开发者确认,他们可以为测量值使用近似数据,以便可以从聚合表大致计算测量值。

如需了解详情,请参阅 allow_approximate_optimization 参数文档页面以及支持使用 HyperLogLog 区分计数的方言列表

时区因素

在许多情况下,数据库管理员使用 UTC 作为数据库的时区。不过,许多用户可能未使用 UTC 时区。Looker 提供了多种转换时区的选项,以便您的用户在自己的时区中获取查询结果:

  • 查询时区,此设置适用于对数据库连接执行的所有查询。如果您的所有用户都在同一个时区,您可以设置一个查询时区,这样所有查询都会从数据库时区转换为查询时区。
  • 特定于用户的时区:您可以在其中分配用户并分别选择时区。在这种情况下,查询将从数据库时区转换为单个用户的时区。

如需详细了解这些选项,请参阅使用时区设置文档页面。

这些概念对于了解总体认知度非常重要,因为为了将汇总表格用于包含日期维度或日期过滤条件的查询,汇总表格中的时区必须与原始查询采用的时区设置相符。

如果未指定 timezone 值,汇总表将使用数据库时区。如果满足以下任一条件,您的数据库连接也将使用数据库时区:

  • 您的数据库不支持时区。
  • 您的数据库连接所用的查询时区数据库时区设为同一时区。
  • 您的数据库连接既没有指定的查询时区,也没有用户特定的时区。在这种情况下,您的数据库连接将使用数据库时区。

如果满足上述任一条件,则可以省略聚合表的 timezone 参数。

否则,应定义汇总表的时区以匹配可能的查询,这样才更有可能使用汇总表:

  • 如果您的数据库连接使用单个查询时区,则应将汇总表的 timezone 值与查询时区值匹配。
  • 如果您的数据库连接使用特定于用户的时区,则应创建相同的汇总表,每个汇总表具有不同的 timezone 值,以匹配用户可能的时区。

如果汇总表格中的时区与“探索”查询中的时区不匹配,Looker 就无法对“探索”查询使用汇总表。如果您的数据库连接具有用户特定的时区,这意味着您需要为每个用户的时区创建单独的汇总表。

过滤因素

在汇总表格中添加过滤条件时请务必小心。汇总表中的过滤条件可以将结果范围缩小到汇总表不可用的程度。例如,假设您为每日订单数创建了一个汇总表,而汇总表只过滤了来自澳大利亚的太阳镜订单。如果用户针对“全球”太阳镜订单数运行“探索”查询,Looker 便无法使用该“探索”查询的汇总表,因为汇总表仅包含澳大利亚的数据。汇总表格过滤的数据范围过窄,导致“探索”查询无法使用。

此外,请注意您的 Looker 开发者可能内置于“探索”中的过滤器,例如:

  • access_filters:应用针对特定用户的数据限制。
  • always_filter:要求用户为“探索”查询添加一组特定的过滤条件。用户可以更改查询的默认过滤条件值,但无法完全移除过滤条件。
  • conditionally_filter:定义一组默认过滤条件,如果用户对另一个列表中的至少一个过滤条件应用同样在“探索”中定义的过滤条件,则可以替换默认过滤条件。

这些过滤条件类型基于特定字段。如果“探索”功能具有这些过滤条件,那么您必须在 aggregate_tabledimensions 参数中添加其字段。

例如,下方是基于 orders.region 字段的访问过滤器的“探索”:

explore: orders {
  access_filter: {
    field: orders.region
    user_attribute: region
  }
}

要创建用于此“探索”的汇总表格,该汇总表格必须包含访问过滤器所依据的字段。在下一个示例中,访问权限过滤条件是基于字段 orders.region,并且相同的字段已作为维度包含在汇总表中:

explore: orders {
  access_filter: {
    field: orders.region  # <-- orders.region field
    user_attribute: region
  }
  aggregate_table: sales_monthly {
    materialization: {
      datagroup_trigger: orders_datagroup
    }
    query: {
      dimensions: [orders.created_day, orders.region] # <-- orders.region field
      measures: [orders.total_sales]
      timezone: America/Los_Angeles
    }
  }
}

由于汇总表查询包含 orders.region 维度,因此 Looker 可以动态过滤汇总表中的数据,以便与“探索”查询中的过滤条件相匹配。因此,即使“探索”部分具有访问权限过滤器,Looker 仍然可以对汇总查询使用汇总表格。

这同样适用于使用配置了 bind_filters原生派生表的“探索”查询。bind_filters 参数会将指定的过滤条件从探索查询传递到原生派生的表格子查询。对于汇总感知功能,如果您的探索查询需要一个使用 bind_filters 的原生派生表,那么只有当原生派生表的 bind_filters 参数中使用的所有字段在“探索”查询中与汇总表中具有相同的过滤条件值时,“探索”查询才能使用汇总表。

创建与“探索”查询完全匹配的汇总表

若要确保汇总表格可用于“探索”查询,一种方法是直接创建与“探索”查询完全匹配的汇总表格。如果“探索”查询和汇总表格都使用了相同的衡量方式、维度、过滤条件、时区和其他参数,那么根据定义,汇总表格的结果将适用于“探索”查询。如果汇总表格与“探索”查询完全匹配,Looker 便能使用包含任意类型衡量的汇总表格。

您可以使用“探索”齿轮菜单中的获取 LookML 选项,通过“探索”创建汇总表。您还可以使用信息中心的齿轮菜单中的获取 LookML 选项,为信息中心中的所有图块创建完全匹配。

确定用于查询的汇总表

拥有 see_sql 权限的用户可以使用“探索”专区的 SQL 标签页中的注释,查看哪个查询将会使用汇总表格。开发模式中也会显示 SQL 标签页注释,因此开发者可以在将新表推送到生产环境之前测试新的汇总表,以查看 Looker 如何使用它们。

例如,根据之前显示的月度汇总表格示例,我们可以前往“探索”页面并运行查询,查询每年的销售总额。然后,我们可以点击 SQL 标签页,查看 Looker 创建的查询的详细信息。如果您处于开发模式,Looker 会显示注释来指示用于查询的汇总表:

通过 SQL 标签页上的注释,我们可以看到 Looker 为此查询使用了 sales_monthly 聚合表,还了解为什么其他聚合表没有用于此查询:

-- use existing orders::sales_monthly in sandbox_scratch.LR$LB4151619827209021_orders$sales_monthly
-- Did not use orders::sales_weekly; it does not include the following fields in the query: orders.created_month
-- Did not use orders::sales_daily; orders::sales_monthly was a better fit for optimization.
-- Did not use orders::sales_last_3_days; contained filters not in the query: orders.created_date

请参阅此页面上的问题排查部分,可能在 SQL 标签中看到可能出现的注释,以及有关如何解决这些问题的建议。

用于计算总体认知度的计算节省成本估算值

如果您的数据库连接支持费用估算,并且汇总表格可用于查询,“探索”窗口将显示使用汇总表格(而不是直接查询数据库)可节省的计算量。在运行查询之前,“探索”中运行按钮的左侧会显示汇总认知度节省情况:

在运行查询之前,如果您想查看用于查询的汇总表,可以点击 SQL 标签页,如本文档页面中的确定将哪个汇总表用于查询部分所述。

运行查询后,“探索”窗口将显示哪个聚合表用于回答查询:

对于启用了费用估算功能的数据库连接,系统会显示总体认知度节省情况。如需了解详情,请参阅在 Looker 中探索数据文档页面。

Looker 将新数据联合到聚合表中

对于带有时间过滤条件的汇总表,Looker 可以将最新数据联合到汇总表中。您的汇总表格可能包含过去 3 天的数据,但该汇总表格可能是昨天构建的。汇总表格将缺少当天的信息,因此您不应该将其用于对最近的每日信息进行“探索”查询。

但是,Looker 仍然可以将该汇总表中的数据用于查询,因为 Looker 将对最近的数据运行查询,然后将这些结果联合到汇总表格中的结果中。

在以下情况下,Looker 可以将最新数据与汇总表的数据联合:

  • 汇总表具有时间过滤器。
  • 汇总表格包含与时间过滤条件相同的时间字段。

例如,以下汇总表有一个基于 orders.created_date 字段的维度,并有一个基于同一字段的时间过滤条件 ("3 days"):

aggregate_table: sales_last_3_days {
  query:  {
    dimensions: [orders.created_date]
    measures: [order_items.total_sales]
    filters: [orders.created_date: "3 days"]  # <-- time filter
    timezone: America/Los_Angeles
  }
  ...
}

如果此汇总表是昨天构建的,那么 Looker 会检索尚未包含在汇总表中的最新数据,然后将最新结果与汇总表格中的结果进行联合。这意味着您的用户可以获得最新数据,同时仍可通过汇总认知度来优化效果。

如果您处于开发模式,则可以点击“探索”的SQL 标签页,查看 Looker 用于查询的汇总表,以及 Looker 用于引入未包含在汇总表中的更新数据的 UNION 语句。

目前,如果 Looker 无法将新鲜数据与汇总表格合并,则会使用汇总表格中的现有数据。

汇总表必须保留

您的汇总表必须保留在数据库中,以便用于汇总感知功能。该持久性策略在汇总表格的 materialization 参数中指定。由于汇总表是一种永久性派生表 (PDT),因此汇总表与 PDT 具有相同的要求。如需了解详情,请参阅 Looker 中的派生表文档页面。

如果您的方言支持此功能,您就可以在项目中创建增量 PDT。Looker 通过向表附加新鲜数据来构建增量 PDT,而不是完全重建表。由于汇总表本身是一种 PDT,因此您还可以创建增量汇总表。如需详细了解增量永久性磁盘,请参阅增量永久性磁盘文档页面。如需查看增量聚合表的示例,请参阅 increment_key 参数文档页面。

拥有 develop 权限的用户可以替换持久性设置,并重建查询的所有汇总表,以获取最新数据。如需为查询重新构建表,请使用“探索”菜单中的重建派生表格和运行选项:

您必须等到“探索”查询加载完成后,此选项才可用。

Rebuild Derived Tables & Run 选项将重建查询中引用的所有派生表,以及查询中表所依赖的任何派生表。这包括聚合表,表本身也是一种持久性派生表。

对于启动 Rebuild Derived Tables & Run 选项的用户,查询会在加载结果之前等待表进行重建。其他用户的查询仍将使用现有表。永久表重新构建后,所有用户都将使用重新构建的表。

如需详细了解重建派生表和运行选项,请参阅 Looker 中的派生表文档页面。

问题排查

确定用于查询的汇总表部分所述,如果您在开发模式下运行查询,则可以在“探索”上运行查询,然后点击 SQL 标签页以查看用于查询的汇总表(如有)。

此外,SQL 标签页中还包含相关注释,说明了为何没有使用汇总表进行查询。对于未使用的汇总表格,注释会以以下列开头:

Did not use [explore name]::[aggregate table name];

例如,以下注释说明了在 order_items 探索中定义的 sales_daily 汇总表没有用于查询:

-- Did not use order_items::sales_daily; query contained the following filters
that were neither included as fields nor exactly matched by filters in the aggregate table:
order_items.created_year.

在这种情况下,查询中的过滤条件会阻止系统使用汇总表格。

下表列出了汇总表无法使用的一些其他可能原因,以及您可以采取哪些措施来增强该汇总表的易用性。

不使用汇总表
的原因
说明和可能的步骤
“探索”中没有该字段。 LookML 验证类型错误。这很可能是因为汇总表未正确定义,或者汇总表的 LookML 存在拼写错误。可能的问题原因是字段名称错误或类似内容。

要解决此问题,请验证汇总表格中的维度和衡量结果是否与“探索”中的字段名称一致。如需详细了解如何定义聚合表,请参阅 aggregate_table 参数文档页面。
汇总表在查询中不包含以下字段。 要用于“探索”查询,汇总表格必须包含该“探索”查询所需的所有维度和指标,包括“探索”查询中用于过滤条件的字段。如果“探索”查询包含未包含在汇总表格中的维度或度量方式,Looker 将无法使用汇总表,而会使用基表。如需了解详情,请参阅本页面中的字段因素部分。但例外情况是时间范围维度,因为较宽泛的粒度时间范围可以从更精细的粒度衍生而来

要解决此问题,请验证汇总查询的定义中是否包含“探索”查询的字段。
查询包含以下过滤条件,这些过滤条件既不是作为字段包含在内,也不与汇总表格中的过滤条件完全匹配。 “探索”查询中的过滤条件会阻止 Looker 使用汇总表。

如需解决此问题,您可以执行以下任一操作:
  • 将相同的过滤条件添加到汇总表格中。
  • 将过滤条件使用的字段添加到汇总表格中。
  • 从“探索”查询中移除过滤条件。
如需了解详情,请参阅本页面的过滤条件因素部分。
该查询包含以下无法汇总的衡量指标。 该查询包含一个或多个汇总感知不支持的衡量类型,例如不同计数中位数百分位数

要解决此问题,请检查查询中每个衡量类型的类型,确保它是支持的衡量类型之一。此外,如果您的“探索”部分已有联接,请确认您的测量并未通过扇出联接转换为不同的测量(对称汇总)。如需了解说明,请参阅本页面的“使用联接的探索”的对称聚合部分。
另一个汇总表格更适合优化。 该查询有多个可行的汇总表,并且 Looker 找到了更合适的汇总表来改用。在这种情况下,您无需执行任何操作。
Looker 未执行任何分组操作(由于存在 primary_keycancel_grouping_fields 参数),因此查询无法汇总。 该查询引用了一个阻止其具有 GROUP BY 子句的维度,因此 Looker 无法使用该查询的任何汇总表。

如需解决此问题,请验证视图的 primary_key 参数和“探索”的 cancel_grouping_fields 参数是否设置正确。
汇总表包含未包含在查询中的过滤条件。 汇总表包含不属于相应查询的非时间过滤条件。

要解决此问题,您可以从聚合表中移除该过滤条件。如需了解详情,请参阅本页面的过滤条件部分。
字段在“探索”查询中定义为仅限过滤条件的字段,但会在汇总表格的 dimensions 参数中列出。 汇总表格的 dimensions 参数列出了在“探索”查询中仅定义为 filter 字段的字段。

要解决此问题,请从汇总表格的 dimensions 列表中移除该字段。如果聚合表需要此字段,请将其添加到聚合表查询中的 filters 列表。
优化器无法确定汇总表未被使用的原因。 此注释保留为极端情况。如果您看到常用的“探索”查询有此结果,则可以创建一个与“探索”查询完全匹配的汇总表格。您可以轻松地从“探索”中获取汇总表 LookML,如 aggregate_table 参数页面中所述。

注意事项

对联接进行“探索”的对称聚合

有一点需要注意的是,在探索多个数据库表的“探索”中,Looker 可以将 SUMCOUNTAVERAGE 类型的测量结果分别渲染为 SUM DISTINCTCOUNT DISTINCTAVERAGE DISTINCTLooker 这样做是为了避免扇出错误计算。例如,count 测量结果会呈现为 count_distinct 测量类型。这是为了避免联接的扇出计算错误,也是 Looker 对称聚合功能的一部分。有关 Looker 功能的说明,请参阅关于对称聚合的帮助中心文章

对称汇总功能可以防止计算错误,但在某些情况下也可能会阻止您的汇总表使用,因此请务必了解相关信息。

对于总体认知度支持的衡量类型,这适用于 sumcountaverage。在以下情况下,Looker 会将这些类型的测量结果呈现为 DISTINCT:

有关这类联接的说明,请参阅 relationship 参数文档页面。

如果您发现汇总表格正被用于此目的,则可以创建与“探索”查询完全匹配的汇总表格,以便将这些衡量类型用于“联接”探索。如需了解详情,请参阅本页面上的创建与“探索”查询完全匹配的汇总表部分。

此外,如果您的 SQL 方言支持 HyperLogLog 草图,您可以向测量添加 allow_approximate_optimization: yes 参数。使用 allow_approximate_optimization: yes 定义计数测量结果时,即使 Looker 以不同的计数形式呈现,该测量结果也可以用于汇总感知。

如需了解详情,请参阅 allow_approximate_optimization 参数文档页面以及哪些 SQL 方言支持 HyperLogLog 草图列表。

方方面面都支持汇总认知度

能否使用汇总感知功能取决于您的 Looker 连接的数据库方言。在最新版 Looker 中,以下方言支持汇总认知度:

Google BigQuery 旧版 SQL 支持聚合感知,但不支持将新数据与汇总表的数据合并

支持增量构建汇总表

为了让 Looker 支持 Looker 项目中的增量汇总表,您的数据库方言也必须支持这些表。下表显示了在最新版 Looker 中,哪些语言支持汇总表格并逐步构建 PDT: