Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

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

第6回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/10/14 14:00

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

目次

はじめに

 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の前月同日や前年同日、同曜日などを取得する場合に使用します。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

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

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

バックナンバー

連載:難解クエリー言語「MDX」に挑戦
All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5