[英]Big query: Replace string parts in multiple columns dynamically
我有一個動態表,其中包含帶字符串的列 [statement_nn] 的數量不確定。 我需要用相應的項目替換字符串部分
該表如下所示:原始表
考慮到“語句”列是可變的並且不能在標准 REPLACE 語句中專門使用它們,我該如何進行操作?
這是我希望得到的最終結果: Desired result
我試圖制作一個“聲明”列數組並在那里替換項目,但我需要能夠保留列名以獲得所需的結果
您可以使用EXECUTE IMMEDIATE
動態 select 並替換您想要的項目。 我解決它的方法是用以下查詢手動替換每個占位符:
execute immediate (
select 'select * replace(' ||
string_agg('regexp_replace(' ||
'regexp_replace(' ||
'regexp_replace(' || column_name || ',' || ' r"<name>", name)'
|| ',' || ' r"<surname>", surname)'
|| ',' || ' r"<registration_year>", CAST(registration_year as STRING))'
|| ' as ' || column_name, ', ') ||
') from project_name.dataset_name.table_name'
from `project_name.dataset_name.INFORMATION_SCHEMA.COLUMNS`
where table_name = 'table_name'
and STARTS_WITH(column_name, "statement_")
)
請記住替換project_name
、 dataset_name
和table_name
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.