为 Looker Marketplace 开发自定义区块

本页介绍了如何创建可添加到 Looker Marketplace 中供其他 Looker 用户访问的自定义块

请注意,您必须是 Looker 合作伙伴网络的成员或 Looker 客户,才能向 Looker Marketplace 提交内容。

如需了解已构建且可供使用的 Looker Blocks,请参阅 Looker Blocks 文档页面。如需了解如何自定义从 Marketplace 安装的区块,请参阅自定义 Looker Marketplace 区块文档页面。

如需开发区块并通过 Looker Marketplace 将其提供给所有 Looker 用户,请按照本页面中所述的步骤操作:

  1. 设置数据源并将其连接到 Looker
  2. 创建项目并添加所需的文件
  3. 使您的块可供访问
  4. 提交您的块以供 Looker 审核

设置数据源并将其连接到 Looker

块是数据模型,因此在专为特定、可轻松重复的数据集设计时效果最佳。如果用户的数据集与块中的架构、表和字段名称不匹配,就会发生大多数块安装错误。

  • 如果您要为特定数据集(如 Google Analytics [分析] 数据)构建块,请记下您对该数据集所做的任何设置或自定义。如有可能,请尽量减少此类自定义,以简化用户的安装过程。在 README 文件中提供具体说明。
  • 如果您要为一般分析模式(例如同类群组保留)构建块,请记下您希望用户的数据集包含哪些字段。您的用户很有可能拥有与数据集中不同的架构、表和字段名称。为表和字段名称使用 LookML 常量,并在 README 文件中告知用户他们需要更新哪些字段。

确定数据源后,请将数据源关联到 Looker,以便开始建模。如果您需要更改任何默认连接设置,请在 README 文件中注明。

创建项目并添加所需的文件

创建一个项目来表示您的屏蔽设置。请考虑使用 block-<database_dialect>-<role> 等命名惯例(例如 block-redshift-admin)。

接下来,在项目中创建以下文件:

  • 清单文件,用于定义项目名称、连接名称和任何其他常量
  • 每个视图都有一个视图文件
  • 每个探索都有一个探索文件
  • 一个模型文件,其中包含项目中的所有视图文件、探索文件和 LookML 信息中心文件
  • 至少三个 LookML 信息中心文件
  • marketplace.json 文件,其中包含将显示在此屏蔽的 Marketplace 产品详情中的信息
  • LICENSE 文件包含 MIT 开源许可的文本
  • 一份 README 文件,其中详细说明了设置说明和选项

安装该版块的用户可以在单独的 refinements.lkml 文件优化基本探索、视图和信息中心。以下部分更详细地介绍了每种必需的文件类型:

创建清单文件

为您的项目创建一个清单文件。清单文件应以项目名称开头,然后定义一些 LookML 常量以供用户更改。例如,您应将 Looker 连接名称定义为包含 export: override_required 的常量,以便用户将其替换为自己的连接名称。

以下是一个示例清单文件:

project_name: "block-ga-360"

################# Constants ################

## Used in google_analytics_block.model connection param
constant: CONNECTION_NAME {
  value: "looker-private-demo"
  export: override_required
}

## Used in ga_sessions.view sql_table_name
constant: SCHEMA_NAME {
  value: "bigquery-public-data.google_analytics_sample"
  export: override_optional
}

constant: GA360_TABLE_NAME {
  value: "ga_sessions_*"
  export: override_optional
}

正在创建视图和探索文件

为每个视图创建一个 view.lkml 文件。如果用户的架构和表名称可能与您的不同,请务必在清单文件中将架构和表名称定义为constants,以便下载相应块的用户可以更新自动生成的清单文件中的架构和表名称。然后,在视图的 sql_table_name 参数中引用这些常量。

以下是 view.lkml 块文件的示例:

view: user_facts {

  # SCHEMA_NAME and GA360_TABLE_NAME are constants
  sql_table_name: @{SCHEMA_NAME}.@{GA360_TABLE_NAME} ;;

  dimension: clientID {
    type: string
    sql: ${TABLE.clientId}
  }

}

接下来,创建一个或多个 explore.lkml 文件。确保每个探索文件都包含该探索所需的视图。谨慎设计您的“探索”,使其包含逻辑联接、演练和精选的“探索”页面。其他用户在 Marketplace 中安装了该版块后,企业用户应该就可以轻松访问并开始分析数据。

您可以在我们的社区论坛Looker 最佳实践中找到建模最佳实践的常规列表,例如最佳实践:LookML 注意事项最佳实践:编写可持续、可维护的 LookML

下面是一个 explore.lkml 文件示例:

include: "/Google_Analytics/Sessions/*.view.lkml"

explore: future_input {
  view_label: "Audience Traits"
  label: "BigQuery ML Customer Likelihood to Purchase"
  description: "This explore allows you to slice and dice likeliness to purchase scores by different customer traits to see how they differ. The default range of data you are looking at is in the past 30 days"
  join: future_purchase_prediction {
    type: left_outer
    sql_on: ${future_purchase_prediction.clientId} = ${future_input.client_id} ;;
    relationship: one_to_one
  }
}

创建模型文件

创建一个包含项目中的所有视图、探索和信息中心文件的模型文件。确保从清单文件中引用连接名称作为 LookML 常量

请至少定义一个数据组以设置缓存政策。

下面是一个模型文件的示例:

connection: "@{CONNECTION_NAME}"

include: "/views/*.view.lkml"
include: "/explores/*.explore.lkml"
include: "/dashboards/*.dashboard.lookml"

datagroup: nightly {
  sql_trigger: SELECT TIMEZONE('US/Pacific',GETDATE())::DATE;;
}

创建 LookML 信息中心文件

若要加入 Looker Marketplace 中,每个区块都必须包含至少三个 LookML 信息中心,以便提供有意义且实用的分析。信息中心应该美观、实用且全面,不应包含任何经过模糊处理的数据。

虽然 LookML 信息中心没有硬性设计要求,但 Looker 建议遵循以下常规设计最佳实践:

  • 整个信息中心采用一致的调色板
  • 至少 7 个图块
  • 至少三种不同的可视化类型(例如单个值、条形和直线)

为 Blocks 开发信息中心时,不支持自定义可视化图表。请改用 Looker 的原生可视化类型

如需详细了解如何自定义 LookML 信息中心和在 LookML 信息中心内的可视化图表,请参阅信息中心参数信息中心元素参数文档页面。有关 LookML 信息中心文件的示例,请参阅 Redshift 管理块中的 Redshift 管理员 LookML 信息中心文件

创建 marketplace.json 文件

创建 marketplace.json 文件,以提供商品详情在 Marketplace 中应如何显示的信息。Looker Marketplace 中的每个区块都必须提供此额外信息,以帮助用户选择最符合其需求的区块。您的 marketplace.json 文件应包含:

  • “市场”中的“label”“category_label”和“branding”字段
  • LookML constants列表(例如连接名称),需要由用户填写以填充模型 LookML

以下是 Google BigQuery 性能块的 marketplace.json 文件示例:

{
  "label": "Google BigQuery Performance",
  "category_label": "Models",
  "branding": {
    "image_uri": "https://marketplace-api.looker.com/block-icons/google-cloud.png",
    "tagline": "This Block provides a comprehensive overview of all cost and performance data for one or multiple BigQuery projects, enabling users to effectively monitor BigQuery usage down to a per user level. It can be used to set up alerts to long running or high cost queries."
  },

  "constants": {
    "CONNECTION_NAME": {
      "label": "Connection Name",
      "value_constraint": "connection"
    },
    "SCHEMA_NAME": {
      "label": "Schema Name"
    },
    "AUDIT_LOG_EXPORT_TABLE_NAME": {
      "label": "Audit Log Export Table Name",
      "description": "The table name of your BigQuery Optimization data (typically cloudaudit_googleapis_com_data_access_*)."
    }
  },
  "models": [
    {
      "name": "block_bigquery_optimization_v2",
      "connection_constant": "CONNECTION_NAME"
    }
  ]
}

以下屏幕截图显示了将由此 marketplace.json 文件生成的 Marketplace 产品详情。

Marketplace 产品详情示例。

  • "label" 字段用于控制代码块的标题。在本示例中,就是 Google BigQuery 性能
  • "tagline" 字段用于控制 Marketplace 产品详情的第一段落。
  • "image_uri" 字段用于控制 Marketplace 产品详情左上角显示的图片。在此示例中为 Google Cloud 徽标。
  • 在安装过程中,"constants" 字段会提示用户在 Marketplace 界面中填充常量。在本例中,marketplace.json 文件中列出了三个常量(CONNECTION_NAMESCHEMA_NAMEAUDIT_LOG_EXPORT_TABLE_NAME),因此系统会提示用户在安装前为这三个字段指定值。

创建 LICENSE 文件

所有 Looker Blocks 都必须根据 MIT 开源许可获得授权。将此许可的内容包含在名为 LICENSE 的文件中。有关 LICENSE 文件的示例,请参阅 Redshift 管理员块许可文件

创建 README 文件

README 文件应包含有关如何实现该代码块的所有说明,并且应明确指出需要进行任何自定义的位置,例如在自动生成的清单文件 (#the_autogenerated_manifest_file) 或优化文件中。如需查看 README 文件的示例,请参阅 Redshift Admin Block README 文件

关于 README 的注意事项:

  • 用户需要什么数据源?他们是否需要支付订阅费用?
  • 数据库用户应拥有哪些权限?
  • 需要哪些 Looker 连接设置?
  • 屏蔽字段名称与用户数据集中的字段名称匹配吗?如果不是,您的用户应该更改什么?

自动生成的文件

当用户安装您的块时,其 Looker 实例会创建一个新的 Looker 项目,并将项目文件作为只读文件。它还会自动为您的用户生成以下文件:

  • 包含 Marketplace 商品详情信息的只读 marketplace_lock.lkml 文件
  • 引用 marketplace_lock.lkml 中的商品详情的清单文件
  • 一个 refinements.lkml 文件,其中包含您的街区的所有视图和探索
  • 一个只读模型文件,其中包含块和 refinements.lkml 文件中的模型文件

从 Looker Marketplace 安装您的块的用户可以使用 refinements.lkml 文件优化您的 LookML,甚至可以添加新的 LookML 文件。如需详细了解用户如何自定义您的屏蔽设置,请参阅自定义 Looker Marketplace 屏蔽设置文档页面。

自动生成的清单文件

借助自动生成的清单文件,安装该块的用户可设置连接名称等变量。您可以在自动生成的清单文件中修改在块清单文件中定义的 LookML 常量,也可以让用户在块下载界面中设置这些常量。

优化文件

借助自动生成的 refinements.lkml 文件,安装您屏蔽的用户可以优化定义了该屏蔽设置的视图和探索。下载块的用户会在此位置执行大量 LookML 自定义操作,以适应其用例。

以下是自动生成的 refinements.lkml 文件的示例:

include: "//ga360-v2/**/*.view.lkml"
include: "//ga360-v2/**/*.explore.lkml"

\# Use LookML refinements to refine views and explores that are defined in the remote project.
\# Learn more at: https://docs.looker.com/data-modeling/learning-lookml/refinements
\#
\#
\# For example we could add a new dimension to a view:
\#     view: +flights {
\#       dimension: air_carrier {
\#         type: string
\#         sql: ${TABLE}.air_carrier ;;
\#       }
\#     }
\#
\# Or apply a label to an explore:
\#     explore: +aircraft {
\#       label: "Aircraft Simplified"
\#     }
\#

使屏蔽项目可访问

可公开访问的 GitHub 代码库上托管您的块 LookML。

所有 Looker Blocks 都必须根据 MIT 开源许可获得授权,并且许可文本必须包含在代码库中的许可文件中。

提交组成要素以供审核

在您的块准备好提交后,请按照向 Looker Marketplace 提交内容中的说明为块创建支持文档,将您的块提交给 Looker 团队进行审核,然后将块发布到 Looker Marketplace。