我要生成一个新表,把所有键值对与键作为列名和值作为使用的BigQuery各自的价值。
例:
**Key** **Value**
channel_title Mahendra Guru
youtube_id ugEGMG4-MdA
channel_id UCiDKcjKocimAO1tV
examId 72975611-4a5e-11e5
postId 1189e340-b08f
channel_title Ab Live
youtube_id 3TNbtTwLY0U
channel_id UCODeKM_D6JLf8jJt
examId 72975611-4a5e-11e5
postId 0c3e6590-afeb
我想将其转换为:
**channel_title youtube_id channel_id examId postId**
Mahendra Guru ugEGMG4-MdA UCiDKcjKocimAO1tV 72975611-4a5e-11e5 1189e340-b08f
Ab Live 3TNbtTwLY0U UCODeKM_D6JLf8jJt 72975611-4a5e-11e5 0c3e6590-afeb
如何使用的BigQuery办呢?
BigQuery的尚不支持旋转功能
您仍然可以在BigQuery中使用下面的方法做到这一点
但首先,除了在输入数据的两列,你必须将输入指定行组一个多列,需要组合成在输出一行
所以,我想你的输入表(yourTable)看起来像下面
**id** **Key** **Value**
1 channel_title Mahendra Guru
1 youtube_id ugEGMG4-MdA
1 channel_id UCiDKcjKocimAO1tV
1 examId 72975611-4a5e-11e5
1 postId 1189e340-b08f
2 channel_title Ab Live
2 youtube_id 3TNbtTwLY0U
2 channel_id UCODeKM_D6JLf8jJt
2 examId 72975611-4a5e-11e5
2 postId 0c3e6590-afeb
所以,首先你应该运行下面的查询
SELECT 'SELECT id, ' +
GROUP_CONCAT_UNQUOTED(
'MAX(IF(key = "' + key + '", value, NULL)) as [' + key + ']'
)
+ ' FROM yourTable GROUP BY id ORDER BY id'
FROM (
SELECT key
FROM yourTable
GROUP BY key
ORDER BY key
)
上述查询的结果将是字符串(如格式化)看起来像下面
SELECT
id,
MAX(IF(key = "channel_id", value, NULL)) AS [channel_id],
MAX(IF(key = "channel_title", value, NULL)) AS [channel_title],
MAX(IF(key = "examId", value, NULL)) AS [examId],
MAX(IF(key = "postId", value, NULL)) AS [postId],
MAX(IF(key = "youtube_id", value, NULL)) AS [youtube_id]
FROM yourTable
GROUP BY id
ORDER BY id
你现在应该复制上述结果(注:你并不真的需要格式化它 - 我做到了只呈现),并运行它作为普通查询
结果将是,你会预期
id channel_id channel_title examId postId youtube_id
1 UCiDKcjKocimAO1tV Mahendra Guru 72975611-4a5e-11e5 1189e340-b08f ugEGMG4-MdA
2 UCODeKM_D6JLf8jJt Ab Live 72975611-4a5e-11e5 0c3e6590-afeb 3TNbtTwLY0U
请注意:您可以跳过步骤1,如果你可以自己和领域小,不断的数目构建适当的查询(如步骤2),或者如果它是一个时间的交易。 但第1步只是辅助性的步骤,使得它适合你,这样你就可以创建它快速的任何时间!
如果你有兴趣 - 你可以看到更多关于我的其他职位旋转。
如何扩大枢转BigQuery中?
请注意 - 有每个表的10K列的限制 - 所以你用10K组织的限制。
还可以看到下面作为简化的例子(如果一个以上是太复杂/详细):
如何转置行与列大量BigQuery中/ SQL中的数据?
如何创建虚拟变量列数千谷歌的BigQuery类的?
BigQuery中枢轴重复场