【问题标题】:How to design Dimension and Fact table in Azure Data Warehouse?如何在 Azure 数据仓库中设计维度表和事实表?
【发布时间】:2019-04-25 23:04:39
【问题描述】:

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

现在,在 Azure 数据仓库中,标识列值是随机生成的,我不确定是否在此处使用这些暗淡的 id。如果不使用这些 id,则可以使用文本列,但这会增加查找时间,进而影响性能。

那么,谁能建议我应该如何在 Azure 数据仓库中处理这些暗淡的 id?

问候,

普拉提克

【问题讨论】:

    标签: azure data-warehouse azure-sqldw sql-data-warehouse


    【解决方案1】:

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

    https://docs.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-tables-identity

    如果您更喜欢替代方法,可以使用这样的计算在行插入期间分配代理键:

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

    【讨论】:

    • 感谢您的回复。它是否遵循星型模式方法。我想使用标识列作为外键来链接暗表和事实表。
    • 是和不是。您可以连接表和索引列以支持您的结果,但没有参照完整性......不直接支持主键/外键概念,例如删除行或空值。您不希望在非常大的 DW 中产生这种开销。
    • 是的,DW 没有主键和外键概念。您建议我们使用什么来连接昏暗和事实表。 ID 还是文本列?
    • 假设您使用 ASDW 是因为您有大量数据,那么 BIGINT 可能是 IDENTITY 列的最佳数据类型。您会注意到替代算法也转换为 BIGINT。一般来说,整数值是最可压缩和最快的可比数据类型,这意味着您可以从 DW 中获得最佳性能。
    猜你喜欢
    • 2011-02-25
    • 1970-01-01
    • 2011-09-04
    • 2019-07-28
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多