表形式のデータベースから情報を取得するのは簡単です–いくつかの基本的なDAX関数を使用して照会するだけです! この記事では、いくつかのMDX式を使用して表形式モデルを照会し、DAXクエリの結果を調べ、テーブルからのデータを分析する方法を学習します。
要件
MDXを使用したクエリの前提条件は、SSAS表形式インスタンスがインストールされ、SSAS表形式モデルデータベースが展開されているSQL Server Management Studio2014以降です。
環境の準備
MDXを使用したSSAS表形式モデルデータベースのクエリは、SQL Server Management StudioのMDXクエリウィンドウで実行されます。
多次元式(MDX)概要
MDXは、OLAPキューブ内の多次元データを照会および分析できる式言語です(SSAS多次元モデルデータベースなど)。 これは主に多次元モデルデータベースを照会するために設計されていますが、表形式のモデルデータベースを照会することもできます。 一方、Daxクエリ式は表形式のモデルデータベースに固有であるため、Dax関数は多次元モデルデータベースをクエリできません。
構造的には、MDXにはXMLA指定の構文が組み込まれています。 これはT-SQLに似ているため、多次元データ構造を管理および整理できるDDL文がいくつか存在します。 これは、SSAS多次元モデルデータベースにのみ適用されます。
複雑さに関しては、MDX式の主なタイプは次のとおりです。)、スカラーおよびオブジェクト指向。 これらの型は、文およびMDX関数に対応する複雑な式に結合されます。
SSAS表形式モデルデータベースのクエリについて言えば、この記事の式は、単純なキューブ式として、スカラー型と定数型を組み合わせたものです。 これらの式は、表形式のキューブからデータを取得し、結果を列に表示し、データを並べ替えて、さらなる分析のために準備するだけです。
MDX
を使用してSSAS表形式モデルデータベースを照会するほとんどのMDXクエリの先頭には、SELECTステートメントがあり、その後にFROMステートメントがあります。 これはT-SQLと非常によく似ています(DAXのEvaluate文とは対照的に):
1
2
3
|
から選択
|
このクエリは最も単純なクエリで、値1(“true”)を返します。 これは、AW表形式データベースが存在することを意味します。
ProductテーブルからテーブルProduct Nameを選択すると、T-SQLのSELECTステートメントは次のようになります:
1
2
3
|
dboを選択します。製品からの製品名
|
MDXで記述された対応する文は、論理的には次のようになります:
1
2
3
4
5
|
{を選択します。.}
から
|
daxの括弧のような演算子である中括弧{}に注目してください。 それらは文を囲み、クエリ記述の複雑さを追加することを可能にします。 MDXクエリは、DAXクエリと同様に大文字と小文字を区別しません。
このクエリは、Aw表形式キューブからProduct Name列とProductテーブルを取得しますが、単一の列を表示する代わりに、実行エラーが発生します:
主な理由は、データベースモデルと構文のタイプにあります: 多次元モデルデータベースと表形式モデルデータベースの両方には、重要な概念として次元がありますが、その構文のMDXは、列、行、およびその他の要素(多次元データベー
SSAS表形式モデルデータベースを照会する場合、MDXはデータを適切に表示するために、列と行の少なくとも2つの軸を認識する必要があります:
1
2
3
4
5
6
|
{を選択します。.}列では、
{。.}行
から
|
ここで、クエリに軸を設定し、その結果が表示されます:
ご覧のように、製品名列のすべての値は結果の列に表示され、行には対応する年(会計年度の列)とアイテムの数(この場合は自転車部品)が表示されます。 したがって、MDXクエリでは3つの軸の代わりに、SSAS表形式モデルデータベースをクエリする場合、データを取得するのに十分な軸は2つだけです。
この例では、両方の座標軸内の同じテーブルを照会します:
1
2
3
4
5
6
|
{を選択します。.}列では、
{。.}行
から
|
クエリの結果は次のようになります:
この場合、値”1″は”true”を意味し、値”(null)”は標準コスト列内に関連するデータがないことを意味します。
-
指定された列と空でない関数
からの特定の値(アイテム)の表示MDXでは、表形式のモデルデータベースの列からの単一の値を表示することができます:
12345{{を選択します。.}.アイテム(53)}上0からこの例では、結果はモデル名列から53番目の項目(ランダムに選択された)を示しています。 定義された軸”on0″に注意してください–”columns”(さらなる例で説明します)または”rows”を定義する代わりに、その単一の値はクエリ結果の表形式ビューの最初の先頭に
空でない関数を含めると、特定のメジャー(インターネット合計売上)からの単一の計算値が表示されます:
123456空でない{を選択します。}列から -
タプル関数
タプルは、データのセット、二つ以上のディメンションメンバー(この場合は年の列から二つの値)の組み合わせを指定されています。
12345{を選択します。. : ..}行で、{。}列から年の範囲を作成する年列から指定された値と、クエリ結果のインターネット合計マージンからの対応する値に注意してください。
-
CHILDREN And MEMBER Expression
この式は、指定された列またはメジャーに関連するデータのセットを示します。 通常、これらの値のセットは子またはメンバーとして提示され、階層に関連しています。 クエリ結果では、階層的に並べ替えられます。
12345選択します。 列では、。.行の子からこの場合、インターネット合計貨物メジャーは、貨物列を使用した計算に基づいているため、それらを組み合わせることができます。
中括弧はクエリには存在しませんが、クエリはそれらがない場合でも有効です。
CHILDREN式を使用して目的の列の値のみを表示するには、関連しない列に対応して、次のクエリを使用します:
123456{を選択します。.}オン0,{..1から注:この式では、on0はon columnsを表し、on1はon rows軸を表します。
メンバー式を使用したもう一つの例を次に示します
12345選択します。 列では、。.行のメンバーから -
WHERE句
WHERE句の追加は、テーブルから特定のデータをフィルタリングする1つの方法であり、T-SQLのWHERE句に似ています:
1234567{を選択します。.}列では、{。.}行からwhere{..}国の地域名列”France”の値は、Geographyテーブルの列Cityに関連しており、結果に含まれるクエリはFranceの都市のみです。
WHEREステートメントは実際にはスライサー軸であり、多次元モデルデータベースと表形式モデルデータベースの両方に余分な次元を追加します。
-
CASE expression
この式は、要素の論理順序に基づく比較であり、クエリ結果を返します。
この例では、Internet Total Salesメジャーから指定された値の範囲に対応するSales Amount Overviewという新しいメジャーを作成します:
123456789101112131415メンバーと一緒に。の場合と同様です。69712.49のときに’Great’1045.6のときに’Bad’else'(normal)’endselect{., .}列,{..メンバー}行から
私はあなたがこの記事を楽しんで、MDXでSSAS表形式のモデルデータベースを照会して幸せを願っています!
- キューブ式とサブキューブ式の使用
- MDX言語リファレンス(MDX)
- MDXクエリの基礎(Analysis Services)
- 投稿者
- 最近の投稿
Danielは現在、ApexSQL LLCでソフトウェアセールスエンジニアとして働いており、BI環境を専門としています。
- SQL Server tempdbデータベースを監視する方法-July6,2017
- sql Serverインデックスの合計サイズを監視する方法-June12,2017
- 暗号化されたSQL Server接続を設定して使用する方法-May8, 2017