我正在嘗試從我的 bigquery 資料中的 url 中提取產品搜索顏色,但 url 格式在某一時刻發生了變化,因此我試圖從兩種不同的格式中提取它們。
第一個像/someproduct/color/blue/color/red,第二個像/someproduct/?colors=blue,red。
在這兩個示例中,該人過濾了多種顏色,我希望提取的輸出類似于“藍色,紅色”并且全部在一列中。
我可以拉第一個:
REGEXP_EXTRACT_all(url,r'color/([A-Za-z] )')
第二個是:
REGEXP_EXTRACT(url,r'colors=(\w*,\w*)')
第一個生成一個陣列,我不知道如何讓所有輸出顯示為一行中的一個行專案。一個人最多可以過濾 20 種顏色,因此在這兩種 URL 型別中可能會有很多重復。
第二個也可以使用一些改進,因為我必須\w*,為每個額外的顏色添加一個額外的過濾,我有一個處理它的 case 陳述句,但我認為這不是處理它的最有效方法。
uj5u.com熱心網友回復:
考慮以下方法
select url,
coalesce(regexp_extract(url, r'colors=(\w*,\w*)'), array_to_string(regexp_extract_all(url,r'color/([A-Za-z] )'), ',')) colors
from your_table
如果應用于您問題中的樣本資料 - 輸出是

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/451882.html
上一篇:在字串串列中查找重要關鍵字
下一篇:使用復雜分隔符拆分記錄
