使用 SQL 問題將篩選器新增至儀表板

如何在儀表板中新增篩選器小工具,並將其連結至 SQL 問題中的欄位篩選器變數。

本文涵蓋如何建立儀表板小工具,以篩選原生查詢中的資料。在儀表板篩選器中選取值將更新 SQL 問題中的結果。

A dashboard with a SQL question wired up to a filter.

此處的目標是了解如何將儀表板篩選器小工具連結至特殊變數類型,稱為欄位篩選器,我們將其插入問題的 SQL 程式碼中。

我們將涵蓋兩個範例:一個日期篩選器(接下來),以及一個具有下拉式清單的文字篩選器

將欄位篩選器變數新增至 SQL 問題

讓我們從以 SQL 撰寫的問題開始,該問題顯示來自 Metabase 隨附的範例資料庫的每月訂單數。從任何 Metabase 頁面,在導覽列的右上角,按一下+ 新增,然後選取 SQL 查詢(或 原生查詢)。

A question written in SQL showing orders per month, visualized as a line chart.

這是 SQL 程式碼

SELECT DATE_TRUNC('Month', CREATED_AT) AS "Created",
       COUNT(*) AS "Number of orders"
FROM orders
GROUP BY "Created"
ORDER BY "Created" ASC

現在,我們正在討論篩選資料,而精明的讀者可能已經意識到我們的 SQL 程式碼中沒有篩選器陳述式。沒有 WHERE 子句。意思是:即使我們將此問題新增至儀表板,並將篩選器小工具新增至該儀表板,該篩選器也不會對我們的 SQL 問題產生任何影響,因為我們的程式碼中沒有指定位置讓小工具插入其值。

讓我們透過將稱為欄位篩選器的特殊變數新增至我們的 SQL 問題來修正此問題。欄位篩選器是一種特殊類型的變數,可將變數對應到表格中的欄位(或欄)。

這是我們將新增的 SQL 程式碼


WHERE {{created_at}}

您可能會注意到 WHERE 子句中缺少 = 運算子。存在此縮寫語法是因為欄位篩選器會在幕後為您處理一些 SQL 程式碼。如需此處正在發生的詳細資訊,請查看欄位篩選器

在加入 WHERE 子句後,我們的程式碼看起來像這樣


SELECT DATE_TRUNC('Month', CREATED_AT) AS "Created",
       COUNT(*) AS "Number of orders"
FROM orders
WHERE {{created_at}}
GROUP BY "Created"
ORDER BY "Created" ASC

現在我們在 SQL 程式碼中有了變數,我們需要告訴 Metabase 如何使用該變數。當我們將變數新增至我們的程式碼時,Metabase 將滑出變數側邊欄。我們將 變數類型設定為 欄位篩選器,然後將該變數對應到我們資料庫中的欄位,以便 Metabase 可以知道它應該將哪種類型的篩選器小工具新增至問題。在此案例中,我們將變數對應到 orders 表格的 created_at 欄位。

Setting the variable type for our SQL variable created_at to Field Filter, then setting the Field to map to option to the created_at field (column) of the orders table.

請注意,我們可以將 SQL 變數命名為我們想要的任何名稱,但為了讓儀表板篩選器運作,我們必須將變數對應到適當的欄位。

目前,我們將篩選器小工具標籤保留為 建立於,並保持 必要? 切換開關不動。如果變數的篩選器小工具缺少值,Metabase 將執行問題,就好像 WHERE 子句不存在一樣。

我們也可以選取篩選器小工具類型,儘管此小工具僅適用於我們的問題。讓我們選取 日期篩選器 類型。

讓我們儲存我們的問題。我們將其命名為 每月訂單數 - SQL

在我們將問題新增至儀表板之前,我們先快速繞道一下。

關於資料類型的繞道

當我們選取 created_at 欄位時,Metabase 知道欄位類型是 建立時間戳記(請注意日曆圖示)。您可以透過瀏覽您的資料來了解每個表格擁有的欄位(欄)類型。

View information about your data by clicking on Browse Data from the top navigation bar, selecting your database---in this case, Sample Database---clicking on the information icon next to a table, and clicking on the book icon to learn about this table.

Viewing information on the fields in the Orders table of the Sample Database.

管理員可以在管理面板資料模型標籤中編輯欄位類型,以及其他中繼資料設定。若要深入了解,請查看我們的關於中繼資料編輯的文件

將儀表板篩選器小工具連結至欄位篩選器變數

因此,我們有一個在 WHERE 子句中具有欄位篩選器變數的 SQL 問題,現在是時候將該問題新增至儀表板了。

接下來,我們需要

  • 建立儀表板。
  • 將我們的問題新增至儀表板。
  • 將篩選器小工具新增至該儀表板。
  • 將該儀表板篩選器小工具連結至我們 SQL 問題中的欄位篩選器變數。

讓我們建立儀表板(我們將為我們的儀表板命名為非常缺乏想像力的名稱 具有篩選器小工具的儀表板)。

然後我們將將我們的 SQL 問題新增至儀表板

接下來,我們將將篩選器小工具新增至我們的儀表板。按一下鉛筆圖示以進入儀表板編輯模式,然後

  • 按一下篩選器圖示以將篩選器小工具新增至儀表板。
  • 我們想要篩選什麼 下,我們將選取 時間
  • 對於 篩選器的類型?,我們將選取 日期篩選器
  • 接下來,我們需要將我們的小工具連結至我們問題中的欄位篩選器變數。按一下我們問題中心中的下拉式選單,然後選取我們的 建立於 欄位篩選器變數。
  • 按一下畫面頂端的完成按鈕。
  • 然後儲存儀表板。

Adding a Date filter (Time → All options) to a dashboard, and connecting the filter widget to the Field Filter variable, Created at in our SQL question.

現在我們都已接線完成,我們已準備好測試新的日期篩選器。此特定小工具類型為我們提供了豐富的選項。讓我們看看過去六個月的訂單。

Using a dashboard filter to filter orders for the last six months.

將 SQL 問題連結至儀表板上的下拉式篩選器小工具

假設我們想要有一個儀表板篩選器小工具,依類別篩選產品,而且我們希望人員能夠從下拉式清單中選取可用的類別。若要設定此功能,我們將在我們的 SQL 查詢中放入欄位篩選器變數,並將其對應到 products 表格中的 category 欄位。然後我們將儀表板篩選器對應到該變數。讓我們逐步了解。

A dashboard with a dropdown filter connected to a SQL question card.

首先,建立儀表板。讓我們將其命名為「具有 SQL 問題和下拉式篩選器的儀表板」(以便我們的任務明確)。儲存儀表板。

接下來,提出新的原生/SQL 問題,以取得 products 表格中的所有欄位。若要依類別篩選產品,我們將在方括號中包含我們將稱為 category 的變數


SELECT
  *
FROM
  products
WHERE {{category}}

在 Metabase 彈出的變數側邊選單中,我們將如此設定此變數

  • 變數類型:欄位篩選器。
  • 要對應的欄位:產品表格中的類別欄位。
  • 篩選器小工具類型:字串。
  • 篩選器小工具標籤:類別(或您想要的任何名稱)。
  • 使用者應如何依此變數篩選:下拉式清單。
  • 必要:否。
  • 預設篩選器值:留白(因此預設不會依產品類別篩選)。

Creating a SQL question that includes a field filter mapped to the products.category field. The field filter variable is then connected to a filter widget that

儲存問題並將其新增至您的儀表板。編輯您的儀表板,並新增文字或類別篩選器。

Adding a text or category filter widget to a dashboard.

選取,以便人員從清單或搜尋方塊中選取一個或多個值。

Setting up a dropdown dashboard filter connected to a field filter variable in a SQL question.

將儀表板篩選器小工具對應到問題卡片上的類別變數。請確定使用者應如何依此欄篩選選項設定為「下拉式清單」。

按一下側邊欄底部的完成,然後儲存您的儀表板。您應該一切就緒。

延伸閱讀

下一步:SQL 技巧:排序圖表中的長條

保留您想要長條在圖表中顯示之順序的簡單技巧。

下一篇文章