2016-05-10 5 views
0

単一のテーブルに基づいてSSASキューブを作成しようとしています。残念ながら、表形式のモードでサービスを実行することは、Analysis Serverモードでインスタンスを実行しているため、オプションではありません。単一のテーブルまたはビューに基づいてSSASキューブを作成する

私は、実際に単一のテーブルまたはビューに基づいてキューブを作成することが可能であると言われている他の投稿をいくつか読んでいます。

質問:単一のソースに基づいて作成するときに、どのようにディメンションと測定値を指定しますか?

データソースビューを作成しましたが、ディメンションと数値データをどのように指定するかはわかりませんでした。私はここで助けを求めると思った。事前に

おかげで、 ビー

答えて

0

あなたは、通常のディメンションを作成のようにちょうどそれらを作成します。

  1. ソリューションエクスプローラで[寸法]を右クリックし、[新しい寸法]を選択してから[既存のテーブルを使用する]を選択します。
  2. テーブルを1つ選択し、キー列を選択します。サロゲートキーがないので、列が一意に決まる列を選択する必要があります。したがって、国 - >州 - >市のデータを持つ場所ディメンションがある場合、多分Cityはユニークで、おそらくCity/Stateです。
  3. ディメンションに含める追加の属性を選択します。
  4. 通常、属性の関係、階層などを定義します。
  5. 新しいキューブを作成するときは、メジャーグループとしてSingleTableを選択し、メジャーを選択して、キューブに追加するために作成した新しいディメンションを選択します。

明らかに、維持するのが難しい種類ですが、確かに可能です。

1

あなたのディメンション・キーがユニークであるためには、あなたが

SELECT DISTINCT Country[,... other things] FROM TheSingleTable 

クエリに(たとえば、国ディメンションの)あなたの寸法を基準とする必要があると思います。

この方法には欠点があります。ディメンションはキューブ自体の外で決してマテリアライズされません。ディメンションデータが間違っていると思われる場合、問題を分析することが非常に困難になります。同じ理由から、ゆっくり変化する次元を作成することは不可能です。

利点は、新しいディメンション・メンバーを検出し、新しいデータが入ったときにディメンション表を移入するためのETL作業を行う必要がないことです。欠点は、すべてのディメンションがテーブル、それはインコヒーレントになるでしょう。

寸法が複数の列のように基づいている場合:次に

SELECT DISTINCT CountryCode,CountryName FROM TheSingleTable 

、二つの列が値マップの範囲ことを保証するために、単一のテーブルまたはETLプロセスには制約がない場合ちょうど1対1のお互いに新しいデータがあれば、ディメンションメンバーシップが狂ってしまいます。

たとえば、CountryCodeが "USA"、国名が "United States"の既存のメンバーが存在します。CountryCode "USA"、CountryName "Uited States"(またはNULL)という表に新しいファクト行が1つだけ入っている場合、これは新しいディメンションメンバーとして解釈されます。重複したキーエラー(運がよければ)、または複数のディメンションメンバーを偽ったディメンションを処理します。

本当に小さくてシンプルなプロジェクトでない限り、新しいデータがこの種のデザインを混乱させるのはとても簡単です。それは、あなたが入ってくるアップデートを集中的に分析し、 。

関連する問題