0

私は、(DW コンテキストで) テーブルへの増分追加を公開するための手法として、Oracle でパーティションを使用するという概念に精通しています。

(この例のように)

例えば。データ マート ファクト テーブルの毎日のスナップショットは、テーブル内のパーティションにバックグラウンドで読み込まれます。たとえば、日付をパーティション キーとして使用します (パーティションが 1 つだけの 1 つのパーティション テーブル)。ロードが完了し、内容が検証されると、ディクショナリ イベントとしてパーティションを真の宛先テーブル (多くのパーティションを持つ 1 つのパーティション テーブル) に「交換」できます。

SQL Server 2008 でこれと同じタイプの発行モデルを使用できますか?

4

2 に答える 2

0

はい。これは SQL Server 2008 エンタープライズの例です。

年別分割機能1:= Y < 2008, 2:= 2008, 3:= 2009, 4:= 2010, 5:= Y >= 2011

/* First create a partition function */
CREATE PARTITION FUNCTION myPFun (int)
AS RANGE RIGHT FOR VALUES (20080101, 20090101, 20100101, 20110101);
GO

範囲をファイル グループにマップするためのパーティション スキーム。この例では、すべてのパーティションを PRIMARY ファイル グループにマップします。

/* Then a partition scheme */
CREATE PARTITION SCHEME myPRng
AS PARTITION myPFun
ALL TO ( [PRIMARY] ); 
GO

そして、年ごとに分割されたファクト テーブル

/* Fact table partitioned by year */
CREATE TABLE factTbl (DateKey int, Value int)
ON myPRng (DateKey) ;
GO

同じ方法で分割されたステージング テーブル

/* Staging table partitioned the same way as the fact table */
CREATE TABLE stageTbl (DateKey int, Value int)
ON myPRng (DateKey) ;
GO

テストするデータ

/* Populate fact table (years 2008, 2009)*/
INSERT  INTO factTbl
        ( DateKey, Value )
VALUES  ( 20080205, 10 )
,       ( 20080711, 25 )
,       ( 20090525, 43 );

/* Populate staging table (year 2010) */
INSERT  INTO stageTbl
        ( DateKey, Value )
VALUES  ( 20100107, 10 );

そしてパーティションをステージング テーブルからファクト テーブルに切り替えます

/* From staging table to fact table */
ALTER TABLE stageTbl SWITCH PARTITION 4 TO factTbl PARTITION 4;
GO

テストする

SELECT * FROM factTbl

戻り値

DateKey     Value
----------- -----------
20080205    10
20080711    25
20090525    43
20100107    10

詳細については、msdn の記事を参照してください。

于 2010-01-10T18:09:43.460 に答える