如何在Azure数据仓库中设计维度和事实表?

如何在Azure数据仓库中设计维度和事实表?,azure,data-warehouse,azure-sqldw,sql-data-warehouse,Azure,Data Warehouse,Azure Sqldw,Sql Data Warehouse,我正在将SQL Server数据库迁移到Azure数据仓库。我在早期的数据库中有维度表,它们有dim id(基本上是整数值),这些都是在事实表中引用的,以便轻松获取数据。 这些dim ID是使用标识列生成的 现在,在Azure数据仓库中,标识列值是随机生成的,我不确定是否在这里使用这些dim ID。如果不使用这些ID,则可以使用文本列,但这将增加搜索时间,进而影响性能 那么,有谁能建议我应该如何在Azure数据仓库中处理这些dim ID 问候, Pratik您可以在Azure SQL数据仓库中使

我正在将SQL Server数据库迁移到Azure数据仓库。我在早期的数据库中有维度表,它们有dim id(基本上是整数值),这些都是在事实表中引用的,以便轻松获取数据。 这些dim ID是使用标识列生成的

现在,在Azure数据仓库中,标识列值是随机生成的,我不确定是否在这里使用这些dim ID。如果不使用这些ID,则可以使用文本列,但这将增加搜索时间,进而影响性能

那么,有谁能建议我应该如何在Azure数据仓库中处理这些dim ID

问候,


Pratik

您可以在Azure SQL数据仓库中使用标识列。这些值不是“随机”的,它们的排序方式与您在SMP版本的SQL Server上看到的不同

如果您希望使用其他方法,可以使用如下计算在行插入期间指定代理键:

cast((select max(dim_sk) from dw.dim_xxx) + row_number() over (order by getdate()) as bigint) as dim_sk

您可以在Azure SQL数据仓库中使用标识列。这些值不是“随机”的,它们的排序方式与您在SMP版本的SQL Server上看到的不同

如果您希望使用其他方法,可以使用如下计算在行插入期间指定代理键:

cast((select max(dim_sk) from dw.dim_xxx) + row_number() over (order by getdate()) as bigint) as dim_sk

谢谢你的回复。它是否遵循星型模式方法。我想使用标识列作为外键链接dim表和事实表。是和否。您可以连接表和索引列以支持您的结果,但没有引用完整性。。。不直接支持主键/外键概念,例如删除行或为空值。您不希望在非常大的DW中出现这种开销。是的,DW没有主键和外键概念。您建议我们使用什么连接dim和事实表。ID还是文本列?假设您使用ASDW是因为您有大量数据,BIGINT可能是标识列的最佳数据类型。您会注意到替代算法也被转换为BIGINT。通常,整数值是最可压缩和最快的可比较数据类型,这意味着您可以从DW中获得最佳性能。感谢您的回复。它是否遵循星型模式方法。我想使用标识列作为外键链接dim表和事实表。是和否。您可以连接表和索引列以支持您的结果,但没有引用完整性。。。不直接支持主键/外键概念,例如删除行或为空值。您不希望在非常大的DW中出现这种开销。是的,DW没有主键和外键概念。您建议我们使用什么连接dim和事实表。ID还是文本列?假设您使用ASDW是因为您有大量数据,BIGINT可能是标识列的最佳数据类型。您会注意到替代算法也被转换为BIGINT。通常,整数值是最可压缩和最快的可比较数据类型,这意味着您可以从DW中获得最佳性能。