有关实现总体认知度的指南,另请参阅我们的总体认知度教程帮助中心文章。
概览
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 可以分别将
SUM
、COUNT
和AVERAGE
类型的测量结果渲染为SUM DISTINCT
、COUNT DISTINCT
和AVERAGE 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: average
或type: 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_table
的 dimensions
参数中添加其字段。
例如,下方是基于 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_key 或 cancel_grouping_fields 参数),因此查询无法汇总。 |
该查询引用了一个阻止其具有 GROUP BY 子句的维度,因此 Looker 无法使用该查询的任何汇总表。如需解决此问题,请验证视图的 primary_key 参数和“探索”的 cancel_grouping_fields 参数是否设置正确。 |
汇总表包含未包含在查询中的过滤条件。 | 汇总表包含不属于相应查询的非时间过滤条件。 要解决此问题,您可以从聚合表中移除该过滤条件。如需了解详情,请参阅本页面的过滤条件部分。 |
字段在“探索”查询中定义为仅限过滤条件的字段,但会在汇总表格的 dimensions 参数中列出。 |
汇总表格的 dimensions 参数列出了在“探索”查询中仅定义为 filter 字段的字段。要解决此问题,请从汇总表格的 dimensions 列表中移除该字段。如果聚合表需要此字段,请将其添加到聚合表查询中的 filters 列表。 |
优化器无法确定汇总表未被使用的原因。 | 此注释保留为极端情况。如果您看到常用的“探索”查询有此结果,则可以创建一个与“探索”查询完全匹配的汇总表格。您可以轻松地从“探索”中获取汇总表 LookML,如 aggregate_table 参数页面中所述。 |
注意事项
对联接进行“探索”的对称聚合
有一点需要注意的是,在探索多个数据库表的“探索”中,Looker 可以将 SUM
、COUNT
和 AVERAGE
类型的测量结果分别渲染为 SUM DISTINCT
、COUNT DISTINCT
和 AVERAGE DISTINCT
。Looker 这样做是为了避免扇出错误计算。例如,count
测量结果会呈现为 count_distinct
测量类型。这是为了避免联接的扇出计算错误,也是 Looker 对称聚合功能的一部分。有关 Looker 功能的说明,请参阅关于对称聚合的帮助中心文章。
对称汇总功能可以防止计算错误,但在某些情况下也可能会阻止您的汇总表使用,因此请务必了解相关信息。
对于总体认知度支持的衡量类型,这适用于 sum
、count
和 average
。在以下情况下,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: