簡體   English   中英

在 BigQuery 中將列轉換為值

[英]Turn columns into values in BigQuery

我有以下數據:

     date_ country category_A category_B
2022-12-11     USA        100        200
2022-12-11  Canada       2000        400

這是由此查詢生成的:

select
  date('2022-12-11') as date_, 'USA' as country, 100 as category_A, 200 as category_B,
union all select 
  date('2022-12-11') as date_, 'Canada' as country, 2000 as category_A, 400 as category_B

我想做的是只將數據的最后兩列轉換為值,並為值獲取一個列,如下表:

     date_ country   category  value 
2022-12-11     USA category_A    100       
2022-12-11     USA category_B    200        
2022-12-11  Canada category_A   2000   
2022-12-11  Canada category_B    400   

也許它並不完美,但您可以使用以下查詢:

with countries AS
(select
  date('2022-12-11') as date_, 'USA' as country, 100 as category_A, 200 as category_B,
union all select 
  date('2022-12-11') as date_, 'Canada' as country, 2000 as category_A, 400 as category_B
)

select 
  date_,
  country,
  category
from countries,
unnest(array[struct('category_A' AS category_name, category_A AS category_value), struct('category_B' AS category_name, category_B AS category_value)]) as category;

結果是:

在此處輸入圖像描述

unnest中,您需要添加所有預期的類別列。

暫無
暫無

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

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