2

我正在使用 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.

4

2 回答 2

2

Azure SQL 数据仓库目前不支持复制表。唯一可用的选项是 HASH(列名)或 ROUND_ROBIN。在这种情况下,因为它是一个小表,所以使用 ROUND_ROBIN。

于 2016-09-26T22:22:43.663 回答
1

不幸的是,ADW,由于 Azure 数据中心提供资源的方式,使得提供 REPLICATE 表在架构上变得困难。正在评估它是否可能包含在即将发布的版本中。

当前所有的表分布方法(ROUND_ROBIN 和 HASH)将数据分布在所有 60 个存储容器中,问题是当您使用分布式表作为查找时,将执行一个数据移动作业以使用存储容器中的数据询问。

在上面的示例中,如果您要加入 [ID] 列,则应使用以下内容: WITH (DISTRIBUTION = HASH([ID]));

但是,如果您要加入的表未分布在同一个加入表上,您将在查询执行时获得数据移动作业。或者,如果查找只有 1 列 [Description],为了性能,我会说只是非规范化事实表并将描述带入 FACT 表并将连接保留在 ID 上。

于 2016-09-29T06:36:41.597 回答