iT邦幫忙

2022 iThome 鐵人賽

DAY 12
0
AI & Data

開始你的數據分析之路 - 資料ETL & 視覺化系列 第 12

Day12_[tableau prep]字串類型的其他函式(進階正則表達式)

  • 分享至 

  • xImage
  •  

Hi, day12我們來講更進階的正則表達式
這次會用到以下這兩個函式
REGEXP_REPLACE(多重自訂規則取代字元)
REGEXP_EXTRACT(多重自訂規則取出字元)

話不多說, 馬上來開始今天的情境吧!
我們有代碼欄位, 欄位內容極其髒亂

https://ithelp.ithome.com.tw/upload/images/20220913/20140304pgZ3k7KiAh.png

在這個情況下若我們目標是取出 b 以及 b後面的三個數字, 該怎麼做?
首先應該會有人想到用RIGHT或LEFT函式, 但並沒有符合一個特定的規則, 這樣是無法使用的

這個時候, 我們可以使用REGEXP_REPLACE函式, 先把 – 字元還有 & 字元先處理掉

函式該怎麼寫呢?
REGEXP_REPLACE([代碼], ('-|&'), '')

我們用小括號, 裡面先加上單引號表示字串, 接著輸入 | 符號表示 “或” 的意思, 那麼這段函式就可以理解成, 若代碼欄位有 ‘–‘ 或 ‘&’ 字元則取代掉, 那麼我們來看看目前的資料長相

https://ithelp.ithome.com.tw/upload/images/20220913/201403044aj9xBOeNd.png

現在看起來, 若我們的目標是要取出 b 以及 b後面的三個數字, 已經有一個規則出現了
就是在b字元的前面都會有一個英文字母 a

這時候我們再使用REGEXP_EXTRACT函式取出我們要的, 該怎麼寫呢?
REGEXP_EXTRACT([regexp_replace], '[a]+([b]+[0-9]{3})')

解法思路&規則:

  1. 首先用大括號表示規則, 因為要取出的目標前面都會有a, 所以先寫[a]
  2. 用小括號表示我們只要取出裡面的字元
  3. 我們要取出的是 b 以及 b後面的三個數字, 所以寫[b]
  4. 因為後面會接0~9任意數字(範例資料僅有0開頭的), 所以寫[0-9]
  5. 用大括號表示要取出幾位數字, 寫{3}

如此一來我們來看看結果就成功達到需求!

https://ithelp.ithome.com.tw/upload/images/20220913/201403048taEoLSOse.png

所以我們在面對髒亂無序的資料時, 要記住幾個心法

  1. 記住你的目標需求
  2. 處理雜亂資料內容以達到符合取出目標字元的規則
  3. 使用你處理後的規則取出資料

正則表達式還有許多狀況的規則寫法, 有興趣的讀者可以另行google尋找!


上一篇
Day11_[tableau prep]分析類型的其他函式(TRIM)
下一篇
Day13_[tableau prep]在本機端同時載入多個有規律名稱的excel資料源
系列文
開始你的數據分析之路 - 資料ETL & 視覺化30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言