在分区中查找数据

时间:2017-04-19 14:01:18

标签: azure azure-sqldw

我继承了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年数据?

1 个答案:

答案 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