[英]Repeated record to one string, BigQuery
我有一個包含查詢作業的表,其中有一個重復的記錄列referenced_tables 。 這條記錄中有 3 列和幾行,我想將整個記錄轉換為單個字符串,並使用列分隔符“。” 和 ',' 代表行。 記錄中的列是項目、數據集和表 ID(字符串),每一行都是一個不同的表。 我正在嘗試這樣的事情:
select array_to_string(
[
array_to_string(
[
referenced_tables[ordinal(1)].project_id,
referenced_tables[ordinal(1)].dataset_id,
referenced_tables[ordinal(1)].table_id
], "."
),
array_to_string(
[
referenced_tables[ordinal(2)].project_id,
referenced_tables[ordinal(2)].dataset_id,
referenced_tables[ordinal(2)].table_id
], "."
)
], ", "
)
FROM my_table
其結果類似於: project1.dataset1.table1,project2.dataset2.table2當我指定一個作業時。 所以它有效,但我必須重復array_to_string與行數一樣多,當然行數從一個作業更改為另一個作業,並且referenced_tables可以是 NULL,所以如果我在整個表上執行此操作,則會出現錯誤發生。
有沒有辦法根據我的條件將整個表的記錄轉換為字符串?
我對您的數據結構做了一些假設。 鑒於您說過這是通過查詢進行的,因此存在某種與分組依據相關聯的 query_id。
嘗試以下
select
string_agg(concat(t.project_id,".",t.dataset_id,".",t.table_id),", ")
from sample_data
, unnest(referenced_tables) t
使用以下示例數據:
with sample_data as (
select 1 as query_id
, [STRUCT('my_project' as project_id, 'my_dataset' as dataset_id, 'table' as table_id)
,STRUCT('my_project1' as project_id, 'my_datase1' as dataset_id, 'table1' as table_id)
,STRUCT('my_projec2' as project_id, 'my_dataset2' as dataset_id, 'table2' as table_id)
] as referenced_tables
UNION ALL
select 2
, [STRUCT('my_project3' as project_id, 'my_dataset3' as dataset_id, 'table3' as table_id)
,STRUCT('my_project4' as project_id, 'my_datase4' as dataset_id, 'table4' as table_id)
,STRUCT('my_projec5' as project_id, 'my_dataset5' as dataset_id, 'table5' as table_id)
] as referenced_tables
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.