相关疑难解决方法(0)

如何使用 BigQuery 提取 JSON 对象中的所有键

BigQuery 具有在实时交互式查询中解析 JSON 的功能:只需将 JSON 编码对象存储为字符串,并使用 JSON_EXTRACT_SCALAR 等函数实时查询。

但是,我找不到发现这些对象中所有键(属性)的方法。

我可以为此使用 UDF 吗?

json google-bigquery

12
推荐指数
1
解决办法
1万
查看次数

在BigQuery中将行转换为列(Pivot实现)

我想生成一个新表,并使用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做到这一点?

sql google-bigquery google-cloud-platform

12
推荐指数
1
解决办法
1万
查看次数

如何分割BigQuery表?

如果在其他地方已经回答道歉,我找不到类似的东西.

有没有办法将表拆分成多个分片而不必使用多个查询?这是两个例子:

1)加载带有带时间戳的数据的表(unix时间戳).我希望白天将数据保存到一个表中.天真的方法是:a)加载数据; b)运行查询以获取每天的所有数据并将其附加到适当的分片中.这种方法将导致查询触及N x [整个表格的大小]数据,其中N是表格中的天数.再加上一个查询来查找最小和最大时间戳,以便我可以建立我需要创建的分片范围.

2)使用字段中的数据将表拆分为分片.例如,一个包含10亿行的表,其中包含一个具有1,000个不同值的字段X. 如果我想将表拆分为1000个不同的表,每个X的值为一个表,那么天真的方法是运行SELECT*FROM表WHERE X = [value],并将结果插入到shard table_value中.但是,这将导致1000个查询,每个查询都触及整个表的数据!

当然,我错过了一些东西,必须有更有效的方法来做到这一点.

sharding google-bigquery

5
推荐指数
2
解决办法
3736
查看次数

BigQuery数据透视表数据行列

我目前正在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)

pivot pivot-table google-bigquery

5
推荐指数
1
解决办法
6433
查看次数

如何在Google BigQuery中为数千个类别创建虚拟变量列?

我有一个包含两列的简单表: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不够了解,无法解决此问题。有人可以帮忙吗?

谢谢。

mysql sql google-bigquery dummy-variable

4
推荐指数
1
解决办法
8660
查看次数

如何在BigQuery/SQL中将行转换为具有大量数据的列?

我在将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中执行此操作?

提前致谢.

mysql sql sql-server transpose google-bigquery

3
推荐指数
1
解决办法
4115
查看次数