BigQuery / DataPrep-是否可以合并具有相同KEY但具有不同序号的行?

时间:2019-06-05 17:37:48

标签: google-cloud-platform google-cloud-dataprep

我正在使用DataPrep纠缠并将数据导入BigQuery。我的数据集包含每个PERSON_ID的“交易”,以及每个SEQ_NO(交易)的新行,如下所示:

<code>
PERSON_ID   SEQ_NO  CODE   DATA1 DATA2 DATA3.... DATAN
1001        1       A      X     Y     Z ...
1001        2       B      X     Y     Z ...
1001        3       C      X     Y     Z ...
1002        1       A      X2    Y2    Z2...
1002        2       F      X2    Y2    Z2...
1003        1       A      X3    Y3    Z3...
1004        1       B      X4    Y4    Z4...
1005        1 ...
</code>

第一列PERSON_ID是可能具有N SEQ_NO(从1开始)的键。每个SEQ_NO有一个唯一的CODE。其余的DATA相同。

我偶然发现了“将值转换为列”的配方,这使我接近下面的选项B,但每个SEQ_NO仍然具有唯一的行。

所需解决方案

选项A :(数组)

<code>
PERSON_ID   new_SEQ_NO__CODE   DATA1 DATA2 DATA3.... DATAN
1001        [1:A,2:B,3:C]  X     Y     Z ...
1002        [1:A,2:F]      X2    Y2    Z2...
1003        [1:A]          X3    Y3    Z3...
1004        [1:B]          X4    Y4    Z4...
1005        [1:...
</code>

选项B :(列的值)

<code>
PERSON_ID   CODE_A  CODE_B  CODE_C  CODE_NN  DATA1 DATA2 DATA3....
1001        1       1       1       null   X     Y     Z ...
1002        1       null    null    ...      X2    Y2    Z2...
1003        1       null    null    ...      X3    Y3    Z3...
1004        null    1       null    ...      X4    Y4    Z4...
1005        ...
</code>

2 个答案:

答案 0 :(得分:0)

在Trifacta社区上找到了一条旧帖子,其中显示了解决方法。自从这篇文章发表以来,语法似乎已经改变,但是从本质上说,“ Aggregate”变成了“ Group”:

https://community.trifacta.com/s/question/0D51L000058bYzWSAU/how-can-i-merge-mostly-duplicate-rows-into-one-with-a-multivalued-column-that-changes-per-row-in-the-source-data

答案 1 :(得分:0)

要获取选项1,可以使用MERGE列转换或Trifacta中“搜索”中的MERGE功能,或从工具栏中选择“合并”图标。请将分隔符字段值包括为:

下一个数据透视表,其行标签为PERSON_ID和DATA列,聚合值为LIST(合并列)。

您可能会发现本文也很有帮助https://community.trifacta.com/s/article/Use-case-Grouping-company-information-on-pivot