相关疑难解决方法(0)

如何在Big Query中透视表

我正在使用Google Big Query,并且我正在尝试从公共示例数据集中获取透视结果.

对现有表的简单查询是:

SELECT * 
FROM publicdata:samples.shakespeare
LIMIT 10;
Run Code Online (Sandbox Code Playgroud)

此查询返回以下结果集.

在此输入图像描述

现在我要做的是,从表中获得结果,如果单词是勇敢的,选择"BRAVE"作为column_1,如果单词出席,选择"ATTENDED"作为column_2,并聚合单词计数对于这2.

这是我正在使用的查询.

SELECT
(CASE WHEN word = 'brave' THEN 'BRAVE' ELSE '' END) AS column_1,
(CASE WHEN word = 'attended' THEN 'ATTENDED' ELSE '' END) AS column_2,
SUM (word_count)
FROM publicdata:samples.shakespeare
WHERE (word = 'brave' OR word = 'attended')
GROUP BY column_1, column_2
LIMIT 10;
Run Code Online (Sandbox Code Playgroud)

但是,此查询返回数据

在此输入图像描述

我在寻找的是

在此输入图像描述

我知道这个数据集的这个数据集没有意义.但我只是以此为例来解释这个问题.如果你可以为我提供一些指示,那将是很棒的.

编辑:我还提到了如何使用BigQuery模拟数据透视表?它似乎也有我在这里提到的相同问题.

google-bigquery

10
推荐指数
3
解决办法
2万
查看次数

如何在BigQuery中扩展透视?

比方说,我有一个给定的一天音乐视频播放统计数据表格mydataset.stats(3B行,1M用户,6K艺术家).简化的架构是:UserGUID String,ArtistGUID String

我需要从行列枢轴/转的艺术家,这样的模式将是:
UserGUID字符串,Artist1诠释,Artist2诠释,... Artist8000诠释
与艺术家通过各自的用户播放次数

如何将行转换为具有BigQuery/SQL中大量数据的列中的方法中提出了一种方法以及如何在Google BigQuery中为数千个类别创建虚拟变量列?但看起来它不能扩展我的例子中的数字

我的例子可以缩放这种方法吗?

sql google-bigquery

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

如何在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
查看次数