はじめに
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(相対位置)(戻り:メンバー)
指定されたメンバーから相対位置指定された位置のメンバーを戻します。
[TOKUISAKI].[TODOFUKEN-TOKUISAKI].[北海道].[函館物産].Lead(2)
[TOKUISAKI].[TODOFUKEN-TOKUISAKI].[神奈川].[横浜住宅].Lag(2)
[TOKUISAKI].[TODOFUKEN-TOKUISAKI].[東京都].Lead(2)
Lead
は、同じ階層レベル内での相対位置分後ろのメンバーを戻します。Lag
は前のメンバーを戻します。
2)LastPeriods()
構文:LastPeriods(個数,メンバー)(戻り:メンバー)
指定されたメンバーからさかのぼって指定個数分のメンバーからなるセットを戻します。
LastPeriods(4,[TOKUISAKI].[TODOFUKEN-TOKUISAKI].[神奈川].[横浜住宅])
LastPeriods
は、同じ階層レベル内での「直近」のメンバーからなるセットなので、計算されるメンバーとして、日付ディメンションで「過去6か月分の合計」などを取得する場合に使います。
3)ParallelPeriod()
構文:ParallelPeriod(レベル,相対位置,メンバー)(戻り:メンバー)
指定されたメンバーを指定されたレベルで相対位置分ずらしたメンバーをもどします。
ParallelPeriod([URIATE DATE].[YYYY-MM-DD].[MONTH],-3,
[URIAGE DATE].[YYYY-MM-DD].[2009年].[1月].[1月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
の前月同日や前年同日、同曜日などを取得する場合に使用します。