Substring
substring
函數擷取部分文字。此函數適用於清理具有一致格式的文字(或任何字串資料類型的值)。
例如,substring
函數適用於 SKU 號碼、ISO 代碼和標準化電子郵件地址等字串。
語法 | 範例 |
---|---|
substring(文字, 位置, 長度) |
substring("user_id@email.com", 1, 7) |
從給定的起點(位置)和長度(字元數)擷取部分文字。 | “user_id” |
參數
- 字串中的第一個字元位於位置 1。
- 子字串的長度應始終為正數。
從左側擷取子字串
任務 ID | 代理商 |
---|---|
19951113006 | 006 |
20061114007 | 007 |
19640917008 | 008 |
「代理商」是一個自訂欄位,其運算式為
substring([Mission ID], 9, 3)
從右側擷取子字串
您將使用以下公式來代替使用數字作為位置
1 + length([column]) - position_from_right
其中 position_from_right
是您要從右向左數的字元數。
任務 ID | 代理商 |
---|---|
19951113006 | 006 |
20061114007 | 007 |
19640917008 | 008 |
在此,「代理商」是一個自訂欄位,其運算式為
substring([Mission ID], (1 + length([Mission ID]) - 3), 3)
接受的資料類型
資料類型 | 適用於 substring 函數 |
---|---|
字串 | ✅ |
數字 | ❌ |
時間戳記 | ❌ |
布林值 | ❌ |
JSON | ❌ |
限制
substring
函數透過計算固定數量的字元來擷取文字。如果您需要根據更複雜的邏輯擷取文字,請嘗試使用 regexextract
函數。
如果您只需要清理文字周圍多餘的空白字元,則可以使用 trim
、ltrim
或 rtrim
運算式。
相關函數
本節介紹與 Metabase substring
運算式功能相同的函數和公式,並提供有關如何針對您的用例選擇最佳選項的說明。
其他工具
Regexextract
如果您需要根據更具體的規則擷取文字,請使用 regexextract 函數。例如,您可以使用 regex 模式來取得代理商 ID,該模式會尋找最後一次出現的「00」(以及之後的所有內容)
regexextract([Mission ID], ".+(00.+)$")
應傳回與以下相同的結果
substring([Mission ID], 9, 3)
SQL
當您使用筆記本編輯器執行問題時,Metabase 會將您的圖形化查詢設定(篩選器、摘要等)轉換為查詢,並針對您的資料庫執行該查詢以取得結果。
如果我們的範例資料儲存在 PostgreSQL 資料庫中
SELECT
mission_id,
SUBSTRING(mission_id, 9, 3) AS agent
FROM
this_message_will_self_destruct;
相當於 Metabase substring
運算式
substring([Mission ID], 9, 3)
試算表
如果我們的範例資料位於試算表中,其中「任務 ID」位於 A 欄,
=mid(A2,9,3)
與 Metabase substring
運算式相同
substring([Mission ID], 9, 3)
Python
假設範例資料位於名為 df
的資料框架欄位中,
df['Agent'] = df['Mission ID'].str.slice(8, 11)
與 Metabase substring
運算式執行相同的操作
substring([Mission ID], 9, 3)
延伸閱讀
閱讀其他 Metabase 版本的說明文件。