BigQuery 具有在实时交互式查询中解析 JSON 的功能:只需将 JSON 编码对象存储为字符串,并使用 JSON_EXTRACT_SCALAR 等函数实时查询。
但是,我找不到发现这些对象中所有键(属性)的方法。
我可以为此使用 UDF 吗?
我想生成一个新表,并使用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
Run Code Online (Sandbox Code Playgroud)
我想将其转换为:
**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
Run Code Online (Sandbox Code Playgroud)
如何使用BigQuery做到这一点?
如果在其他地方已经回答道歉,我找不到类似的东西.
有没有办法将表拆分成多个分片而不必使用多个查询?这是两个例子:
1)加载带有带时间戳的数据的表(unix时间戳).我希望白天将数据保存到一个表中.天真的方法是:a)加载数据; b)运行查询以获取每天的所有数据并将其附加到适当的分片中.这种方法将导致查询触及N x [整个表格的大小]数据,其中N是表格中的天数.再加上一个查询来查找最小和最大时间戳,以便我可以建立我需要创建的分片范围.
2)使用字段中的数据将表拆分为分片.例如,一个包含10亿行的表,其中包含一个具有1,000个不同值的字段X. 如果我想将表拆分为1000个不同的表,每个X的值为一个表,那么天真的方法是运行SELECT*FROM表WHERE X = [value],并将结果插入到shard table_value中.但是,这将导致1000个查询,每个查询都触及整个表的数据!
当然,我错过了一些东西,必须有更有效的方法来做到这一点.
我目前正在BigQuery中处理数据,然后将其导出到Excel中以完成最终的数据透视表,并希望能够使用BigQuery中的PIVOT选项创建相同的数据。
大查询中的我的数据集看起来像
Transaction_Month || ConsumerId || CUST_createdMonth
01/01/2015 || 1 || 01/01/2015
01/01/2015 || 1 || 01/01/2015
01/02/2015 || 1 || 01/01/2015
01/01/2015 || 2 || 01/01/2015
01/02/2015 || 3 || 01/02/2015
01/02/2015 || 4 || 01/02/2015
01/02/2015 || 5 || 01/02/2015
01/03/2015 || 5 || 01/02/2015
01/03/2015 || 6 || 01/03/2015
01/04/2015 || 6 || 01/03/2015
01/06/2015 || 6 || 01/03/2015
01/03/2015 || 7 || 01/03/2015
01/04/2015 || 8 || 01/04/2015
01/05/2015 || 8 || 01/04/2015
01/04/2015 || 9 …Run Code Online (Sandbox Code Playgroud) 我有一个包含两列的简单表:UserID和Category,每个UserID可以重复几个类别,如下所示:
UserID Category
------ --------
1 A
1 B
2 C
3 A
3 C
3 B
Run Code Online (Sandbox Code Playgroud)
我想“虚拟化”该表:即创建一个输出表,该表的每个列都有由虚拟变量组成的唯一类别(0/1,取决于UserID是否属于该特定类别):
UserID A B C
------ -- -- --
1 1 1 0
2 0 0 1
3 1 1 1
Run Code Online (Sandbox Code Playgroud)
我的问题是我有数千个类别(在此示例中不只是3个类别),因此无法使用CASE WHEN语句有效地完成此操作。
所以我的问题是:
1)有没有一种方法可以在不使用数千个CASE WHEN语句的情况下“虚拟化” Google BigQuery中的Category列。
2)这是UDF功能正常工作的情况吗?看起来确实是这样,但是我对BigQuery中的UDF不够了解,无法解决此问题。有人可以帮忙吗?
谢谢。
我在将BigQuery(15亿行)中的大量数据表从行转换为列时遇到问题.我可以弄清楚如何在硬编码时使用少量数据来完成它,但是这个数量很大.表的快照如下所示:
+--------------------------+
| CustomerID Feature Value |
+--------------------------+
| 1 A123 3 |
| 1 F213 7 |
| 1 F231 8 |
| 1 B789 9.1 |
| 2 A123 4 |
| 2 U123 4 |
| 2 B789 12 |
| .. .. .. |
| .. .. .. |
| 400000 A123 8 |
| 400000 U123 7 |
| 400000 R231 6 |
+--------------------------+
所以基本上大约有400,000个不同的customerID有3000个功能,并不是每个customerID都有相同的功能,所以有些customerID可能有2000个功能,而有些有3000个.我想得到的最终结果表是每行提供一个不同的customerID,并且有3000列显示所有功能.像这样:
CustomerID Feature1 Feature2 ... Feature3000
因此,某些单元格可能缺少值.
任何人都知道如何在BigQuery或SQL中执行此操作?
提前致谢.