SQLShackを使用してSSAS表形式モデルデータベースを照会する方法

表形式のデータベースから情報を取得するのは簡単です–いくつかの基本的な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)”は標準コスト列内に関連するデータがないことを意味します。

  1. 指定された列と空でない関数

    からの特定の値(アイテム)の表示MDXでは、表形式のモデルデータベースの列からの単一の値を表示することができます:

    1
    2
    3
    4
    5

    {{を選択します。.}.アイテム(53)}上0
    から

    この例では、結果はモデル名列から53番目の項目(ランダムに選択された)を示しています。 定義された軸”on0″に注意してください–”columns”(さらなる例で説明します)または”rows”を定義する代わりに、その単一の値はクエリ結果の表形式ビューの最初の先頭に

    空でない関数を含めると、特定のメジャー(インターネット合計売上)からの単一の計算値が表示されます:

    1
    2
    3
    4
    5
    6

    空でない
    {を選択します。}列
    から

  2. タプル関数

    タプルは、データのセット、二つ以上のディメンションメンバー(この場合は年の列から二つの値)の組み合わせを指定されています。

    1
    2
    3
    4
    5

    {を選択します。. : ..}行で、
    {。}列
    から

    年の範囲を作成する年列から指定された値と、クエリ結果のインターネット合計マージンからの対応する値に注意してください。

  3. CHILDREN And MEMBER Expression

    この式は、指定された列またはメジャーに関連するデータのセットを示します。 通常、これらの値のセットは子またはメンバーとして提示され、階層に関連しています。 クエリ結果では、階層的に並べ替えられます。

    1
    2
    3
    4
    5

    選択します。 列では、
    。.行の子
    から

    この場合、インターネット合計貨物メジャーは、貨物列を使用した計算に基づいているため、それらを組み合わせることができます。

    中括弧はクエリには存在しませんが、クエリはそれらがない場合でも有効です。

    CHILDREN式を使用して目的の列の値のみを表示するには、関連しない列に対応して、次のクエリを使用します:

    1
    2
    3
    4
    5
    6

    {を選択します。.}オン0,
    {..1
    から

    注:この式では、on0はon columnsを表し、on1はon rows軸を表します。

    メンバー式を使用したもう一つの例を次に示します

    1
    2
    3
    4
    5

    選択します。 列では、
    。.行のメンバー
    から

  4. WHERE句

    WHERE句の追加は、テーブルから特定のデータをフィルタリングする1つの方法であり、T-SQLのWHERE句に似ています:

    1
    2
    3
    4
    5
    6
    7

    {を選択します。.}列では、
    {。.}行
    から
    where{..}

    国の地域名列”France”の値は、Geographyテーブルの列Cityに関連しており、結果に含まれるクエリはFranceの都市のみです。

    WHEREステートメントは実際にはスライサー軸であり、多次元モデルデータベースと表形式モデルデータベースの両方に余分な次元を追加します。

  5. CASE expression

    この式は、要素の論理順序に基づく比較であり、クエリ結果を返します。

    この例では、Internet Total Salesメジャーから指定された値の範囲に対応するSales Amount Overviewという新しいメジャーを作成します:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

    メンバーと一緒に。
    の場合と同様です。
    69712.49のときに’Great’
    1045.6のときに’Bad’
    else'(normal)’
    end
    select
    {.
    , .
    }列
    ,{..メンバー}行
    から

私はあなたがこの記事を楽しんで、MDXでSSAS表形式のモデルデータベースを照会して幸せを願っています!

  • キューブ式とサブキューブ式の使用
  • MDX言語リファレンス(MDX)
  • MDXクエリの基礎(Analysis Services)

  • 投稿者
  • 最近の投稿
ダニエル-ティクヴィッキ
ダニエルは、彼が浮上し、常に学習しているITの世界の渦に遭遇した司書です。 彼は本が好きで、単なるあらゆる形の芸術表現(ミュージシャン/詩人であること)、地下出版社(同人誌と実験音楽)である。 また、興味のあるポイントには、神学、神話、疑似科学が含まれます。
Danielは現在、ApexSQL LLCでソフトウェアセールスエンジニアとして働いており、BI環境を専門としています。

ダニエル-ティクヴィッキ
Daniel Tikvickiによる最新の投稿(すべて見る)
  • SQL Server tempdbデータベースを監視する方法-July6,2017
  • sql Serverインデックスの合計サイズを監視する方法-June12,2017
  • 暗号化されたSQL Server接続を設定して使用する方法-May8, 2017

Write a Comment

メールアドレスが公開されることはありません。