SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

難解クエリー言語「MDX」に挑戦

多次元データベースクエリー言語「MDX」入門
~よく使う関数・後編(6)

第6回

  • X ポスト
  • このエントリーをはてなブックマークに追加

 MDXは難解で、習得が困難なクエリー言語であると言われています。この連載では、MDXを可能な限り短期間で実践で使えるレベルまで習得できるよう、使用例とともに入門編として解説します。前回から引き続き今回も、MDXに用意されている数多くの関数の中からよく使うものについて解説します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 MDXは難解で、習得が困難なクエリー言語であると言われています。この連載では、全7回をとおして、難解と言われているMDXを可能な限り短期間で実践で使えるレベルまで習得できるよう、基本的な考え方やよく使う関数などに範囲を限定し、使用例とともに入門編として解説しています。

 なお、本記事はマイクロソフト社製SQL Server 2005および2008のAnalysis Servicesを前提として解説しています。MDXにはいわゆる「方言」が多く、記述内容が他の多次元データベース製品に必ずしも適合しない可能性があることをあらかじめご了承ください。

 第6回目となる今回は前回に引き続き、MDXに用意されている数多くの関数の中からよく使うものについて説明します。

対象読者

  • Microsoft SQL Server Analysis Servicesの基礎知識があり、これからMDXを覚えようという方

これまでの連載

必要な環境

  • Microsoft SQL Server 2005 Analysis ServicesまたはMicrosoft SQL Server 2008 Analysis Services

よく使う関数(後編)

 MDXには数多くの関数が用意されており、さまざまな用途に使用できます。今回は前回に引き続き、それら関数のうち、よく使うものを厳選して解説します。

1).Lag()、.Lead()

 構文:メンバー.Lag(相対位置)(戻り:メンバー)

    メンバー.Lead(相対位置)(戻り:メンバー)

 指定されたメンバーから相対位置指定された位置のメンバーを戻します。

.Lag()、.Lead()使用時の構造
.Lag()、.Lead()使用時の構造
  1. [TOKUISAKI].[TODOFUKEN-TOKUISAKI].[北海道].[函館物産].Lead(2)
    [TOKUISAKI].[TODOFUKEN-TOKUISAKI].[神奈川].[横浜住宅].Lag(2)
  2. [TOKUISAKI].[TODOFUKEN-TOKUISAKI].[東京都].Lead(2)

 Leadは、同じ階層レベル内での相対位置分後ろのメンバーを戻します。Lagは前のメンバーを戻します。

2)LastPeriods()

 構文:LastPeriods(個数,メンバー)(戻り:メンバー)

 指定されたメンバーからさかのぼって指定個数分のメンバーからなるセットを戻します。

LastPeriods()使用時の構造
LastPeriods()使用時の構造
  1. LastPeriods(4,[TOKUISAKI].[TODOFUKEN-TOKUISAKI].[神奈川].[横浜住宅])

 LastPeriodsは、同じ階層レベル内での「直近」のメンバーからなるセットなので、計算されるメンバーとして、日付ディメンションで「過去6か月分の合計」などを取得する場合に使います。

3)ParallelPeriod()

 構文:ParallelPeriod(レベル,相対位置,メンバー)(戻り:メンバー)

 指定されたメンバーを指定されたレベルで相対位置分ずらしたメンバーをもどします。

ParallelPeriod()使用時の構造
ParallelPeriod()使用時の構造
  1. ParallelPeriod([URIATE DATE].[YYYY-MM-DD].[MONTH],-3,
    [URIAGE DATE].[YYYY-MM-DD].[2009年].[1月].[1月2日])
  2. ParallelPeriod([URIATE DATE]. [YYYY-MM-DD].[YEAR],1,
    [URIAGE DATE].[YYYY-MM-DD].[2008年].[12月].[12月1日])

 1は[2009年].[1月].[1月2日]から[MONTH]レベルで3つ前のレベルの同じ位置にいるメンバーを、2は[2008年].[12月].[12月1日]から[YEAR]レベルで1つ後ろのレベルの同じ位置にいるメンバーを戻しています。

 この関数は計算するメンバー内でCurrentMemberの前月同日や前年同日、同曜日などを取得する場合に使用します。

次のページ
4)Descendants()

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
難解クエリー言語「MDX」に挑戦連載記事一覧

もっと読む

この記事の著者

大家 正巳(オオヤ マサミ)

株式会社ヴィバーク代表取締役。 システムアナリスト。 この度、当社では SQL Server Analysis Services に接続し、MDXの発行が可能な BIシステム構築ツール「CubeWalker」を開発しました。2009年10月より発売致します。 高速かつ安価なBIシステム作りに、是非お...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4339 2009/10/14 15:49

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング