总体认知度

有关实现汇总认知度的指南,另请参阅我们旨在提高认知度的汇总教程最佳实践页面。

概览

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 必须能够对汇总表的测量执行操作,才能在探索查询中提供准确的数据。例如,您可以使用 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 测量值。

衡量近似计数

一般而言,汇总感知功能不支持不同的计数,因为您在尝试汇总不同的计数时无法获得准确的数据。例如,如果您要统计网站上的不同用户数,则可能有两位用户相隔三周访问了该网站。如果您尝试应用每周汇总表格来获得您网站上不同用户的每月计数,则在每月的唯一身份计数查询中,该用户会计算两次,那么数据将不正确。

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

另一种方法是使用近似计数来表示不同的计数。对于支持 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 标签页中可能显示的评论以及有关如何解决这些错误的建议。

针对总体认知度的计算节省的估算值

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

“探索”的“运行”按钮。按钮左侧会显示一条消息:将处理 3,989 行。汇总的认知度节省了 120 万行。

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

运行查询后,“探索”窗口将在运行按钮旁边显示用于汇总查询的汇总表格。

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

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

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

不过,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 无法将新鲜数据与汇总表格合并,Looker 将使用汇总表格中的现有数据。

汇总表必须保留

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

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

拥有 develop 权限的用户可以覆盖持久性设置,并重新构建查询的所有汇总表,以获取最新数据。如需为查询重新构建表,请选择齿轮图标的探索操作按钮,然后从探索操作菜单中选择重新构建派生表和运行

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

Rebuild Durived 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 DISTINCT。Looker 这样做是为了避免扇出计算错误。例如,count 测量值会呈现为 count_distinct 测量类型。这是为了避免联接的扇出计算错误,也是 Looker 的对称聚合功能的一部分。有关 Looker 此功能的说明,请参阅对称聚合方面的最佳实践页面

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

对于汇总认知度衡量的指标类型,这一点适用于 sumcountaverage。在以下情况下,Looker 会将这类衡量结果呈现为 DISTINCT:

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

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

此外,如果您有支持 HyperLogLog 草图的 SQL 方言,您可以向测量添加 allow_approximate_optimization: yes 参数。使用 allow_approximate_optimization: yes 定义计数测量值时,即使 Looker 将其呈现为不同的计数,Looker 也可以将其用于汇总认知度。

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

方方面面地支持总体认知度

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

Google BigQuery 旧版 SQL 支持汇总认知度数据,但不支持将最新数据与汇总表格数据合并

方言支持逐步构建汇总表

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