Metabase 中的聯結
如何在簡單和自訂問題中使用筆記本編輯器在 Metabase 中聯結表格。
當分析資料時,聯結是生活中的事實,而使用 Metabase,我們盡力讓您盡可能輕鬆地獲得問題的答案,即使這需要一些更複雜的策略。在本文中,我們將介紹如何使用查詢產生器在 Metabase 中聯結表格,並提供有關關聯式資料庫、表格和索引鍵的一些背景資訊,讓您更深入了解聯結的運作方式。
自動聯結
SQL 中的聯結可讓您組合來自多個表格的資料。在可能的情況下,Metabase 會為您建立這些連線,讓人員可以輕鬆地跨多個表格處理資料。您必須在資料模型中定義外部索引鍵關聯性,才能讓 Metabase 偵測到這些關聯性並在資料模型中連線這些表格。如果未設定這些外部索引鍵,管理員可以隨時使用資料模型區段來指定這些關聯性。
我們將在下方深入介紹索引鍵,但現在,讓我們看看實際的隱含聯結。我們將使用 Metabase 隨附的範例資料庫作為我們的資料,以便您可以親自試用。
- 從頂端導覽列中,選取+ 新增。
- 選擇問題。
- 選取原始資料 > 範例資料庫作為您的資料來源。
- 然後選擇
Orders
表格。 - 選取視覺化,Metabase 將顯示
Orders
表格中的訂單清單。 - 按一下螢幕左下角的設定按鈕。Metabase 將滑出表格選項側邊欄,並向您顯示要選擇的欄清單。
可見欄是目前在問題查詢中的欄,在此案例中,包括來自 Orders
表格的所有欄。您可以新增和移除欄,以及變更欄設定(欄設定會因欄的欄位類型而異)。
除了可見欄之外,您還會看到一個名為更多欄的區段。此區段將包含來自另外兩個表格的欄:Products
和 People
。(我們稍後將在文章中說明為何 Reviews
表格明顯缺席)。
Metabase 已「聯結」Orders
表格至 Products
和 People
表格,這可讓您從這些表格新增欄。
例如,從此設定側邊欄中,向下捲動以尋找 Products
表格,然後按一下 CATEGORY
欄位旁邊的 +
,以將其新增至可見欄。您將在可見欄中看到一個新欄 Products → Category
,其中 PRODUCT →
字首表示該欄並非 Orders
表格的原生欄。
藉由按一下 ID 欄中的值並選取檢視詳細資料,您可以檢查以查看哪些表格已連線至該資料。例如,從 Orders
表格中,您可以檢視 Product ID
欄中項目的詳細資料。Metabase 會告訴我們,產品「Lightweight Wool Computer」(ID:146)已連線至 Orders
表格和 Reviews
表格。
請注意,實際產品 ID 值為 146,而非「Lightweight Wool Computer」。Metabase 允許管理員變更欄值顯示方式。
當檢視 Orders
表格時,外部索引鍵 PRODUCT_ID
會顯示來自 Products
表格 TITLE
欄的值。
我們將在下方深入探討索引鍵,但首先讓我們看看明確聯結的範例。
明確聯結範例
讓我們試試看簡單的聯結。我們將按一下 + 新增 > 問題 > 原始資料 > 範例資料庫來建立新問題。我們將選取 Orders
表格。在資料區段中,按一下聯結圖示以新增另一個表格。
如果我們新增 Products
表格,Metabase 將自動填入外部索引鍵關聯性,因為它知道欄位 PRODUCT_ID
包含參考 Products
表格 ID
欄(實體索引鍵)中值的外部索引鍵。
針對 Orders
表格中的每一列,使用 PRODUCT_ID
欄中的值來尋找 Products
表格 ID
欄中具有相同值的對應列,並傳回一個新列,其中包含來自 Orders
和 Products
表格中欄的值。
如果您有興趣,以下是幕後運作的基本 SQL
SELECT
*
FROM
Orders
LEFT JOIN Products ON Orders.PRODUCT_ID = Products.ID
(請注意,如果您將問題轉換為 SQL,您會獲得更複雜的 SQL 查詢,但兩個查詢都會傳回相同的資料。)
您可能已注意到在上述問題模式中,您無法從範例資料庫中的其中一個表格 Reviews
表格新增欄。若要了解原因,我們需要一些關聯式資料庫的背景資訊。
關聯式資料庫
關聯式資料庫(例如 PostgreSQL 和 MySQL)將資料儲存在表格(關聯)中,這些表格通常代表某種類型的實體,例如訂單或產品。這些表格包含欄(實體的屬性)和列(有時稱為記錄)。如果您以前使用過試算表軟體,表格就類似於具有欄和列的工作表。
術語 | 描述 | 範例 |
---|---|---|
表格 | 實體 | 人員、訂單、產品 |
欄 | 該實體的屬性 | 地址、描述、ID |
列 | 該屬性的執行個體 | CA、7、「Lightweight Wool Computer」 |
這些欄中的某些欄包含稱為索引鍵的特殊屬性。
聯結的索引鍵
每個表格都有一個特殊欄,其中包含不同的索引鍵,稱為實體索引鍵或主索引鍵,可唯一識別表格中的每一列。這些欄通常包含 ID 號碼,它們可以由資料庫自動產生,或由應用程式產生(例如,員工 ID)。
第二種類型的索引鍵稱為外部索引鍵,儲存對另一個表格中列之實體索引鍵的參考。若要聯結表格,您將使用外部索引鍵和實體索引鍵來告訴資料庫如何組合來自多個表格的資料。
讓我們使用 Metabase 的資料瀏覽器,透過範例表格查看範例資料庫中的一些索引鍵。從 Metabase 的頂端導覽列中,前往 瀏覽資料,然後按一下範例資料庫。您會看到每個表格的卡片。將滑鼠游標停留在卡片上方以查看其他選項,然後按一下顯示在瞭解此表格旁邊的書籍圖示。
此表格參考頁面包含數個索引標籤
- 詳細資料
- 此表格中的欄位
- 關於此表格的問題
- 此表格的 X 光
選取此表格中的欄位索引標籤,以檢視表格中每個欄位的欄位名稱、欄位類型和資料類型。
Orders
表格包含一個實體索引鍵(亦稱為主索引鍵)、ID
和兩個外部索引鍵:USER_ID
和 PRODUCT_ID
- 外部索引鍵
USER_ID
與People
表格的實體索引鍵ID
相關聯。 - 外部索引鍵
PRODUCT_ID
與Products
表格的實體索引鍵ID
相關聯。
我們可以藉由聯結這些索引鍵來組合來自 Orders
、People
、Products
的資料。聯結只會指示 Metabase 排列來自一個表格的記錄,並使用每一列中的外部索引鍵值,藉由尋找具有相符實體索引鍵值的對應列來組合來自另一個表格的資料。
Metabase 預設為左聯結。
多個聯結
有了表格、索引鍵和聯結的背景資訊後,讓我們看看是否可以將 Orders
表格連結到 Reviews
表格。一般來說:如果我們的起始表格(左表格)未包含參考我們要聯結之表格的外部索引鍵,我們要如何聯結它們?
如果我們嘗試將 Orders
表格聯結到 Reviews
表格,Metabase 將不知道該怎麼辦。
Orders
表格缺少 Reviews
表格的外部索引鍵,這就是 Metabase 未自動連線這兩個表格的原因。
讓我們轉向資料瀏覽器,以找出 Reviews
表格包含哪些外部索引鍵。
因此,這是我們的狀況
Orders
表格具有指向Products
和People
表格的外鍵。Reviews
表格具有指向Products
表格的外鍵。
若要將 Orders
表格連接到 Reviews
表格,我們需要透過 Products
表格來聯結它們。我們將使用查詢產生器問題來指定聯結。以下是我們的問題
請注意,在您指定索引鍵之前,Metabase 會將「先前的結果」顯示為要聯結的左側表格。一旦您告知 Metabase 在 Products.ID = Reviews.Product_ID
上聯結先前的結果,Metabase 將在「聯結資料」區段中顯示左聯結至 reviews 表格的 Products 表格。
如果您視覺化結果,您會看到一個表格,其中包含來自所有三個表格的所有欄位:Orders
、Products
和 Reviews
。請注意,由於單一產品可以有多個評論,因此我們會看到相同產品和訂單的多個列,每個評論各一列。
具有多個條件的聯結
現在讓我們嘗試在聯結中新增多個條件。如果您想要減少重複列,或表達單一條件聯結無法表達的資料相關資訊,這可能會很有用。假設我們想要查看在我們將產品新增到庫存的同一個月份內,針對產品下的所有訂單。
以上述範例作為起點,按一下第一個條件旁邊的藍色 + 按鈕,在同一個聯結中新增另一個條件。您會想要在此處使用內部聯結,因為這只會傳回兩個表格中都符合的值。
如下所示,我們已在 Product ID 和建立日期這兩個欄位上聯結了 Orders
和 Products
表格,因此我們現在可以看到在訂購產品新增至我們庫存的同一個月份內下的所有訂單。
請注意,雖然 CREATED_AT
欄位包含完整的日期和時間資訊,但這些結果指示的是月份符合的位置,而不是確切的時間戳記。
欄位選擇
除了聯結表格之外,我們還可以選擇在問題結果中顯示哪些欄位。在查詢產生器中,您可以選取 Metabase 顯示的欄位。
儲存問題後,您也可以從設定側邊欄中選取可見欄位,如我們在上方所做。
您會注意到 Metabase 也很有幫助地讓來自 People
表格的欄位可供新增,因此您現在可以使用完整的範例資料庫。
盡情在您自己的資料集中聯結表格,並記住:如果您遇到困難,請務必查閱資料瀏覽器,以了解哪些表格具有您需要聯結它們的外鍵。
相關閱讀
下一步:多層級彙總
如何使用查詢產生器提出包含多個部分的問題。