gpt4 book ai didi

google-bigquery - 附加具有不同架构的文件 - BigQuery

转载 作者:行者123 更新时间:2023-12-05 01:40:52 28 4
gpt4 key购买 nike

我正在尝试将多个 CSV 文件附加到 BigQuery 中的一个表。问题是它们没有相同的模式。他们有 key ,但不是相同的领域。这是一个例子:

文件1.csv

ID     A       B       C
1 T T T
2 F T F
3 F F F

文件2.csv

ID     A       B       D
1 T T T
4 F T F
5 F F F

合并这些文件的最佳方式是什么。

ID     A       B       C       D
1 T T T T
2 F T F
3 F F F
4 F T F
5 F F F

最佳答案

BigQuery 没有键的概念,因此如果您将两个具有相同 ID 列的文件“附加”在一起,它们将不会合并。但是如果你想做的只是加载两个具有不同模式的文件并在其中附加数据,你可以很容易地做到这一点。您可以告诉 bigquery 使用表示允许架构更改的架构更新选项进行加载。您还应该传递要添加的文件的显式架构。所以在你的情况下:

如果你有源文件:

$ cat one.csv
ID,A,B,C
1,T,T,T
2,F,T,F
3,F,F,F

$ cat two.csv
ID,A,B,D
1,T,T,T
4,F,T,F
5,F,F,F

然后你可以做

$ bq load --source_format=CSV --schema=id,a,b,c --skip_leading_rows=1 temp.test one.csv
Current status: DONE
$ bq load --source_format=CSV --schema=id,a,b,d --schema_update_option=ALLOW_FIELD_ADDITION --skip_leading_rows=1 temp.test two.csv
Current status: DONE
$ bq head temp.test
+----+---+---+------+------+
| id | a | b | d | c |
+----+---+---+------+------+
| 1 | T | T | NULL | T |
| 2 | F | T | NULL | F |
| 3 | F | F | NULL | F |
| 1 | T | T | T | NULL |
| 4 | F | T | F | NULL |
| 5 | F | F | F | NULL |
+----+---+---+------+------+

但是,这并不完全是您所说的;看起来您想合并 ID 为 1 的行,以便它具有来自两个文件的数据。

执行此操作的最佳方法是加载到两个单独的表,然后进行连接。如果加载到表 temp.t1 和 temp.t2,则可以将这两个表连接起来。如

$ bq load --source_format=CSV --schema=id,a,b,c --skip_leading_rows=1 temp.t1 one.csv
Current status: DONE
$ bq load --source_format=CSV --schema=id,a,b,d --skip_leading_rows=1 temp.t2 two.csv
Current status: DONE
$ bq query --nouse_legacy_sql "SELECT IFNULL(t2.id, t1.id) as id, IFNULL(t2.a, t1.a) as a, IFNULL(t2.b, t1.b) as b, t1.c as c, t2.d as d FROM temp.t1 as t1 FULL OUTER JOIN temp.t2 as t2 ON t1.id = t2.id ORDER BY id"
Current status: DONE
+----+---+---+------+------+
| id | a | b | c | d |
+----+---+---+------+------+
| 1 | T | T | T | T |
| 2 | F | T | F | NULL |
| 3 | F | F | F | NULL |
| 4 | F | T | NULL | F |
| 5 | F | F | NULL | F |
+----+---+---+------+------+

关于google-bigquery - 附加具有不同架构的文件 - BigQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55660906/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com