我继承了Azure SQL数据仓库的一个实例。在SQLDW中,有一个在日期列上分区的表。
我希望通过将分区切换到另一个表来存档2016年的数据。但我似乎无法确定哪些分区包含2016年数据。
我运行了以下查询,该查询告诉我有多少分区与表关联,但我无法确定哪些分区包含2016数据。
SELECT sch.name,
tbl.name,
idx.name,
part.*
FROM sys.schemas sch
INNER JOIN sys.tables tbl ON sch.schema_id = tbl.schema_id
INNER JOIN sys.partitions part ON tbl.object_id = part.object_id
INNER JOIN sys.indexes idx ON part.object_id = idx.object_id AND part.index_id = part.index_id
WHERE sch.name = 'myschema' AND
tbl.name = 'mytable'
如何确定哪些分区包含2016年数据?
答案 0 :(得分:0)
由于这是Azure SQL数据仓库,我假设您的表具有聚簇colmnstore索引。 在这种情况下,您可以使用pdw_nodes_column_store_segments来查找分区。 尝试这样的事情:
DECLARE @object int
SET @object = OBJECT_ID('YourTable')
SELECT Object_name(p.object_id) as TableName, p.partition_number,
c.name,
min_data_id, max_data_id, segment_id, s.row_count
FROM [sys].[pdw_nodes_column_store_segments] s
INNER JOIN sys.partitions AS p
ON s.hobt_id = p.hobt_id
JOIN sys.columns c
ON c.object_id =p.object_id
AND c.column_id = s.column_id
WHERE p.object_id = @object ORDER BY p.partition_number, s.column_id, segment_id;
GO