我在Google bigquery中有下面的截图列
我需要将该列转换为以下Bigquery中的行:
70042 70055 70044 70046 70042 70055 70044 70046
请建议我如何获取上面的行。
答案 0 :(得分:4)
以下BigQuery标准SQL示例
如果列是字符串数组,则第一个适用;如果它是看起来像array:o)
#standardSQL
WITH `project.dataset.table` AS (
SELECT 1 id, ['70042', '70055', '70044', '70046'] dspid UNION ALL
SELECT 2 id, ['70042', '70055', '70044', '70046'] dspid
)
SELECT id, dspid
FROM `project.dataset.table`,
UNNEST(dspid) dspid
#standardSQL
WITH `project.dataset.table` AS (
SELECT 1 id, '["70042","70055","70044","70046"]' dspid UNION ALL
SELECT 2 id, '["70042","70055","70044","70046"]' dspid
)
SELECT id, dspid
FROM `project.dataset.table`,
UNNEST(SPLIT(REGEXP_REPLACE(dspid, r'[\[\]"]', ''))) dspid
两者均产生低于结果
Row id dspid
1 1 70042
2 1 70055
3 1 70044
4 1 70046
5 2 70042
6 2 70055
7 2 70044
8 2 70046
注意:下面的片段仅用于模仿您的真实数据/表,仅供您测试/使用。实际上,您可以删除它并使用特定的project.dataset.table
WITH `project.dataset.table` AS (
..............
)
下次您对SO提出问题时,请提供有关您的案件的更多详细信息,并显示即使您的案子对您没有帮助,您仍然尝试过的做法-这通常有助于我们更好地了解您的案件,从而更好地为您提供帮助
更新
例如,如果您的表是veuhub-185502.AdtechAnalytics.tag_request
,则应在
#standardSQL
SELECT id, dspid
FROM `veuhub-185502.AdtechAnalytics.tag_request`,
UNNEST(dspid) dspid
或以下(根据您的评论)
#standardSQL
SELECT
DSPID,
adtype,
adtypeWithDevice,
EXTRACT(year FROM request_timestamp) AS year,
EXTRACT(month FROM request_timestamp) AS month,
EXTRACT(day FROM request_timestamp) AS day,
EXTRACT(hour FROM request_timestamp) AS hour,
SUM(1) AS requestcount
FROM `veuhub-185502.AdtechAnalytics.tag_request`,
UNNEST(dspid) dspid
GROUP BY adtype,adTypeWithDevice,DSPID,year,month,day,hour