构建 Looker 扩展程序

本页介绍了如何生成和配置基本 Looker 扩展程序模板,然后您可以向该模板添加功能。

如需创建新的 Looker 扩展程序,您需要执行以下任务:

以下程序展示了如何构建上述元素。

为扩展程序配置 Looker

Looker 扩展程序均需要一个 LookML 项目,其中包括要运行的模型文件和清单文件。

  1. 为您的扩展程序创建一个空白项目

  2. 在新项目中,使用 Looker IDE 中文件浏览器顶部的 + 创建模型文件

  3. 系统会使用 connection 参数和 include 参数生成新模型文件:

    connection 参数中的 connection_name 替换为实例上的有效数据库连接的名称。此扩展程序需要有效的模型文件,因为 Looker 权限数据是通过 LookML 模型访问的。如需管理扩展程序的访问权限,您必须将扩展程序与有效的 LookML 模型相关联,并授予用户访问该模型的权限。模型文件修改完毕后,点击保存更改

    由于您的扩展程序不需要视图文件,因此请删除 include: "/views/*.view.lkml" 参数或在行开头添加 # 字符以作为行注释。将 include: "/views/*.view.lkml" 参数保持原样会导致 LookML 验证器生成错误。

  4. 在 Looker IDE 中,使用文件浏览器顶部的 + 创建项目清单文件

    项目清单文件最初会为空,但在此过程中,您需要将生成的内容复制到将包含 application 参数的项目清单文件中。application 参数为扩展程序提供标签,告知 Looker 在哪里可以找到该扩展程序的 JavaScript,并提供该扩展程序的使用权列表。使用权定义了扩展程序可以访问的 Looker 资源。此扩展程序将无法访问 Looker 资源,除非相应权限列于使用权中。

    不过,您可以暂时让清单文件保持原样,因为在此进程的后面部分,您将复制文件的其余部分。

  5. 为新项目配置 Git 连接

    您可以通过点击 Looker IDE 右上角的 Configure Git(配置 Git)按钮,或使用 Project Configuration 页面(如设置和测试 Git 连接文档页面)访问 Configure Git(配置 Git)页面。

为扩展程序设置项目并将其连接到 Git 后,您就可以生成扩展程序模板文件了。

生成扩展程序模板文件

您可以通过以下两种方式生成扩展程序模板代码文件:

这两个进程都需要 Yarn,因此请确保您已安装 Yarn。

使用 create-looker-extension 创建扩展程序模板

create-looker-extension 实用程序会创建一个基本的 Looker 扩展程序,其中包含所有必要的扩展程序文件和依赖项。然后,您可以以此为基础,添加其他代码和功能以完成您的扩展程序。

要生成扩展程序模板,请执行以下操作:

  1. 运行 create-looker-extension 实用程序,注意将 <extension_name> 替换为您的扩展程序的名称:

    yarn create looker-extension <extension_name>
    
  2. 请确认扩展程序的名称,或提供其他名称,然后选择希望用于构建扩展程序的语言和框架:

    然后,create-looker-extension 实用程序将使用您指定的框架填充基本模板,并将所有生成的文件放入使用扩展程序名称的新目录中:

  3. 进入为扩展程序创建的目录:

    cd <extension_name>
    
  4. 安装扩展程序依赖项:

    yarn install
    
  5. 启动开发服务器:

    yarn develop
    

    该扩展程序现在正在 http://localhost:8080/bundle.js 本地运行并提供 JavaScript。

  6. 您的扩展程序目录中是 manifest.lkml 文件。复制此文件的内容。

  7. 在 LookML 项目中,将 manifest.lkml 的内容粘贴到项目清单文件中:

    点击 Save Changes(保存更改)以保存项目清单文件。

  8. 在 LookML IDE 中,点击 Validate LookML,然后依次点击 Commit Changes & PushDeploy to Production

  9. 使用浏览器的重新加载函数重新加载 Looker。

    在 Looker 的浏览菜单中,您会看到新扩展程序的名称:

  10. 浏览菜单中选择您的扩展程序,以查看其输出。

如果您的管理员已启用增强型导航 实验室功能,则扩展程序会显示在新的增强型左侧导航面板应用部分。

克隆 Git 代码库以创建扩展程序模板

Looker 维护着一个 Git 代码库,这个代码库位于 https://github.com/looker-open-source/extension-examples 下,其中包含多个扩展程序模板。如果您要使用其中某个示例,请前往该示例的代码库,然后按照以下说明操作。

此过程需要 Yarn,因此请确保您已安装 Yarn。

  1. 在本地命令行中,使用以下命令克隆 Git 代码库:

    git clone git@github.com:looker-open-source/extension-examples.git
    
  2. 进入包含您想在系统上安装的模板的目录。在本示例中,我们将使用 React 和 JavaScript“Hello World”扩展程序:

    cd extension-examples/react/javascript/helloworld-js
    
  3. 安装扩展程序依赖项:

    yarn install
    

    您可能需要更新节点版本,或使用节点版本管理器更改节点版本。

  4. 您的扩展程序目录中是 manifest.lkml 文件。复制此文件的内容。

  5. 在 LookML 项目中,将 manifest.lkml 的内容粘贴到项目清单文件中:

    点击 Save Changes(保存更改)以保存项目清单文件。

  6. 点击 LookML IDE 右上角的 Validate LookML,然后依次点击 Commit Changes & PushDeploy to Production

  7. 在您的终端中,启动开发服务器:

    yarn develop
    

    该扩展程序现在在清单文件的 url 参数中指定的本地开发服务器上运行并提供 JavaScript:http://localhost:8080/bundle.js

  8. 使用浏览器的重新加载函数重新加载 Looker。

    在 Looker 的浏览菜单中,您会看到新扩展程序的名称,该名称由项目清单文件中的 label 参数决定:

  9. 浏览菜单中选择您的扩展程序,以查看其输出。

如果您的管理员已启用增强型导航 实验室功能,则扩展程序会显示在新的增强型左侧导航面板应用部分。

修改附加信息

创建基本扩展程序后,您可以修改相应的 JavaScript 或 TypeScript 文件,或者向其中添加代码。

您的扩展程序目录下的 src 目录包含可添加代码的源文件。在上面的示例中,对于 React 和 JavaScript“Hello World”模板,该文件名为 HelloWorld.js。在此文件中修改或添加代码,将会修改或向扩展程序中添加函数。

下面是 React 和 JavaScript HelloWorld.js 文件的输出:


import React, { useEffect, useState, useContext } from 'react'
import { Space, ComponentsProvider, Text } from '@looker/components'
import { ExtensionContext } from '@looker/extension-sdk-react'

export const HelloWorld = () => {
  const { core40SDK } = useContext(ExtensionContext)
  const [message, setMessage] = useState()

  useEffect(() => {
    const initialize = async () => {
      try {
        const value = await core40SDK.ok(core40SDK.me())
        setMessage(`Hello, ${value.display_name}`)
      } catch (error) {
        setMessage('Error occured getting information about me!')
        console.error(error)
      }
    }
    initialize()
  }, [])

  return (
    <>
      <ComponentsProvider>
        <Space p="xxxxxlarge" width="100%" height="50vh" around>
          <Text p="xxxxxlarge" fontSize="xxxxxlarge">
            {message}
          </Text>
        </Space>
      </ComponentsProvider>
    </>
  )
}

在上面的示例中,您可以通过更改一行中的文本来更改扩展程序的文本输出:

setMessage(`Hello, ${value.display_name}`).

请注意,在添加功能时,您可能需要在项目清单文件的 application 参数中修改已授予扩展程序的使用权