为 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 文件,其中包含要在“市场”中针对此版块显示的信息
  • 包含 MIT 开源许可文本的 LICENSE 文件
  • 一份 README 文件,其中详细介绍了设置说明和选项

安装组成屏蔽设置的用户可以在单独的 refinements.lkml 文件优化基本“探索”、数据视图和信息中心。下面几部分将详细介绍每种必需的文件类型:

创建清单文件

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

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

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 文件。如果用户的架构和表名称可能与您的架构和表名称不同,请务必在清单文件中将架构和表的名称定义为常量,以便下载块的用户能够更新自动生成的清单文件中的架构和表名称。然后,在视图的 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"

  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 仍建议遵循以下常规设计最佳实践:

  • 整个信息中心采用一致的调色板
  • 至少七个卡片
  • 至少提供三种不同的可视化类型(例如,单个值、条形和折线图)

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

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

创建 marketplace.json 文件

创建 marketplace.json 文件,提供商家信息在 Marketplace 中的显示方式。Looker Marketplace 中的每个屏蔽设置都必须提供这些额外信息,以帮助用户选择最符合其需求的屏蔽设置。您的 marketplace.json 文件应包含:

  • 市场 labelcategory_labelbranding 字段
  • 用户必须填写的 LookML 常量列表(例如,连接名称)才能填充 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 Admin Block LICENSE 文件

创建 README 文件

README 文件应包含实现块的所有指令,并应明确指出需要执行哪些自定义操作,例如在自动生成的清单文件 (#the_auto 自动生成的_manifest_file) 或优化文件中。如需查看 README 文件的示例,请参阅 Redshift Admin Block README 文件

关于 README 的注意事项:

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

自动生成的文件

用户安装您的屏蔽名单后,他们的 Looker 实例就会以项目文件的形式创建一个新的 Looker 项目,并将项目文件设为只读文件。它还会自动为您的用户生成以下文件:

  • 包含市场商品详情信息的只读 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"
\#     }
\#

使屏蔽项目可供访问

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

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

提交屏蔽规则以供审核

在您的屏蔽设置可供提交后,请按照向 Looker Marketplace 提交内容中的说明为您的屏蔽设置创建支持文档,并将屏蔽设置提交给 Looker 团队进行审核,然后将该屏蔽设置发布到 Looker Marketplace。