为 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

块是数据模型,因此,它们在针对特定的特定可重复数据集进行设计时效果最佳。大多数块安装错误发生在用户的数据集与块中的架构、表和字段名称不匹配时。

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

确定数据源后,请将数据源连接到 Looker,即可开始建模。如果您需要更改任何默认连接设置,请在 README 文件中做出备注。

创建项目并添加所需文件

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

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

  • 清单文件,用于定义项目名称、连接名称和任何其他常量
  • 每个视图都有一个视图文件
  • 每次探索的探索文件
  • 一个模型文件,其中包含项目中的所有视图文件、探索文件和 LookML 信息中心文件
  • 至少三个 LookML 信息中心文件
  • 一个 marketplace.json 文件,其中包含将在“市场”中为此屏蔽规则显示的信息
  • 包含 MIT 开源许可文本的许可文件
  • 详细说明设置说明和选项的 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"
  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 Admin LookML 信息中心文件

创建 marketplace.json 文件

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

  • Marketplace 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 BQ 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 BQ Optimization data (typically cloudaudit_googleapis_com_data_access_*)."
    }
  },
  "models": [
    {
      "name": "block_bigquery_optimization_v2",
      "connection_constant": "CONNECTION_NAME"
    }
  ]
}

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

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

创建许可文件

所有 Looker Blocks 都必须获得 MIT 开源许可的许可。将来自此许可的文字包含在名为 LICENSE 的文件中。有关 LICENSE 文件的示例,请参阅 Redshift Admin Block 许可文件

创建 README 文件

README 文件应包含关于应用代码块的所有说明,并且应明确指出需要在何处进行自定义,例如在自动生成的清单文件 (#the_autogenerated_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 Blocks 都必须获得 MIT 开源许可的许可,而且许可文本必须包含在代码库的 LICENSE 文件中。

提交屏蔽设置以供审核

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