SQL 片段

Highlight and save as snippet

SQL 片段是可重複使用的 SQL 或原生查詢程式碼片段。任何具有 SQL 編輯器 權限的人員都可以建立和編輯片段,然後這些片段將可供所有 SQL 作者使用。

例如,如果您經常執行涉及多個表格的查詢,您可以將聯結這些表格的 SQL 程式碼儲存為片段,以便您 (和您組織中的其他人) 可以在多個問題中重複使用該程式碼。

如何建立片段

以下是一個使用 Metabase 隨附的範例資料庫的簡單查詢,其中包含聯結。

SELECT *
FROM orders AS o
LEFT JOIN products AS p
ON o.product_id = p.id

讓我們將 FROM 後面的所有內容儲存為片段,以便在其他查詢中重複使用。

SQL 編輯器

  1. 醒目提示您想要儲存的 SQL 區段。在本例中,我們將選取以下 SQL 程式碼

    orders AS o
    LEFT JOIN products AS p
    ON o.product_id = p.id
    
  2. 在醒目提示的區段上按一下滑鼠右鍵。
  3. 選取 [另存為片段] 以建立片段。將會彈出一個模式視窗,其中包含您醒目提示的 SQL 陳述式。
  4. 編輯、命名和描述您的片段。片段名稱必須是唯一的。按一下 [儲存] 按鈕以建立片段。

在本例中,我們將片段命名為「Orders and Products」。現在任何人都可使用此片段。以下是在 SQL 編輯器中片段的外觀

SELECT *
FROM {{snippet: Orders and Products}}

在 SQL 編輯器中寫作時,您現在可以開始輸入 {{snippet:}},Metabase 將會呈現可用片段的自動完成選項。

注意:如果您在片段中使用別名,您也需要在片段外部觀察這些別名。例如,如果片段將 products AS p 設為別名,則片段外部的程式碼將需要使用別名 p 來參考該表格中的欄 (如 p.column_name 中所示)。

片段選單

Snippet sidebar and insertion

SQL 編輯器側邊欄具有SQL 片段選單,可列出可用的和封存的片段。

按一下 SQL 編輯器右側的片段圖示,位於資料參考書籍圖示和變數 χ 圖示下方。Metabase 將滑出一個側邊欄選單,其中列出可用的片段。

從 [SQL 片段] 選單中,您可以

  • 建立片段。 按一下 SQL 片段側邊欄右上角的 + 以建立新的片段。
  • 預覽片段。 按一下片段右側的向下箭頭,以查看其描述及其 SQL 程式碼的預覽。還有一個編輯片段的選項。
  • 插入片段。 按一下片段的名稱,將其插入到查詢中游標的目前位置。
  • 搜尋片段。如果您已儲存超過 15 個片段,則會在 + 按鈕的左側顯示搜尋圖示 (經典放大鏡)。請注意,搜尋結果僅包含使用者具有權限的片段。SQL 片段資料夾不會填入搜尋結果。
  • 編輯片段。 您可以變更片段的名稱、描述和程式碼。
  • 封存和取消封存片段。 從 [編輯] 模式視窗中,您可以封存片段,這會將片段從 SQL 編輯器中的片段選單和自動完成選項中移除。

編輯片段

您可以隨時編輯片段,方法是從 SQL 編輯器中的 [SQL 片段] 側邊欄選單中選取片段。按一下片段右側的向下箭頭,然後按一下[編輯]。您可以變更 SQL 程式碼、片段名稱和片段描述。

編輯片段是同時對多個問題進行變更的好方法。例如,如果您已將從表格 X、Y 和 Z 提取使用者資料的 SQL 程式碼儲存為片段 User Data,但您需要變更提取該資料的方式 (例如透過新增來自另一個欄或表格的資料),您可以更新片段中的 SQL 程式碼,並且所有使用片段 User Data 的問題都將具有更新後的程式碼。

編輯片段的名稱。變更片段的名稱將會更新每個使用該片段的問題中的片段名稱。它不會破壞任何現有的問題 (基礎 SQL 保持不變),但請注意,其他使用者可能會措手不及地發現您將他們經常使用的片段從「Orders and Products」重新命名為「All the things」,或其他任何名稱。

編輯片段的 SQL。 在這裡我們必須提醒您,強大的力量伴隨著巨大的責任。編輯片段時有一個主要的注意事項,值得特別強調

注意:如果您編輯片段並包含損壞的程式碼,您將會破壞每個使用該片段的問題。 在將程式碼儲存到現有的片段之前,請務必測試您的程式碼。

封存片段

封存片段可以協助將過時或較不相關的片段排除在外。當您封存片段時,該片段不再填入片段自動完成下拉式選單中,並且該片段將不再顯示在 SQL 編輯器側邊欄中的主要片段清單中。

封存片段不會影響任何使用該片段的現有查詢,因此您可以安全地封存片段,而不會影響任何問題。

您可以從片段側邊欄選單存取已封存的片段,方法是按一下側邊欄左下角的 [已封存] 按鈕。

雖然沒有刪除片段的方法,但您可以隨時封存和取消封存片段。

注意:兩個片段不能共用相同的名稱,因為即使片段已封存,該片段仍可能在問題中處於活動狀態。

片段權限

任何具有至少一個已連線資料庫 SQL 編輯器權限的使用者都將能夠查看片段側邊欄,並且將能夠建立、編輯和封存或取消封存任何和所有片段 — 即使片段的目的是與使用者缺乏 SQL 編輯存取權的資料庫一起使用。

某些方案包含其他功能,可將片段組織到資料夾中,並設定這些資料夾的權限。請參閱我們的 關於 SQL 片段資料夾和權限的文件

深入瞭解

閱讀其他 Metabase 版本的文件。