【发布时间】:2019-02-18 23:50:42
【问题描述】:
我正在使用 Azure SQL 数据仓库 Gen 1,我创建了一个这样的分区表
CREATE TABLE [dbo].[StatsPerBin1](
[Bin1] [varchar](100) NOT NULL,
[TimeWindow] [datetime] NOT NULL,
[Count] [int] NOT NULL,
[Timestamp] [datetime] NOT NULL)
WITH
(
DISTRIBUTION = HASH ( [Bin1] ),
CLUSTERED INDEX([Bin1]),
PARTITION
(
[TimeWindow] RANGE RIGHT FOR VALUES ()
)
)
如果没有这样的边界,我应该如何分割一个分区?
首先我想如果我可以通过表名获取分区边界,那么我可以编写一个 if 语句来确定是否添加分区边界。
但是我找不到将表与其对应的分区值关联的方法,所有分区的分区值都可以通过
SELECT * FROM sys.partition_range_values
但它只包含 function_id 作为标识符,我不知道如何加入其他表,以便我可以通过表名获取分区边界。
【问题讨论】:
-
你认为为什么需要分区?你的表有多少行?我问是因为分区虽然在 SQL Server 中很自然,但在 ASDW 中可能是一种反模式。
-
我需要按月截断数据进行内务处理,每个月生成3亿条记录是不可能逐条删除的。
-
Lucas,根据您在 ELT 流程中的其他操作,您可能会发现对表进行 CTAS 更有效,不包括要删除的行。也就是说,每月 3 亿次让您进入分区开始成为一种有用技术的范围。
标签: azure-sqldw sql-data-warehouse