2017-04-19 19 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を使用する利点はありますか? –

関連する問題