Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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中是否有自动增量?_Google Bigquery_Google Cloud Platform - Fatal编程技术网

Google bigquery BigQuery中是否有自动增量?

Google bigquery BigQuery中是否有自动增量?,google-bigquery,google-cloud-platform,Google Bigquery,Google Cloud Platform,BigQuery中是否有类似于自动递增、串行、标识或序列的内容 我知道行号 但我希望为表中的每一行保留生成的唯一ID。BigQuery没有在加载时生成行键的概念。可以为行生成任意键 正如您所注意到的,ROW_NUMBER会为每一行提供一个唯一的索引,但您可能会命中(因为您需要一个无分区的窗口函数来覆盖所有内容) 如果你能容忍一个更大的字符串键,你可以考虑为每一行生成UUID(可以随机地进行,不需要与数据的其余部分进行协调)。如果您使用的是标准SQL(而且您应该这样做!),系统将实现这一点 在链接

BigQuery中是否有类似于自动递增、串行、标识或序列的内容

我知道行号

但我希望为表中的每一行保留生成的唯一ID。

BigQuery没有在加载时生成行键的概念。可以为行生成任意键

正如您所注意到的,ROW_NUMBER会为每一行提供一个唯一的索引,但您可能会命中(因为您需要一个无分区的窗口函数来覆盖所有内容)

如果你能容忍一个更大的字符串键,你可以考虑为每一行生成UUID(可以随机地进行,不需要与数据的其余部分进行协调)。如果您使用的是标准SQL(而且您应该这样做!),系统将实现这一点


在链接的答案中,Felipe构造了一个复合键,如果键的组合是不同的,它可能也适用于您。

如果您运行查询为每一行计算一个新的“id”列(并将结果保存为新表),则行号将起作用。也就是说,我很好奇为什么要这样做——BigQuery并不是真正用于按键进行单行查找(您必须扫描整个表),我想其他一些列的组合会使行具有更有意义的“标识”。这只是为了在下游的另一个系统中使用吗?我希望能够将来自多个源的数据集成到BQ中的同一个表中。这些数据源已经有ID,但它们可能会相互冲突,因此我希望有一个统一的ID供以后访问。关于ID访问,我计划在数据存储中保留旧ID和新ID之间映射的缓存版本,这样大部分时间我就不需要在BQ中进行单行查找。这很有意义。我还补充了一些建议。如果这仅仅是数据源的联合,那么一个带有名称空间前缀的键可能是确保唯一性的最简单的解决方案(如果以后必须重新生成它,它将比ROW_NUMBER更稳定)。听起来很有趣。我要试一试。谢谢:)