【问题标题】:Replicate a lookup table in all DWU in Azure Datawarehouse在 Azure 数据仓库的所有 DWU 中复制查找表
【发布时间】:2017-01-22 20:14:20
【问题描述】:
我正在使用 Azure 数据仓库,我对它很陌生。我的集群中有 60 个 DWU。我想创建一个只有 10 行的查找表,并希望它可以在所有 60 个数据仓库单元中复制或可用,而不仅仅是一个。
我如何做到这一点?
CREATE TABLE [src].[lkpTbl](
[ID] [int] NOT NULL,
[Description] [varchar](100) NOT NULL
)
WITH (DISTRIBUTION = REPLICATE);
GO
上面的代码不起作用,它失败并出现错误:Option 'REPLICATE' is not supported in this version of SQL Server.
【问题讨论】:
标签:
azure
azure-sql-database
data-warehouse
azure-sqldw
【解决方案1】:
Azure SQL 数据仓库目前不支持复制表。唯一可用的选项是 HASH(列名)或 ROUND_ROBIN。在这种情况下,因为它是一个小表,所以使用 ROUND_ROBIN。
【解决方案2】:
不幸的是 ADW,由于 Azure 数据中心配置资源的方式,它使得提供 REPLICATE 表在架构上变得困难。正在评估它是否可能包含在即将发布的版本中。
当前所有的表分布方法(ROUND_ROBIN 和 HASH)将数据分布在所有 60 个存储容器中,问题是当您使用分布式表作为查找时,将执行一个数据移动作业以使用查询中的数据。
在上面的示例中,如果您要加入 [ID] 列,则应使用以下内容:
WITH (DISTRIBUTION = HASH([ID]));
但是,如果您要加入的表未分布在同一个加入表上,您将在查询执行时获得数据移动作业。或者,如果查找只有 1 列 [Description],为了性能,我会说只是将事实表非规范化并将描述带入 FACT 表并将连接保留在 ID 上。