本页引用了属于 视图 的
sql_analytic_model_name参数。
sql_analytic_model_name也可以作为探索的一部分使用,如sql_analytic_model_name(适用于探索) 参数文档页面中所述。
用法
view: view_name {
sql_analytic_model_name: analytic_model_name ;;
}
|
层次结构
sql_analytic_model_name |
默认值
无
接受
数据库内分析模型名称
特殊规则
|
定义
对于 BigQuery 和 Snowflake 连接,sql_analytic_model_name 参数用于指定现有数据库内分析模型(BigQuery 图或 Snowflake 中的语义视图)的名称,以用作 LookML 视图的基础。这样,您就可以利用直接在数据库中定义的分析模型,例如 BigQuery 图 或 Snowflake 中的语义视图。
在这种情况下,分析模型对象已存在于您的数据库中,并由您的数据库进行管理;分析模型不是由 Looker 创建、维护或管理的。这类似于使用 sql_table_name 作为 LookML 视图公开的常规数据库表不受 Looker 管理的方式。
在 LookML 视图文件中,使用 sql_analytic_model_name 参数将 Looker 指向数据库中的分析模型。然后,创建 Looker 维度和测量,以映射到分析模型,以便您可以使用 Looker 查询分析模型。
限定分析模型名称的范围
当您仅使用分析模型名称引用分析模型时,Looker 会使用 Looker 管理员在数据库连接的设置中配置的默认搜索路径(数据库和架构)。
如果您需要在数据库用户的默认搜索路径中引用其他数据库和架构中的分析模型,可以使用 <database_name>.<schema_name>.<analytic_model_name> 格式限定分析模型名称的范围,以指向其他数据库或架构:
- 如需引用其他架构中的分析模型,请使用
<schema_name>.<analytic_model_name>。 - 如需引用其他数据库中的分析模型,请使用完整的
<database_name>.<schema_name>.<analytic_model_name>。
对于 Google BigQuery 连接,您可以使用 <project_name>.<dataset_name>.<analytic_model_name> 格式限定分析模型名称的范围,以引用其他项目和数据集中的分析模型。如需了解详情,请参阅Google BigQuery 连接文档页面。
根据分析视图创建 LookML 维度和测量
创建视图文件并将分析模型标识为 sql_analytic_model_name 后,您可以在同一视图文件中定义基于该分析模型的 LookML 维度和测量。
如需了解用于引用分析模型中元素的正确 SQL 语法,请参阅方言的文档。例如,如需从 BigQuery 图实体创建 LookML 维度,您必须在限定范围时使用下划线分隔元素。例如,对于 BigQuery 图,此 LookML 维度基于 Stores 节点表中的 location_id 属性:
dimension: location_id {
type: number
sql: Stores_location_id ;;
}
不过,如需创建基于 Snowflake 语义视图的 LookML 维度,您必须使用指标或维度的非限定名称。
示例
以下示例是一个名为 StoreGraph 的 BigQuery 图,该图在 BigQuery 数据库中定义:
CREATE OR REPLACE PROPERTY GRAPH mydataset.StoreGraph
NODE TABLES (
mydataset.Stores AS S,
mydataset.Locations AS L
PROPERTIES(id, name, population, MEASURE(SUM(population)) AS total_population)
)
EDGE TABLES (
mydataset.Stores AS SL
SOURCE KEY (location_id) REFERENCES L (id)
DESTINATION KEY (name) REFERENCES S (name)
);
以下示例是一个基于 StoreGraph BigQuery 图的 LookML 视图,包括映射到该图的维度和测量:
view: MyStoreGraphView {
sql_analytic_model_name: StoreGraph ;;
dimension: location_id {
type: number
sql: Stores_location_id ;;
}
dimension: population {
type: number
sql: Locations_population ;;
}
dimension: location_name {
type: string
sql: Locations_name ;;
}
measure: locations_total_population {
type: number
sql: Locations_total_population ;;
}
}
注意事项
Looker 中分析模型的注意事项
使用数据库内分析模型时,请注意以下注意事项和限制:
-
- 维度和测量支持的数据类型:
stringnumberdateyesno
- 仅维度支持的数据类型:
timedate_time
- 维度和测量支持的数据类型:
测量:
- 必须预定义基本测量: 基本测量必须在底层数据库分析模型中预定义。Looker 无法通过对分析模型中的维度执行聚合(例如
type: sum或type: count)来定义新的基本测量。 支持基于其他测量的测量: 您可以使用 LookML 测量的
sql参数执行非聚合计算,这些计算使用分析模型中预定义的基本测量。创建基于其他测量的测量时,您无法将新测量定义为聚合测量类型,例如sum或count。您必须将新测量定义为非聚合测量类型,例如string、number、date或yesno。请参阅以下示例:measure: average_order_amount { type: number sql: ROUND(${total_order_amount} / NULLIF(${count_orders}, 0), 2) ;; }
- 必须预定义基本测量: 基本测量必须在底层数据库分析模型中预定义。Looker 无法通过对分析模型中的维度执行聚合(例如
联接: 基视图基于分析模型的探索无法包含任何联接。同样,基于分析模型的视图无法联接到具有标准 LookML 基视图的探索中。
隐式联接: 分析模型不支持依赖于隐式联接的功能。依赖于隐式联接的功能的一些示例包括 自定义日历 和使用
type: location、type: distance或type: zipcode定义的字段。分析模型不支持以下功能:
必须能够通过当前连接访问分析模型
当 sql_analytic_model_name 参数在 view 对象中使用时,可以在 explore 对象中引用该 view 对象,而 explore 对象又在 模型 对象中引用。模型对象中定义了数据库 connection。当您在 sql_analytic_model_name 参数中引用分析模型时,需要在模型文件中指定的关联连接中访问该分析模型。
默认 数据库 和 架构(或对于 Google BigQuery,结算项目 和 数据集)由 Looker 管理员在他们创建 Looker 与数据库的连接时定义。