パーティションの作成

適用対象:SQL Server 2019 以降の Analysis Services Azure Analysis Services Fabric/Power BI Premium

このレッスンでは、FactInternetSales テーブルをより小さな論理部分に分割し、それぞれを独立して処理 (再表示) することを可能にするパーティションを作成します。 既定では、モデルに含めるすべてのテーブルには、すべてのテーブルの列と行を含む 1 つのパーティションがあります。 FactInternetSales テーブルでは、データを年で除算します。テーブルの 5 年間ごとに 1 つのパーティション。 これにより、各パーティションを個別に処理できるようにします。 詳細については、「 [パーティション]」を参照してください。

このレッスンの推定所要時間: 15 分

前提条件

この記事は、表形式モデルのチュートリアルの一部であり、チュートリアルでの順番に従って実行する必要があります。 このレッスンの作業を実行する前に、前のレッスン「レッスン 9: 階層を作成する」を終えている必要があります。

パーティションの作成

FactInternetSales テーブルでパーティションを作成する

  1. Tabular Model Explorer で Tables を展開し、FactInternetSales>Partitions を右クリックします。

  2. パーティション マネージャーで、[ コピー] をクリックし、名前を FactInternetSales2001 に変更します。

    パーティションに特定の期間内の行のみを含める必要があるため、2001 年の場合は、クエリ式を変更する必要があります。

  3. [デザイン] をクリックしてクエリ エディターを開き、FactInternetSales2001 クエリをクリックします。

  4. プレビューでは、[ OrderDateKey ] 列見出しの下矢印をクリックし、[ 数値フィルター>の間] をクリックします。

    [間の数値フィルター] > が選択されていることを示すPower Query エディターのスクリーンショット。

    OrderDateKey のデータ型が整数 (整数) であることがわかります。 これは、データ ウェアハウスの日付キー列で日付を表す最も一般的な方法です。 年をフィルター処理します。これは OrderDateKey の値の最初の 4 つの数値です。

  5. [行のフィルター処理] ダイアログ ボックスの [ 行の保持場所: OrderDateKey] で、 を 以上のままにし、数値フィールドに 「20010101」と入力します。 And 演算子は選択したままにし、 は 以下のままにしてから、数値フィールドに「20011231」と入力し、[OK] をクリックします

    適切なオプションが選択され、設定されていることを示す [行のフィルター] ダイアログ ボックスのスクリーンショット。

    [OK] をクリックすると、クエリ エディターに戻ります。 [適用されたステップ] に、フィルター処理された行という名前の別のステップが表示されていることに注目してください。 このフィルターでは、2001 年の注文日のみを選択します。

  6. [インポート] をクリックします。

    Partition Manager のクエリ式に Filtered Rows 句が追加されています。

    [フィルター処理された行] 句が強調表示されているパーティション マネージャーのクエリ式のスクリーンショット。

    このステートメントでは、このパーティションには、フィルター処理された行句で指定されている 2001 年に OrderDateKey が含まれる行のデータのみを含める必要があることを指定します。

2002 年のパーティションを作成するには

  1. パーティションの一覧で、作成した FactInternetSales2001 パーティションをクリックし、[ コピー] をクリックします。 パーティション名を FactInternetSales2002 に変更します。

    Query Editor を使って新しい Filtered Rows 句を作成する必要はありません。 2001 のクエリのコピーを作成したので、2002 のクエリを少し変更するだけで済みます。

  2. クエリ式では、このパーティションに 2002 年の行のみを含めるには、Filtered Rows 句の整数の year 部分をそれぞれ次のように2002010120021231に置き換えます。

    let
        Source = #"SQL/probiuesqlserver database windows net;AdventureWorksDW",
        dbo_FactInternetSales = Source{[Schema="dbo",Item="FactInternetSales"]}[Data],
        #"Filtered Rows" = Table.SelectRows(dbo_FactInternetSales, each [OrderDateKey] >= 20020101 and [OrderDateKey] <= 20021231)
    in
        #"Filtered Rows"
    
    

2003、2004、2005 のパーティションを作成する。

  • 前の手順に従って、2003、2004、2005 のパーティションを作成し、フィルター処理された行句の年を変更して、その年の行のみを含めます。

FactInternetSales パーティションを削除する

各年度のパーティションを作成したら、FactInternetSales パーティションを削除することで、パーティションの処理で Process All を選択した際の重複を防ぐことができます。

FactInternetSales パーティションを削除する

  • 既定の パーティション パーティションをクリックし、[削除] をクリック します

パーティションの処理

Partition Manager で、新しく作成した各パーティションの Last Processed 列を見ると、それらパーティションが処理された履歴がないことが分かります。 パーティションを作成したら、[Process Partitions] または [Process Table] 操作を実行してパーティションのデータを再表示してください。

FactInternetSales パーティションを処理する

  1. [OK] をクリックして Partition Manager を閉じます。

  2. [拡張機能モデル>プロセス プロセス> パーティション]> をクリックします

  3. [Process Partitions] ダイアログ ボックスで ModeProcess Default に設定されていることを確認します。

  4. 作成した 5 つのパーティションのそれぞれについて、 [Process] 列のチェックボックスを選択し、[OK] をクリックします。

    Fact Internet Sales 2005 行が強調表示されている [パーティションの処理] ダイアログ ボックスのスクリーンショット。

    資格情報の入力を求められた場合は、レッスン 2 で指定した資格情報を入力します。

    [データ処理] ダイアログ ボックスが表示され、各パーティションのプロセスの詳細が表示されます。 転送される行数はパーティションごとに異なります。 各パーティションには、Filtered rows ステートメントで指定された年の行のみが含まれます。 処理を終えたら、[Data Processing] ダイアログ ボックスを閉じます。

    [成功] を示す [データ処理] ダイアログ ボックスのスクリーンショット。

次のステップ

次のレッスンに進む: レッスン 11: ロールの作成