Looker 块是针对常见分析模式和数据源的预构建数据模型。您可以重复使用他人已完成的工作,而不是从头开始,然后根据您的确切规范自定义块。从经过优化的 SQL 模式到完全内置的数据模型,Looker 组成块可用作在 Looker 中快速灵活地进行数据建模的起点。
您可以从各种来源获取块,以自定义并添加到 Looker 实例,包括:
- 独立的 Looker Marketplace,您可以在其中浏览块并访问其源代码。
- 可从 Looker 实例访问的 Looker Marketplace。您可以从该 Marketplace 中直接浏览 Looker 块(称为“模型”)并将其安装到 Looker 实例中。如需详细了解如何从 Looker Marketplace 安装工具,请参阅使用 Looker Marketplace文档页面。
Looker 块的类型
Looker 块提供各种功能,例如:
数据块(包括公共数据集和完整的 LookML 模型)需要从 GitHub 代码库复制 LookML 模型,才能访问建模表。这些块不可自定义。如需详细了解相关说明,请参阅本页上的使用数据块。
数据收集应用(例如 Segment 和 Snowplow)以相对标准化的格式跟踪事件。这样一来,您就可以创建模板化设计模式(能够进行数据清理、转换和分析),供使用这些应用的任何客户使用。
其他 Web 应用(例如 Salesforce)允许您为内部用户添加自定义字段。当然,这会以不太标准的格式创建数据。因此,我们可以将部分数据模型模板化,以启动并运行分析,但您需要自定义非标准化部分。
此外,还有一些块用于提供一般业务数据洞见。这些块是与数据源无关的经过优化的 SQL 或 LookML 设计模式。例如,许多公司都希望分析客户在一段时间内的生命周期价值。这些模式中包含一些假设,但可以自定义以满足您的特定业务需求。这些模式反映了 Looker 对执行某些类型分析的最佳方式的看法。
您可以在 Looker Marketplace 公开实例的 目录 marketplace.looker.com 中浏览 Looker 块。
安装 Looker 组成块
如需从与 Looker 实例关联的 Marketplace 安装 Looker 组成块,请按照有关从 Marketplace 安装工具的说明进行操作。
如需从 marketplace.looker.com 安装 Looker 组成块,请按照组成块源代码中的说明进行操作。
每个 Looker 组成块都有特定的使用说明。
标准化和自定义
您可能需要自定义块的程度取决于数据库架构的标准化程度。大多数 Looker 块都需要进行一些自定义,以适应您的数据架构。
某些块在同一文件中展示了“探索”和视图。这样做是为了方便查看,但一般来说,您需要将 LookML 的相应部分复制到数据模型中的相应位置。如需了解详情,请参阅 LookML 项目中的文件类型文档页面。
在某些情况下,您可能需要在数据模型中创建新的 LookML 文件来存放示例。
使用数据块
数据块是一种特殊类型的 Looker 组成块,可提供数据集和数据模型。数据块包括公共数据源,例如:
- 人口统计数据:来自美国社区调查的常见人口统计指标,包括州、县、邮政编码制表区,甚至是人口普查区块组级别。
- 天气数据:美国邮政编码级别从 1920 年到前一天的天气报告。此块每天晚上更新。
访问数据块数据集的过程因数据库架构而异。以下部分介绍了如何访问这些数据库中的数据集:
访问 Google BigQuery 中的数据集
如果您已有 Google BigQuery 账号,则可以访问 Looker 的 BigQuery 托管数据集。请跳至本页面的将数据块添加到项目部分。
如果您还没有 Google BigQuery 账号,可以设置免费试用版,然后在 BigQuery 上访问 Looker 的公共数据集。
访问其他数据库中的数据集
Amazon Redshift、MySQL、PostgreSQL 或 Oracle 数据集的转换后数据在 Google Cloud Service 和 S3 中公开提供,因此您可以直接将其导入到您选择的数据库中。
我们还在 GitHub 代码库中提供了每个数据集的数据定义语言 (DDL)。您可能需要针对所选数据库中的数据类型修改 DDL 语句,但这些语句应提供每个表的列类型的概念。
直接从以下某个位置下载数据:
- Google Cloud Service:
_gs://looker-datablocks/_ - S3:
_s3://looker-datablocks/_ - S3 存储分区网址链接:http://looker-datablocks.s3-website-us-east-1.amazonaws.com/
访问 LookML 模型
将我们的某个 GitHub 代码库派生到新的 GitHub 代码库(由 Looker 或贵公司托管),然后您可以在实例中扩展或优化该代码库:
- 人口统计数据(美国社区调查)- https://github.com/llooker/datablocks-acs
- 天气 (GSOD) - https://github.com/llooker/datablocks-gsod
将数据块添加到项目
除了本部分介绍的方法之外,您还可以使用 LookML 优化来构建项目中的视图和“探索”的 LookML。
如需将数据块添加到项目,请执行以下操作:
派生或复制前面提到的 GitHub 代码库,以访问预构建的 LookML。请务必创建新的 GitHub 代码库。
从代码库中移除其他数据库方言文件。Looker 块通常包含 Google BigQuery、Amazon Redshift 和 Snowflake 的文件。例如,如果您要在 Google BigQuery 上设置数据块,则只需要 Google BigQuery 视图文件、Google BigQuery“探索”文件和 Google BigQuery 模型文件。
将模型文件中的连接名称替换为数据块数据所在的数据库连接。如果您使用的是 Google BigQuery 或 Snowflake,请使用您将从中扩展或优化的数据库连接。
所有联接逻辑都存在于每个代码库的
.explore文件中。在设置项目清单后,您将在以下步骤中添加此文件。在您将扩展或优化数据块的主 Looker 项目中,创建一个项目清单文件。
将以下 LookML 添加到项目清单文件,以引用主 Looker 项目中的数据块:
project_name: "<your_project_name\>"
local_dependency: {
project: "<project_name_of_datablock\>"
}
设置注意事项和选项
Google BigQuery:请务必使用正确的一组建模文件。如果您使用的是 Google BigQuery,则可能需要引用文件名中包含 _bq_ 的所有文件。您可能需要将我们的 Google BigQuery 模型方言调整为自己的数据库方言。
扩展程序:我们已将所有项目设置为允许来自“探索”文件的扩展程序,因为模型扩展程序可能会导致多个连接出现问题。
联接派生表:您可能需要查看原生派生表的相关文档。您可以让 Looker 在我们公开提供的数据集上以不同的汇总级别为您编写 SQL,并将其联接到您的模型中。
合并结果集:您还可以选择通过组合查询结果集,将我们数据集中的结果集与您的数据合并。
人口统计数据集的设置示例
通过从我们的 S3 或 Google Cloud Service 存储分区下载原始数据,或连接到 Looker 数据库,来获取对数据的访问权限。
从 LookML 导入人口统计数据块 模型,作为 Looker 实例中的单独项目。
使用
include参数引入视图文件。然后,扩展或优化视图文件,或者利用原生派生表获取“探索”所需的汇总级别的数据。
在我们的示例中,由于人口统计数据的汇总级别与我们的电子商务数据集不同(区块组与邮政编码),因此我们使用内置派生表将统计信息汇总到邮政编码级别。这样可以消除杂乱的多对多联接:
include: "/american_community_survey/bq.explore" view: zipcode_income_facts { derived_table: { persist_for: "10000 hours" explore_source: fast_facts { column: ZCTA5 { field: tract_zcta_map.ZCTA5 } column: income_household { field: bg_facts.avg_income_house } column: total_population { field: bg_facts.total_population } } } dimension: ZCTA5 {} dimension: income_household { hidden: yes }将视图文件联接到模型中:
include: "acs*.view" explore: order_items { join: users { sql_on: ${users.id} = ${order_items.user_id} ;; type: left_outer relationship: many_to_one } join: zipcode_income_facts { sql_on: ${users.zip} = ${zipcode_income_facts.ZCTA5} ;; type: left_outer relationship: many_to_one } }