簡體   English   中英

如何在bigquery中使用正則表達式獲取值字符串

[英]How to get value string with regexp in bigquery

嗨,我在 BigQuery 列中有這樣的字符串

cancellation_amount: 602000
after_cancellation_transaction_amount: 144500
refund_time: '2022-07-31T06:05:55.215203Z'
cancellation_amount: 144500
after_cancellation_transaction_amount: 0
refund_time: '2022-08-01T01:22:45.94919Z'

我已經使用這個邏輯來獲取cancellation_amount

regexp_extract(file,r'.*cancellation_amount:\s*([^\n\r]*)')

但 output 僅數量 602000,我需要 output 602000 和 144500 成為不同的列

感謝幫助

如果輸入中的行(最終將成為列)是固定的,則可以使用多個regexp_extract來獲取所有值。

SELECT
    regexp_extract(file,r'cancellation_amount:\s*([^\n\r]*)') as cancellation_amount
    regexp_extract(file,r'. after_cancellation_transaction_amount:\s*([^\n\r]*)') as after_cancellation_transaction_amount
FROM table_name

我在您的正則表達式中發現的一個問題是.*cancellation_amountafter_cancellation_transaction_amount不匹配。

還有一個名為regexp_extract_all的 function 將所有匹配項作為一個數組返回,您可以稍后將其分解為列,但如果您有有限值將它們分隔在不同的列中會更容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM