Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google bigquery BigQuery-如何超越10';000列?_Google Bigquery - Fatal编程技术网

Google bigquery BigQuery-如何超越10';000列?

Google bigquery BigQuery-如何超越10';000列?,google-bigquery,Google Bigquery,我试图找到一种通过BigQuery查询非常大(>100k列)和稀疏表(>99%稀疏性)的方法,但我达到了10000列的限制[1]。 是否有任何方法可以绕过此限制,例如通过查询外部BigTable[2]或存储(Avro/Parquet/…)[3] 谢谢你的支持 参考资料 [1] [2] [3] 每个表10000列是一个限制。不,没有更改此限制的选项。每个表10000列的限制是内部表的限制 但是,通过从BigTable创建一个表,可以使用超出此限制的BigQuery—我使用BigTable本机模式对

我试图找到一种通过BigQuery查询非常大(>100k列)和稀疏表(>99%稀疏性)的方法,但我达到了10000列的限制[1]。 是否有任何方法可以绕过此限制,例如通过查询外部BigTable[2]或存储(Avro/Parquet/…)[3]

谢谢你的支持

参考资料

[1]

[2]


[3] 每个表10000列是一个限制。不,没有更改此限制的选项。

每个表10000列的限制是内部表的限制

但是,通过从BigTable创建一个表,可以使用超出此限制的BigQuery—我使用BigTable本机模式对20000列进行了测试,即在表定义文件中没有显式的列定义—尽管这样做的代价是对以下简单过滤器进行了测试:

bq query \
-- use_legacy_sql=true \
-- external_table_definition=<my_bigtable>::<my_table_definition>.json \
'
select count(1) from <my_bigtable>
OMIT RECORD
IF NOT SOME(cf.column.name = "col19997" AND cf.column.cell.value = "foo")
'
然后可以应用一些简单的SQL:

bq query \
--use_legacy_sql=false \
...
where cf.col19997.cell.value ="foo"
...
但是在20000列上这样做会导致以下错误(与限制相关?)。因此,一个方便的解决方案似乎是只指定文件中要使用easy SQL进行筛选的列


总叶字段太多:20002

+1,答案是@JohnHarley。如果您的数据符合适当的查询模式,您可以改用BigTable,它不会限制您需要管理的列数或行数,从存储的角度来看,它非常适合这种稀疏表。@jccampanero:谢谢。然后,BigQuery是否可以将BigTable作为外部表进行查询,而不受此限制?Hi@py-r。这确实是一个有趣的问题。BigQuery和BigTable是完全不同的模型。在BigQuery中,您使用类似SQL的查询,而在BigTable中,表中的每一行的所有信息都围绕一个键进行结构化,您应该使用该键来查询数据。您必须正确定义密钥以提高查询的性能。理想情况下,您应该使用BigTable提供的机制来查询信息。但是,乍一看,您要查询的是底层的BigTable。我乍一看说的不是肯定的,因为请注意,10000列的限制仍然存在,无论是在表定义还是查询结果级别。这一事实使我认为,在您的特定用例中,您也无法使用BigQuery查询BigTable,但老实说,我不知道能否为您提供一个明确的答案。@jccampanero:谢谢。我很高兴得到gcloud的团队对此的看法。有人吗?谢谢。你知道其他类似的DWH系统会支持这个用例吗?对不起,我不知道。BigQuery是最好的。对于基于SQL的数据库,10000列是巨大的。@gcloud:在查询外部BigTable时,是否仍存在此限制?
bq query \
--use_legacy_sql=false \
...
where cf.col19997.cell.value ="foo"
...