自定义 Looker Marketplace 块

Looker Blocks™ 是适用于常见分析模式和数据源的预构建数据模型。本页介绍了开发者如何自定义从 Looker Marketplace 安装的 Looker 块。Looker Marketplace 是一个集中位置,可用于查找、部署和管理许多类型的 Looker 内容,例如应用、可视化图表和插件。

如需详细了解所有可用的 Looker 块(包括目前无法从 Looker Marketplace 获取的块),以及其他块自定义方法,请参阅 Looker 块文档页面。

从 Looker Marketplace 安装和管理 Looker 块的要求

您必须先让 Looker 管理员启用以下功能,然后才能安装和使用 Looker Marketplace 中的某些块:

  • 如果您要通过 Looker Marketplace 安装块,您的 Looker 管理员必须启用 Marketplace 功能。
  • 如果特定块包含 local_dependency 参数,您的 Looker 管理员还必须启用本地项目导入 实验室功能。以下代码块包含 local_dependency 参数:

    • 数字营销分析
    • 销售分析
    • 网站分析

用户必须拥有 developmanage_modelsdeploy 权限,才能安装和管理 Marketplace 中的软件包。

如需了解如何从 Looker Marketplace 安装管理 Looker 块,请参阅 Looker Marketplace 文档页面。

访问 Marketplace 块的 LookML

基于使用精炼项的项目的块会从 Marketplace 安装为单个可修改的 CONFIG 项目,该项目会远程导入 CORE 项目,其中包含所有 LookML 代码和常量参数化。

从 Marketplace 安装某个版块后,您可以通过点击项目列表中的项目名称,从 Develop 菜单访问该项目。购物平台精细化参数块的名称通常以 marketplace_ 开头,后跟商品详情 ID。

虽然您无法直接修改版块的只读 CORE 项目,但在自定义版块的 CONFIG 文件时,您可能需要将版块的只读 CORE 文件中定义的 LookML 用作参考。您可以通过在 IDE 中前往代码块的项目文件,然后在 IDE 文件浏览器中展开 imported_projects 目录来查看代码块的 CORE 文件。

区块文件结构

当您安装构建用于优化的块时,系统会在块项目的 CONFIG 部分自动创建以下文件:

文件名 访问 函数
<model_name>.model.lkml 对所有用户而言是只读的 与块安装相关联的虚拟模型文件;用于处理从块的 CORE 项目导入任何模型。卸载或更新某个分块时,系统会删除关联的模型文件,以防止多个分块安装之间发生模型冲突。
manifest.lkml 可供拥有 develop 权限的用户修改 描述项目及其外部依赖项。包含相应功能块安装的 Marketplace 商品详情 ID,有助于通过 marketplace 关键字远程导入相应功能块的 CORE 项目文件。
marketplace_lock.lkml 对所有用户而言是只读的 包含对清单文件中用于处理 CORE 项目远程导入的 marketplace_ref 关键字的引用。提供与安装相关的具体商品详情、版本和型号信息。包含有关在安装期间配置的常量的信息(可通过 Marketplace 界面中的管理选项进行更新)。
refinements.lkml 可供拥有 develop 权限的用户修改 让开发者可以优化导入的 CORE 项目文件中定义的视图和探索。

自定义购物平台版块

启用开发模式,以对代码块的可修改文件进行自定义。

如果您拥有 develop 权限,则可以在版块的 CONFIG 项目的 refinements.lkml 文件中自定义 LookML。您可以优化已在该版块的 CORE 项目中定义的视图和探索,甚至可以添加 CORE 项目中尚未定义的新视图和探索。在其他 LookML 项目中,您可以使用 LookML 优化执行的任何操作,都可以在该分块的 refinements.lkml 文件中执行。精炼后的 LookML 与原始 LookML 组合后,其行为就像是对象的原始 LookML。

您还可以更改 CONFIG 项目的 manifest.lkml 文件,以指定需要为该块捕获的任何依赖项。

您不必仅修改这些文件即可实现所需的自定义。您还可以在 CONFIG 项目中创建新文件,只需确保在 refinements.lkml 文件中include 所有新文件即可。

自定义“优化”文件

如果您拥有 develop 权限,则可以向 CONFIG 项目添加自定义 LookML,以混合使用其他数据或更改版块的核心分析模型。您可以创建新视图并将其联接到现有探索,定义新字段或重新定义现有字段,或者根据需要应用标签,以便为您要提供的分析创建模型。如果您在 CONFIG 项目中创建了新文件,则必须在“优化”文件中include 这些文件。

例如,假设您已安装一个块,并且其 refinements.lkml 文件包含以下内容:

include: "//<listing_id>/**/*.view.lkml"
include: "//<listing_id>/**/*.explore.lkml"

其中 listing_idmanifest.lkml 文件中的 listing 参数的值。

您可以使用精炼项向名为 flights 的视图添加新维度:

include: "//<listing_id>/**/*.view.lkml"
include: "//<listing_id>/**/*.explore.lkml"

view: +flights {
  dimension: air_carrier {
    type: string
    sql: ${TABLE}.air_carrier ;;
  }
}

或者,您也可以为名为 aircraft 的探索应用标签,使其在界面中显示为简化版飞机

include: "//<listing_id>/**/*.view.lkml"
include: "//<listing_id>/**/*.explore.lkml"

explore: +aircraft {
  label: "Aircraft Simplified"
}

refinements.lkml 文件会自动包含在该分块的“虚拟”模型文件中,该文件实质上会从 CORE 项目导入模型。

如需详细了解此高级主题,请参阅 LookML 优化文档。

自定义可修改的清单文件

在使用优化的块中,CORE 和 CONFIG 项目都有清单文件;不过,只有 CONFIG 项目的清单文件可修改。

您可以修改 CONFIG manifest.lkml 文件,将项目参数添加到 CORE 项目的清单文件中已有的参数中。例如,您可以添加 local_dependency 来将您的代码块联接到同一 Looker 实例中的另一个代码块。

您必须先让 Looker 管理员启用本地项目导入 实验室功能,然后才能使用或基于包含 local_dependency 参数的块进行构建。

更新常量的值

该代码块的常量在导入的 CORE 项目的清单文件中定义。如需替换常量的值(如果允许),必须在配置期间在 Marketplace 界面中执行此操作,或者通过更新代码块执行此操作。如需更新屏蔽对象,用户必须拥有 developmanage_modelsdeploy 权限。

如需通过更新代码块来替换常量的值,请执行以下操作:

  1. 在 Looker Marketplace 中,前往要更新的广告连播。
  2. 点击管理按钮。
  3. 点击要更新的版块名称旁边的齿轮图标。这会打开屏蔽设置窗口。
  4. 根据需要更改常量值。
  5. 点击更新以关闭屏蔽程序配置窗口,并使用所做的更改更新屏蔽程序。

您的更改会反映在已安装项目中的只读 marketplace_lock.lkml 文件中。

保留使用 extends 的 Marketplace 版块中的自定义设置

Looker Marketplace 中提供的一些块由使用 LookML extends 的项目组成。Looker 将将 Looker 21.8 或更高版本上实例的所有 Marketplace 块转换为利用 LookML 优化的项目结构,并将移除对基于 extends 的块的支持。

Looker 建议您在 Marketplace 中的任何组成块推出基于精细调整的版本后,将其安装到您的实例中,以替换使用扩展构建的组成块。虽然此替换过程很简单(您可以从 Looker Marketplace 中的“块”列表中安装新的“优化”块,并在 Looker Marketplace 的管理页面上卸载原始的“扩展”块),但它不会保留对使用“扩展”构建的块可能进行的任何自定义。此外,Looker 也不会将原始版块中的任何 Looker 内容或基于这些内容的功能(信息中心、探索、定期提交的内容、提醒)转移到新版块。

本部分介绍了如何保留对使用扩展的项目构建的块的任何自定义,否则从头开始复制这些自定义会很困难或很耗时。

如需保留您对块的个性化设置,具有安装和管理 Marketplace 中的软件包权限的用户必须:

  1. 更新原始分块的 CONFIG 项目以准备进行迁移
  2. 从 Looker Marketplace 安装新版块
  3. 将自定义内容转移到新的 Marketplace 版块
  4. 根据原始屏蔽内容重新创建 Looker 内容
  5. 卸载使用 extends 构建的块的版本

更新自定义块以准备迁移

本部分介绍了如何更新使用“extends”构建的块中的关键项目文件,以便将块的自定义内容复制到基于“refinement”的新版块。基于使用 extends 的项目的块会从 Marketplace 安装为只读 CORE 项目和可修改的 CONFIG 项目。

  1. 通过以下任一方式从开发部分前往该模块的 CONFIG 项目:

    • 点击 Projects(项目)选项,然后点击项目名称。
    • 在项目列表中,点击该模块的 CONFIG 项目的名称。

    CONFIG 项目名称通常以 _config 结尾,而 CORE 项目的名称通常没有后缀。

  2. 打开项目的模型文件,该文件可能如下所示:


    explore: ga_sessions_config {
      extends: [ga_sessions_core]
      extension: required
      join: user_sales_data {
        sql_on: ${user_sales_data.full_visitor_id} = ${ga_sessions.full_visitor_id} ;;
      }
      join: sales__by__category {
        sql: LEFT JOIN UNNEST(${user_sales_data.sales_by_category}) as sales__by__category;;
      }
    }

    explore: future_input_config {
      extends: [future_input_core]
      extension: required
      join: future_purchase_prediction {
        type: left_outer
        sql_on: ${future_input.full_visitor_id} = ${future_purchase_prediction.full_visitor_id} ;;
        relationship: one_to_one
      }
    }

  1. 开发模式下:

    1. 删除整个 extendsextension 行。
    2. explore 名称中删除 _config
    3. + 附加到 explore 名称的前面。

    上一个模型文件示例如下所示:


    explore: +ga_sessions {
      join: user_sales_data {
        sql_on: ${user_sales_data.full_visitor_id} = ${ga_sessions.full_visitor_id} ;;
      }
      join: sales__by__category {
        sql: LEFT JOIN UNNEST(${user_sales_data.sales_by_category}) as sales__by__category;;
      }
    }

    explore: +future_input {
      join: future_purchase_prediction {
        type: left_outer
        sql_on: ${future_input.full_visitor_id} = ${future_purchase_prediction.full_visitor_id} ;;
        relationship: one_to_one
      }
    }

  1. 复制并保留此文件的内容,以备后续步骤使用。

安装新的 Marketplace 版块

基于使用精炼项的项目的块会从 Marketplace 安装为单个可修改的 LookML 项目,该项目会远程导入包含所有 LookML 和常量参数化的项目。

  1. 选择 Looker 菜单栏上的商店图标,前往 Looker Marketplace。
  2. 点击基于优化项的新购物平台广告展示区域列表。此代码块的名称与使用 extends 构建的现有代码块相同。
  3. 点击安装以安装新分块。安装此块后,您会在 Looker Marketplace 的管理页面上看到两个完全相同的商家信息。

将自定义内容转移到新的购物平台版块

本部分介绍了如何将您对原始“extends”块所做的更新转移到新的“refinements”块。

  1. 开发部分,通过以下任一方式打开新代码块的项目:

    • 点击 Projects(项目)选项,然后点击项目名称。
    • 在项目列表中,点击相应分块的项目名称。

    购物平台精细化条件块的名称通常以 marketplace_ 开头,后跟商品详情 ID。

  2. refinements.lkml 文件中,粘贴原始(extends)代码块的模型文件中的更新内容。请务必保留优化文件中已有的所有 include 语句。

根据原始屏蔽内容重新创建 Looker 内容

采用基于优化的 Marketplace 版块的最后一步是卸载基于扩展的版块的原始版本。某些基于扩展的块包含预构建的 LookML 信息中心和探索。如果用户根据原始“extends”块中定义的任何 LookML 信息中心创建了提醒定期提交,那么在从 Looker Marketplace 中卸载该块后,这些提醒或定期提交将分别被停用或失败。

您必须在新(优化)版块的 LookML 信息中心内重新创建这些提醒或定期提交。具有时间表提醒相应权限的 Looker 管理员和用户可以使用管理部分中的提醒和时间表页面搜索“(扩展)”版块信息中心的名称,然后根据需要在“(优化)”版块的对应信息中心中创建新提醒或安排定期提交。

此外,您还必须根据需要修改引用原始“扩展”块的探索或 LookML 信息中心的任何其他 Looker 内容,使其指向新的“优化”块。

卸载原始屏蔽程序

如需卸载使用 extends 构建的块的版本,请执行以下操作:

  1. 选择 Looker 菜单栏上的商店图标,前往 Looker Marketplace。

  2. 在 Looker Marketplace 中,选择左侧导航栏中的管理,以打开管理页面。

  3. 管理页面上,点击垃圾桶图标以卸载原始 (extends) 代码块。您可以通过查看版本号来区分扩展块列表和优化块列表。extends 块将比 refinements 块低一个主要版本。例如,extends 块可能是版本 1.0.4,而 refinements 块可能是版本 2.0.0

卸载该块后,Looker 实例的左侧导航栏中将不再显示原始(扩展)块列表,探索部分中将不再显示其探索,LookML 信息中心文件夹中将不再显示其 LookML 信息中心,并且基于该块的 LookML 信息中心的所有提醒或定期提交内容都将分别停用或失败。

排查屏蔽问题

如果购物平台块显示错误,则可能是因为您的架构与该块的结构不匹配。

您可能还需要检查在安装块时提供的常量(表示块的连接、数据库或架构)是否已正确定义。为此,您可以执行以下操作:

  1. 选择 Looker 菜单栏上的商店图标,前往 Looker Marketplace。

  2. 在 Looker Marketplace 中,选择左侧导航栏中的管理,以打开管理页面。

  3. 管理页面上,点击相应屏蔽程序的齿轮图标以查看其配置设置。

  4. 更新配置窗口中,确认屏蔽程序已正确配置。进行任何更改后,点击更新以保存更新并关闭屏蔽程序配置窗口。