型付きメジャーの操作

この項の内容:

型付きメジャーについて

テキスト・メジャーの操作

日付メジャーの操作

テキスト・メジャーと日付メジャーに対するデータベース操作の実行

フォーマット文字列の操作

型付きメジャーについて

型付きメジャーを使用すると、Essbaseの分析機能を拡張できます。メジャーは、数値のほか、テキスト型や日付型の値に関連付けることもできます。

テキスト・メジャーには、表示されるどの次元メジャーでも、「テキスト」のタグが付けられます。これにより、セル値に、テキスト・ラベルの一覧表示の1つを含めることができます。これらのラベルは、テキスト・リストと呼ばれるマッピング・アーティファクトを使用して、アウトライン・レベルで定義されます。

日付メジャーには、メジャーが表示される次元で「日付」のタグが付けられます。日付メジャーにより、セル値をフォーマットされた日付形式で使用可能となります。

次の一般的なガイドラインは、テキスト・メジャーと日付メジャーの両方に適用されます:

  • 既存のメジャーの次元(たとえば、勘定科目)に追加します。

  • 集計は行われません。デフォルトでは、テキスト・メジャーと日付には集計なし演算子(^)が割り当てられています。

  • メジャーが集計されるように設計されていない場合は、データをロードしたレベルと同じレベルでクエリーを行う必要があります。

  • アウトラインで型付きメジャーを使用可能にした後は、アウトラインを前の状態に戻して、型付きメジャーをサポートしないようにできません。

  • テキスト・メジャーと日付メジャーの機能は、集約ストレージとブロック・ストレージの両方のアプリケーションに適用されます。

テキスト・メジャーの操作

テキスト・メジャーの概要とワークフロー

テキスト・メジャーは、Essbaseの分析機能を、数値データを超えてテキストベースのコンテンツまで拡張します。テキストのコンテンツの格納と分析は、セルがテキスト値の確定リストの1つを持つ必要がある場合に便利です。たとえば、5つの異なる色の製品が販売されることがあります。色はテキスト・メジャーであり、その値はそれらの5つの色のいずれかである必要があります。確定リストにない色は、Essbaseでは範囲外とみなされます。

テキスト・メジャーはデータベース・レベルで作成します。テキスト・メジャーは、テキスト文字列のセットの対応する数値IDへのマッピングによって可能になります。これらのマッピングは、ユーザーが作成するデータベースレベルのテキスト・リスト・オブジェクトに含まれます。

テキスト・メジャーを使用可能にして使用するには、次のワークフローを使用します:

  1. アウトライン・プロパティで、型付きメジャーを使用可能にします。

  2. テキスト・リスト・オブジェクトを作成して、使用可能なテキスト値を保管し、各テキスト値を序数にマップして、Essbaseでテキスト値を操作できるようにします。オプションで、欠落と範囲外を序数にマップします。

    注:

    各数値には、テキスト値を1つのみマップできます。

  3. アウトライン内(会計次元内)にテキスト・メジャーを作成し、メンバー・プロパティで次のことを行います:

    1. タイプをテキストとして定義します。

    2. テキスト・リスト・オブジェクトに関連付けます。

テキスト・メジャーと日付メジャーに対するデータベース操作の実行を参照してください。

テキスト・リスト・オブジェクトとテキスト・リスト・メンバー

テキスト・メジャーに対応するセルは、最大1024個の有効なテキスト値の確定リストの1つを持つことができます。Essbaseでは、内部的にはテキスト値を数値として保管する必要があります。したがって、テキスト値を数値にマップする必要があります。テキスト値と数値の間のマッピングは、テキスト・リスト・オブジェクトを作成することで定義します。テキスト・リスト・オブジェクトは、テキスト値と、それぞれのテキスト値に対応する数値のリストで構成されます。

たとえば、表30のコンテンツの「顧客満足度レベル」というテキスト・リスト・オブジェクトを作成できます。名前列には、テキスト・メジャーとして可能なテキスト値が含まれ、ID列はEssbaseで使用される内部数値を表します。

表 30. テキスト・リスト・オブジェクトの例

名前

ID

欠落

#MISSING

該当なし

#OUTOFRANGE

高い

1

普通

2

低い

3

各テキスト値は、一意の数値にマップする必要があります。テキスト・リスト・オブジェクト内の整数にマップしないテキスト値は、Essbaseでは無効とみなされます。

最初の2つのID (#MISSINGと#OUTOFRANGE)は、テキスト・データが無効または空であるケースを処理するためのものです。たとえば、ユーザーが「Average」などのマップされていない値をテキスト・メジャーにロードしようとすると、セル値は更新されず、以降のクエリーでは#MISSINGと表示されます。マップされていない数値セル値をユーザーがロードすると、以降のクエリーでは該当なしが戻されます。

#MISSINGと#OUTOFRANGEを除き、他のすべてのIDは整数である必要があります。

日付メジャーの操作

日付メジャーの概要

日付メジャーを使用して、メンバーを日付型の値に関連付けることができます。メジャー次元の日付を処理する機能は、時間次元を使用して表現するのが困難な分析のタイプで役立ちます。

たとえば、資産の減価償却を分析するアプリケーションで、一連の資本資産の取得日を追跡する必要があるとします。この会社は事業を50年間行っているため、取得日の範囲が実現可能な時間次元モデリングの範囲を超えて長期にわたっています(時間次元がカバーするのは5年のみです)。

日付メジャーは、長期間にわたる値を表現できることに加え、時間次元で取り込まれるデータ値(時や分など)よりも細分度の低いデータ値を取り込むこともできます。

日付メジャーの実装

日付メジャーは、集約ストレージ・データベースとブロック・ストレージ・データベースでサポートされます。日付メジャーはデータベース・レベルで作成します。

日付メジャーを使用可能にして使用するには、次のワークフローを使用します:

  1. アウトライン・プロパティで、型付きメジャーを使用可能にします。

  2. アウトライン・プロパティで、日付フォーマット(たとえば、yyyy-mm-dd)を選択します。アウトライン内のすべての日付メジャーで同じフォーマットを使用する必要があります。

  3. アウトライン内(会計次元内)に日付メジャーを作成し、メンバー・プロパティでその日付メジャーを「日付」型として定義します。

たとえば、ASOsamp.Sampleでは、アウトラインの型付きメジャーを使用可能にし、日付フォーマットを選択して、「日付」型として定義されたIntroDateというメジャーを追加します。

日付値は内部的には数値として保管されますが、それらの値は、Essbaseにはフォーマットされた日付文字列としてロードされます。クエリーされると、日付メジャーは選択された日付フォーマットに応じて表示されます。

テキスト・メジャーと日付メジャーに対するデータベース操作の実行を参照してください。

日付メジャーをサポートする関数

日付メジャーに基づいた計算に便利なMDX関数は次のとおりです。

  • DateDiff

  • DatePart

  • DateRoll

  • FormatDate

  • GetFirstDate

  • GetLastDate

  • ToDate

  • ToDateEx

  • Today

日付メジャーに基づいた計算に便利な計算関数は次のとおりです。

  • @DATEDIFF

  • @DATEPART

  • @DATEROLL

  • @FORMATDATE

  • @TODATEEX

  • @TODAY

DATEFORMATレポート・ライター・コマンド。

これらの関数とコマンドの詳細は、『Oracle Essbaseテクニカル・リファレンス』を参照してください。

テキスト・メジャーと日付メジャーに対するデータベース操作の実行

この項では、テキスト・メジャーと日付メジャーを使用する際の一般的なデータベース操作の実行方法について説明します。

テキスト・メジャーと日付メジャーのロード、消去およびエクスポート

データをテキスト・メジャーまたは日付メジャーにロードするには、数値メジャーを持つメンバーにデータをロードする場合と同じ手順に従います。入力データには、フォーマットされた日付値、またはテキスト・メジャーに関連付けられているテキスト・リスト・オブジェクトに対応するテキスト値を含める必要があります。

メンバーに関連付けられているテキスト・リスト・オブジェクトには存在しないテキスト値をロードしようとすると、Essbaseで警告メッセージが表示されます。

集約ストレージ・データベースで値をロードできるのは、入力レベルのみです。この制限は、テキスト・メジャーと日付メジャーで同様に適用されます。ブロック・ストレージ・データベースでは、テキスト値と日付値はどのレベルでもロードできます。

テキスト値と日付値を集約ストレージ・データベースにロードする際は、次のガイドラインに従います。これらのガイドラインは、無効な集約をなくすために役立ちます。

  • 置換モードを使用します。

    注:

    置換モードは、バッファのコミット時に設定します。MaxLでは、import dataステートメントのoverride values構文を使用します。管理サービス・コンソールでは、「データ・ロード」ダイアログ・ボックスの「既存の値の上書き」オプションを使用します。Essbase APIでは、EssLoadBufferTermのulCommitTypeフィールドを使用します。

  • 日付/テキスト・メジャーに関連付けられているすべての値をロードするには、単一のロード・バッファを使用します。

  • aggregate_use_last集約メソッドを使用します。

    注意

    aggregate_use_lastメソッドは、パフォーマンスに重大な影響を及ぼすため、大容量のデータ・ロード向きではありません。データ・ロードが100万セルを超える場合、数値データを(型付きメジャー・データとは)別のデータ・ロード・プロセスに分けることを検討してください。この個別データ・ロードでは、aggregate_sumをかわりに使用できます。

    aggregate_use_lastは、ロード・バッファの作成時に設定します。MaxLでは、alter databaseステートメントのinitialize load_buffer構文の一部であるPROPSターミナルを参照してください。管理サービス・コンソールでは、「データ・ロード」ダイアログ・ボックスの「最後に集約使用」チェック・ボックスを選択します。Essbase APIでは、EssLoadBufferInitのulDuplicateAggregationMethodフィールドを使用します。

  • #Missing値を増分データ・ロード・モードでテキスト/日付メジャーにロードしないようにします。#Missing値を増分ロードでMissing以外の値を持つセルにロードすると、ゼロ値と置換されます。日付/テキスト・メジャーでは、ゼロ値は#Missing値とは同じ意味を持たないことがあります。#Missing値を日付/テキスト・メジャーにロードする必要がある場合は、完全なデータ・ロードを使用してください。

混在する(数値とテキストまたは日付)データをロードする場合は、置換モードが数値データに対して十分であることを確認するか、数値データ用に別個のデータ・ロード・プロセスを作成します。

テキスト値や日付値は、ルール・ファイルを使用しても使用しなくてもロードできます。ルール・ファイルを使用しない場合は、テキスト値を二重引用符で囲み、そのテキスト値に文字列#Txt: の接頭辞を付けることによって、テキスト値や日付値をメンバー名と区別する必要があります。

次に、フリーフォームのデータ・ロード・ファイルのデータ行の例を示します:

      "100-10" "New York" "Cust Index" #Txt:"Highly Satisfied"
   

テキスト値「Highly Satisfied」には、「New York」などのメンバー名と区別するため、#Txt:という接頭辞が付いています。

接頭辞「#Txt」は、データ・ロードにルール・ファイルを使用しない場合の日付メジャーにも必要です。

テキスト値や日付値の消去、ロックしてから送信、およびエクスポートは、数値に対してこれらの操作を実行するのと同様に実行できます。

テキスト・メジャーと日付メジャーの集計

デフォルトでは、テキスト・メジャーには「^」(集計なし演算子)が割り当てられています。テキスト・メジャーと日付メジャーが、会計以外の次元に従って上位レベルのメンバーに集計されることはありません。

テキスト・メジャーや日付メジャーに「^」以外の演算子でタグ付けすると、その内部数値に基づき、他の次元に従って集計されます。これは、集約ストレージ・データベースにはお薦めできません。サポートされているのが+演算子のみであり、テキスト・メジャーや日付メジャーに対する集約値の妥当性が失われる可能性があるためです。さらに、Essbaseでは、集計中に範囲外の値は#OUTOFRANGEに変換されません。

ブロック・ストレージ・データベースの場合は、カスタム方法でテキスト・メジャーを集計する計算スクリプトを記述できます。テキスト・メジャーがランキング・メジャーを表している場合は、そのテキスト・メジャーを集計できます。たとえば、「CustomerSatisfaction」というテキスト・リストに、Excellent=5、Good=4、Fair=3、Poor=2、Bad=1などのマッピングが含まれているとします。これらの値はレベル0でロードされます。子レベルで値の平均をとることによって、値を親レベルに集計できます。たとえば、[Qtr1]の「CustomerSatisfaction」は[Jan]、[Feb]、[Mar]の値の平均です。

テキスト・メジャーと日付メジャーでのデータの取得

テキスト・メジャーや日付メジャーは、Smart View、グリッドAPIクライアント、レポート・ライターおよびMDXを使用して、数値メジャーと同じ方法でクエリーできます。適切なテキスト値やフォーマットされた日付値を含む、対応するセルが表示されます。

次のレポート・ライター・コマンドは、数値データを処理するために設計されており、テキスト・メジャーや日付メジャーではサポートされていません:

  • RESTRICT

  • TOP

  • BOTTOM

  • SORT*コマンド

  • CALCULATE COLUMN

  • CALCULATE ROW

MDX関数のEnumValueと計算関数の@ENUMVALUEは、テキスト・メジャーのテキスト値を取得するために特別に設計されたものです。これらの関数は、内部的に保管されている数値ではなく、メンバーのテキスト値に基づいて操作を行う必要がある場合に、MDXスクリプト、計算スクリプトまたは式で役立ちます。『Oracle Essbaseテクニカル・リファレンス』を参照してください

テキスト・メジャーと日付メジャーの制限

アウトラインの再構築では、テキスト・リストは再構築されません。テキスト・リスト内の数値からテキスト値へのマッピングが変更された場合、この変更は、そのテキスト・リストに関してデータベース内にすでに存在するテキスト・データに反映されます。したがって、テキスト・リストにアイテムを追加する場合は、既存のテキスト・リストのアイテムのマッピング数が変更されないように、そのアイテムをリストの一番上か一番下に追加します。

テキスト・メジャーと日付メジャーは、複数のパーティションにまたがることはありません。

共有メンバーと暗黙的な共有メンバーは、元のメンバーのテキスト型や日付型を継承します。

フォーマット文字列の操作

フォーマット文字列の概要

フォーマット文字列を使用すれば、Essbaseデータベース・メンバーの値(セル・コンテンツ)を数値タイプ・メジャーでフォーマットして、クエリーの実行時に、事前定義されたテキスト、日付またはその他のタイプの値として表示できます。結果として表示される値はセルのフォーマットされた値(MDXではFORMATTED_VALUEプロパティ)です。

基礎となる実際の値は数値であり、この値は関連付けられたフォーマット済の値には影響されません。フォーマット文字列を使用すれば、実際の数値のかわりに意味のある値を表示できます。たとえば、テキスト・ベースのフォーマットされた値を使用すると、データ・セルに「High」、「Medium」および「Low」として表示できます。

テキスト型と日付型の値は、組込みのテキスト・メジャーと日付メジャーの型を使用して追加でサポートされます。フォーマット文字列では、複数の次元内のメンバーにフォーマット文字列を適用できるため、実装の柔軟性が増しますが、テキスト・メジャーと日付メジャーの場合は、単一のメジャー次元にどちらか一方を適用することしかできません。フォーマット文字列は数値次元に適用でき、次元をテキストまたは日付として入力する必要はありません。

フォーマット文字列は、集約ストレージとブロック・ストレージのいずれかのデータベースに適用できます。

フォーマット文字列は、次のメンバーに対して定義できます:

  • メジャー次元内のすべてのメンバー

  • 他の次元の明示的な式文字列に関連付けられたメンバー

フォーマット文字列の実装

フォーマット文字列は、集約ストレージ・データベースとブロック・ストレージ・データベースでサポートされます。フォーマット文字列はデータベース・レベルで実装します。

フォーマット文字列を使用可能にして使用するには、次のワークフローを使用します:

  1. アウトライン・プロパティで、型付きメジャーを使用可能にします。

  2. 会計次元で、メンバーをフォーマットするメジャーを作成し、そのメンバー・プロパティで「フォーマット文字列の関連付け」フィールドを編集して、MDXフォーマット・ディレクティブを作成します。MDXフォーマット・ディレクティブを作成する構文は、MDXフォーマット・ディレクティブを参照してください。

MDXフォーマット・ディレクティブ

フォーマット文字列は、次の構文を使用して定義します:

      format_string_expression = MdxFormat (
      string_value_expression
      )
   

ここで、string_value_expressionは有効なMDX文字列値式です。『Oracle Essbaseテクニカル・リファレンス』に記載されているMDX仕様を参照してください。

ほとんどのMDX式は、フォーマット文字列を指定するために使用できます。ただし、フォーマット文字列には、フォーマット中の現在のセル値以外のデータ・セルの値への参照を含めることができません。現在のセル値は、MDXのCellValue関数を使用して参照できます。

Essbaseでは、無効なフォーマット文字列を含むメンバーは、フォーマット文字列が定義されていないかのように扱われます。アウトラインは無効なフォーマット文字列とともに保存できます。クエリーが無効なフォーマット文字列を持つメンバーで構成されている場合は、Essbaseで、警告が生成されます。

メンバーがフォーマット文字列に関連付けられていない場合は、デフォルトのフォーマット・ルールが適用されます。デフォルトのフォーマット・ルールでは、メジャーが数値、テキストまたは日付型かに基づいて、セルがフォーマットされます。数値メジャーの場合、デフォルトのフォーマット済の値はその数値のテキスト・バージョンです。テキスト・メジャーの場合、デフォルトのフォーマット済の値は、関連付けられたテキスト・リスト・オブジェクトに基づいたテキスト値です。日付値の場合、デフォルトのフォーマットは、アウトライン・プロパティに定義されている日付フォーマット文字列に従ってフォーマットされた日付文字列です。

フォーマット文字列をサポートする関数

次のMDX関数は、メジャーにフォーマット文字列を適用するときに便利です。フォーマット文字列はMDX式として、集約ストレージ・データベースとブロック・ストレージ・データベースのどちらにも適用できます。

  • EnumTextは、内部数値に関連付けられたテキスト・リスト・ラベルを戻します。

  • EnumValueは、テキスト・リスト・ラベルの内部数値を戻します。

  • CellValueは、現在のセルの内部数値を戻します。

  • NumToStrは、値を10進数文字列に変換します。

@ENUMVALUE計算関数は、テキスト・メジャーまたはフォーマット文字列を含むブロック・ストレージ・データベースの計算スクリプトを作成するときに便利です。この関数は、内部数値に関連付けられたテキスト・リスト・ラベルを戻します。

MaxL alter session set dml_outputステートメントには、set formatted_value on | off句が含まれています。デフォルトでは、クエリー内にはフォーマット済の値が表示されますが、このステートメントを使用するとフォーマット済の値の表示をオフにできます。

OUTFORMATTEDVALUESレポート・ライター・コマンドは、レポート内のフォーマット済のセル値を戻します。

これらの関数、コマンドおよびステートメントの詳細は、『Oracle Essbaseテクニカル・リファレンス』を参照してください。

フォーマット文字列の制約事項

フォーマット文字列は、複数のパーティションではサポートされません。

共有メンバーと暗黙的な共有メンバーに別々のフォーマット文字列を持たせることはできません。これらのメンバーはオリジナルのメンバーのフォーマット文字列を継承します。