首页 > 解决方案 > Bigquery - 在迁移的数据上创建代理键

问题描述

我们正在从 AWS Redshift 迁移到 GCP BigQuery。

问题陈述:我们有一个 Redshift 表,它使用 IDENTITY 列功能为自然/业务键发出内部 EDW 代理键 (PK)。这些自然密钥来自至少 20 个不同的客户源系统。我们需要一种方法来识别它们,以防自然键以某种方式重复(因为我们有很多源系统)。在 BigQuery 中,不存在 Redshift IDENTITY 列的功能。我如何在 BQ 中复制它?我们不能使用 GENERATE_UUID() 因为我们所有的下游客户在过去 4 年中一直在使用 BIGINT。所有历史都基于 BIGINT,对于 VARCHAR 需要更改太多。有没有人有任何想法、建议或建议?

我做了一些考虑: 1. 将数据加载到 Spark 中并将其保存在内存中,并使用 scala 或 python 函数来发出代理键。2. 使用 nosql 数据存储(但这似乎不太可能作为用例)。欢迎任何想法!

标签: google-bigquerysurrogate-key

解决方案


在这些情况下,这个想法通常是识别一个单射/双射函数,它可以映射到一些独特的空间。

你试试类似的东西怎么样:你可以根据公司名称或其他东西以某种方式管理(使用语句或条件)的数字在SELECT UNIX_MICROS(current_timestamp()) + x as identity哪里?xcaseif

如果您打算以某种顺序线性处理事物,例如一次一个业务实体,您也可以x从此公式中消除。

希望能帮助到你。


推荐阅读