建構 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 連線

    如要存取「設定 Git」頁面,請按一下 Looker IDE 右上角的「設定 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 的內容貼到專案資訊清單檔案:

    按一下「儲存變更」,儲存專案資訊清單檔案。

  8. 在 LookML IDE 中,依序點選「驗證 LookML」、「提交變更並推送」和「部署至正式環境」

  9. 使用瀏覽器的重新載入功能重新載入 Looker。

    在 Looker 主選單的「Applications」(應用程式) 部分,您會看到新擴充功能的名稱。

  10. 從「應用程式」部分選取擴充功能,即可查看擴充功能的輸出內容。

複製 Git 存放區來建立擴充功能範本

Looker 在 https://github.com/looker-open-source/extension-examples 維護含有多個擴充功能範本的 Git 存放區。如要使用其中的範例,請前往該範例的存放區,然後按照接下來的指示操作。

這個程序需要 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
    

    您可能需要更新 Node 版本,或使用 Node 版本管理工具變更 Node 版本。

  4. 擴充功能目錄中會有 manifest.lkml 檔案。複製這個檔案的內容。

  5. 在 LookML 專案中,將 manifest.lkml 的內容貼到專案資訊清單檔案:

    按一下「儲存變更」,儲存專案資訊清單檔案。

  6. 在 LookML IDE 的右上角,依序點選「驗證 LookML」、「提交變更並推送」和「部署至正式環境」

  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 參數中,修改授予擴充功能的權利