2017-04-19 45 views
1

我繼承了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

由於這是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 
+1

我走了一條不同的路線。而是使用pdw_nodes_column_store_segments,我使用了sys.data_spaces,sys.partition_schemes,sys.partition_functions和sys.partition_range_values。 使用pdw_nodes_column_store_segments有什麼好處嗎? –