4

4 つのディメンション テーブルと 1 つのファクト テーブルに変換した 3 つの売上データ テーブルがあります。

すべてが適切に入力されており、ファクト テーブルに「日次売上」と「週次売上」が必要です。

私の元の3つのテーブルは次のとおりです。

  • Order(order# (PK), product-id (FK), order-date, total-order, customer# (FK))
    ドメインは数値、数値、日付、通貨、数値

  • Product(product-id (PK)、prod-name、unit-cost、manufacture-name)
    ドメインは、numeric、nvarchar、money、nvarchar です。

  • Customer(顧客番号 (PK)、顧客名、住所、電話番号)
    ドメインは Number、nvarchar、nvarchar、nvarchar です。

データ ウェアハウスのスター スキーマは、次の場所にリンクされています。

ここに画像の説明を入力

そのため、各テーブルには 10 レコードしかなく (小さい!)、現在コンセプトをテストしています。Fact テーブルの "daily-order" は、Order テーブルの "total-order" から簡単に変換できます。私の難しさは、週の合計を取得することです。派生列と式 "DATEPART("wk",[order-date])" を使用して、時間ディメンションに週列を作成しました。

私の質問は、この時点から毎週の売上をどのように得るかということだと思います。私の最初の推測は、Fact テーブルの読み込みに使用した Lookup シーケンスの終了後に、別の派生列を使用することです。私の2番目の推測は.....スタックオーバーフローで助けを求めることです。どんな助けでも大歓迎です、私は必要な情報を提供します!前もって感謝します!

記録のために、以前に説明したように派生列を作成しようとしましたが、受け入れられる構文を理解できませんでした....

EDIT毎週の売上列を製品レベルで一覧表示したいのですが、DATEPART を使用して週の列を取得したので、過去 7 日間は必要なく、各週の合計だけが必要です。私の販売データは 2 週間連続でしかないので、ファクト テーブルには 1 つが合計 7 回、2 つ目が合計 3 回表示されるはずです。これは、元の Order テーブルから、または DW 環境にあるテーブルから派生させることができます。できれば後者。1つの注意点は、私は主にSSISとそのツールに制限されていることです(「SQL構文の実行」ツールがあるため、引き続きクエリを使用できます)

4

1 に答える 1

3

のデータ フロー内で、毎日のデータを読み込んでいるため、金額を埋めるのFact-sales困難です。weekly-orderマルチキャスト変換を使用し、それに集計を追加して、製品、顧客、注文、および週の値を合計する必要があります。簡単だ。問題は、そのデータをデータ フロー内の実際の詳細レベル情報に結び付ける方法です。Merge Join はできますが、できません。

ElectricLlamaコメントで指摘されているように、これからやろうとしていることは、粒度のレベルを混合することです。週ごとの金額がテーブルに保存されていない場合は、必要なディメンションでスライスされたすべての金額を追加できます。週単位のデータを同じレベルに配置すると、ユーザーは日単位の列しか集計できなくなります。おそらく、週ごとの値は加算されません。

おそらく、週の値を累積し、任意のレコード (週の最初の日、3 日目、最後の日など) にのみ保存することで、それを偽造できるからです。これで相加的な問題は解決しますが、ユーザーはその週の集計値を保持する曜日を覚えておく必要があります。さらに、付加価値の問題を解決するために選択した正確な曜日に注文しない限り、その集計行の偽の注文レコードを生成することになります。

正しい、求められていない解決策はweekly-order、ファクト テーブルから を削除し、データ ディメンションを強化して、人々が週ごとの金額を決定できるようにすることです。データをウェアハウスから分析エンジンに持ち込まない場合は、週ごとの集計を事前に計算し、それらをレポート テーブル/ビューに具体化できます。

ソースデータ

簡単なシナリオを見てみましょう。顧客が 3 つの注文を出し、そのうち 2 つが同じ製品に対して同じ日に行われました (1 つが速達配送、その他の標準であった可能性があります)。

SalesDate |Customer|Product|Order|Amount
2013-01-01|1       |20     |77   |30
2013-01-01|1       |30     |77   |10
2013-01-02|1       |20     |88   |1
2013-01-02|1       |20     |99   |19

ファクト テーブル

ユーザーが好みのツールをテーブルに向けようとすると、数字が正しくないために電話がかかってきます。または、後で 50 個の再注文が必要だった製品 20 を 150 個補充したため、後で電話を受けることになります。

SalesDate |Customer|Product|Order|daily-order|weekly-order
2013-01-01|1       |20     |77   |30         |50
2013-01-01|1       |30     |77   |10         |10
2013-01-02|1       |20     |88   |1          |50
2013-01-02|1       |20     |99   |19         |50
于 2013-04-08T01:44:49.850 に答える