將 Metabase 與 MongoDB 搭配使用

在 Metabase 中視覺化與探索 MongoDB 資料。執行 MongoDB 原生查詢並分析非表格資料。

在本教學課程中,我們將使用免費的 MongoDB Atlas 叢集與 Metabase Cloud 的免費試用版,建立一個儀表板來探索 MongoDB 範例資料。

Better dashboard

步驟 1:建立 MongoDB Atlas 叢集

  1. 前往 MongoDB Atlas 並建立帳戶。

  2. 建立免費的 M0 叢集。勾選「預先載入範例資料集」方塊,將範例資料載入您的叢集 — 我們將在本教學課程中使用它。

    MongoDB conenction string

如果您在建立叢集後看到叢集連線彈出視窗,您可以先關閉它。在叢集佈建期間,讓我們建立一個 Metabase Cloud 執行個體,以連線到叢集。

步驟 2:設定 Metabase

  1. https://metabase.dev.org.tw/cloud 開始。系統會要求您建立 Metabase Store 帳戶。
  2. 選取 Starter 方案。別擔心:無論您選取哪個方案,您都會獲得 14 天免費試用期,而且您可以隨時變更或取消您的方案。
  3. 選取 Metabase 的別名與區域

    別名:您將用來登入 Metabase 的 URL。

    區域是您的 Metabase 將託管的區域 (您可以稍後變更它)。

  4. 設定 Metabase 約需 2 分鐘。(同時,您可以設定 Atlas 叢集的網路存取權)。一旦您的 Metabase 準備就緒,系統會要求您為這個新的 Metabase 建立一個獨立帳戶(與您的 Metabase Cloud store 帳戶分開)。

您可以在 Metabase 設定畫面中輸入您的資料庫詳細資訊,但我們先跳過這個步驟,稍後再新增資料庫。

步驟 3:設定 Atlas 叢集以允許來自 Metabase 的連線

為了確保 Metabase 可以讀取您叢集中的資料,您需要允許從 Metabase 使用的 IP 位址進行存取。

在您的 Atlas 叢集設定中,前往網路存取並新增對應於您所選區域的 Metabase Cloud IP 位址

IP allowlist

步驟 4:取得 MongoDB 連線資訊

若要將 Metabase 連線到 MongoDB,您需要取得連線字串或連線參數。對於 Atlas 叢集中的資料庫,連線字串選項更方便。

  1. 在您的 Atlas 叢集介面中,按一下連線,然後選取 驅動程式
  2. 「在您的應用程式程式碼中新增連線字串」 中尋找連線字串 MongoDB 連線字串

    此連線將適用於整個 Atlas 叢集,但 Metabase 需要特定的資料庫才能連線。

  3. 編輯連線字串以在 / 之後新增資料庫名稱

    mongodb+srv://metabot:metapass@metabase-magic.a5ej7.mongodb.net/sample_mflix?retryWrites=true&w=majority&appName=metabase-magic
    

在這裡,我們使用了 Atlas 叢集中預先載入的 sample_mflix 資料庫。

步驟 5:將 Metabase 連線到 MongoDB

您可以在設定 Metabase 時將 Metabase 連線到 MongoDB,或在 Metabase 初始化後前往管理設定 → 資料庫來連線您的資料庫。

在連線介面中,按一下「貼上連線字串」,然後貼上連線字串(記得將 <password> 預留位置取代為您的密碼!)

Metabase connection

如果您在連線時遇到任何問題,請查看我們的 MongoDB 連線文件連線疑難排解指南

步驟 5:查看您的資料

一旦 Metabase 連線到您的 MongoDB,您就可以開始在 Metabase 中探索您的資料。如果您仍然處於管理員模式,請按一下右上角的退出管理員

在左側導覽側邊欄中,前往瀏覽 → 資料庫,尋找您新新增的資料庫及其中的集合。如果您連線到 sample_mflix 資料庫,您應該會看到 Movies、Theaters、Comments 等集合。

Movies database

按一下集合以查看其內容

view tables

Metabase 將以表格格式呈現 MongoDB 文件。從此檢視中,您可以開始探索資料。例如,嘗試按一下標頭並篩選資料

Filter by header

若要使用更複雜的文件,您可以使用 Metabase 的查詢產生器。

步驟 6:建立查詢,無需撰寫程式碼

Metabase 隨附圖形化查詢產生器,可讓您探索資料,無需撰寫任何程式碼。

若要開始使用查詢產生器,請按一下右上角的「+ 新增」按鈕,然後選取「問題」。Metabase 中的「問題」是我們所謂的查詢及其視覺化。

Metabase 將剖析 MongoDB 資料的 JSON 結構,並讓您篩選、摘要、聯結與排序個別欄位。

例如,我們可以利用 Atlas 叢集中預先載入的範例電影資料,查看人們是否對新電影的評分低於舊電影。Movies 集合包含看起來像這樣的 IMDB 資料

{
  "rating": 7.4,
  "votes": 9847,
  "id": 439
}

讓我們建立一個查詢來計算過去 50 年中每年的 IMBD 電影評分平均值

Query builder question

如需查詢產生器的詳細資訊,請查看我們關於如何在查詢產生器中提問的逐步教學課程。

請注意,Metabase 會辨識「IMDB」欄位中的子欄位,並讓您依這些子欄位建立摘要。

若要在表格中預覽結果,請按一下「摘要」區塊旁邊的「播放」按鈕。

步驟 7:建立圖表

若要建立圖表,請按一下視覺化

Time series of rating by year

若要自訂圖表,請按一下左下角的設定齒輪圖示。例如,若要新增趨勢線,請切換到「顯示」索引標籤,然後開啟「趨勢線」。

若要強調評分的變化,您可以在「座標軸」索引標籤中編輯 Y 軸範圍。

Chart settings

看起來舊電影的評分確實比較好!

一旦您對圖表感到滿意,請按一下右上角的「儲存」按鈕,將其儲存到集合中。這樣一來,您就可以稍後重新瀏覽、分享它,並將其新增至儀表板。

步驟 8:鑽取資料

使用查詢產生器建立的圖表是互動式的:您可以精簡或鑽取資料。嘗試下列操作

  • 按一下並拖曳以選取時間序列的一部分以放大;Metabase 將限制日期範圍。
  • 按一下資料點,然後選取「查看這些電影」以查看特定年份的個別電影及其評分。
  • 按一下資料點,然後選取「依此資料篩選」以取得所有評分較高的電影。

步驟 9:使用 MongoDB 查詢語言進行查詢

Metabase 會將您在查詢產生器中建立的每個問題轉換為 MongoDB 查詢。您可以按一下右上角的「檢視原生查詢」按鈕,在查詢產生器中查看它產生的查詢,而且您可以將任何查詢產生器問題轉換為 MongoDB 查詢。

CNative query in the QB

您也可以從頭開始建立原生 MongoDB 查詢:按一下左上角的「+ 新增 → 原生查詢」,選取您的資料庫、集合,然後開始撰寫程式碼。

例如,範例電影集合在 Genres 陣列中具有關於電影類型的資料。您可以展開陣列並依類型計算平均電影執行時間

[
  { $unwind: "$genres" },
  {
    $group: {
      _id: {
        genres: "$genres",
      },
      avg: {
        $avg: "$runtime",
      },
    },
  },
  {
    $project: {
      _id: false,
      genre: "$_id.genres",
      avg: true,
    },
  },
];

執行查詢並按一下左下角的「視覺化」按鈕來視覺化結果。例如,您可以將結果視覺化為長條圖

Native query chart

記得儲存您的問題,以便您可以將其新增至儀表板!

後續步驟

以下是您接下來可以在 Metabase 中嘗試的一些事項