データ・ロードおよびディメンション構築のデバッグ

Essbaseのデータ・ロードおよびディメンション構築に関する問題としては、不適切なロードや、プロセスの失敗などがあります。ソースに不明メンバーまたは欠落/無効フィールドがあるか、ロード・ルールが無効であるか、サーバーまたはソース・データへの接続がない場合があります。エラー・ログは、デバッグに役立ちます。

データソースが正常にEssbaseサーバーにロードされなかった場合は、適切なアプリケーションおよびデータベースに接続していることと、正しいデータソースをロードしていることを確認します。

それでも問題が発生する場合は、次のトピックを参照してください。

問題を修正した後、エラー・ログをリロードすることにより、ロードされなかったレコードをリロードできます。「ディメンション構築およびデータ・ロード・エラー・ログからのロード」を参照してください。

Essbaseサーバーが使用可能であることの確認

データをロードできない場合は、Essbaseサーバーが実行されていることを確認します。他の操作のためにEssbaseサーバーにアクセスしてみてください。

たとえば、Essbaseアプリケーションに接続して取得できることを確認します。Smart Viewで問合せを実行してみてください。

ソース・データが使用可能であることの確認

ロードするソース・データにEssbaseがアクセスできない場合は、(ファイルである場合は)ロック解除されていること、およびパスとファイル拡張子が正しいことを確認してください。ソース・データが外部データベースである場合は、実行中であり、接続できることを確認します。

ソース・データに関する次の詳細を確認してください。

  • ソース・データが開いていない(たとえば、誰かがソース・データを編集しているかどうか)。

    Essbaseでは、別のユーザーまたはアプリケーションによってロックされていないソース・データのみをロードできます。

  • ソース・データのファイル拡張子が正しい。

    テキスト・ファイルには.txt拡張子が必要です。ルール・ファイルには.rul拡張子が必要です。

  • ソース・データ・ファイル名とパス名が正しい。

    スペルミスを確認します。

  • ソース・データが指定された場所にある。

    ソース・データ・ファイルが移動または削除されていないことを確認します。

  • SQLデータ・ソースを使用している場合:

    • 接続の詳細(ユーザー名、パスワード、データベース名など)が正しい。

    • Essbaseを使用しないでSQLソース・データに接続できる。

エラー・ログの確認

データ・ロードまたはディメンション構築の実行時に、Essbaseでエラー・ログに書き込むことをお薦めします。これは、ログが貴重なデバッグ・ツールであるためです。これにはディメンション構築またはデータ・ロード中に発生したエラーがリストされ、ロードに失敗したレコードが含まれています。

エラーを修正したら、エラー・ログからリロードできます。エラー・ログがない場合は、次の条件の有無を確認します。

  • データ・ロードまたはディメンション構築ジョブを実行しているユーザーがエラー・ログを設定した。データ・ロードまたはディメンション構築の実行時に、Essbaseにエラー時のデータ・ロードを中止するか、エラーをログに書き込んで追加するように指示できます。

    Essbaseでディメンション構築またはデータ・ロードのエラー・ログが作成される場合、キューブ・ディレクトリに作成されます。ファイル形式はerr_<databasename>_<number>.txtです。

  • データのソースとEssbaseサーバーの両方が使用可能である。

    「Essbaseサーバーが使用可能であることの確認」および「ソース・データが使用可能であることの確認」を参照してください

  • データ・ロード中にEssbaseサーバーがクラッシュした。

    この場合、通常はクライアントでネットワーク・タイムアウト・エラーを受け取ります。

  • アプリケーション・ログが存在する。

エラー・ログが存在するが空である場合、Essbaseではロード中にエラーが発生したとみなされません。次の条件の有無を確認します。

誤ってロードされたデータに関する問題の解決

Essbaseのデータはエラーなしでロードされますが、データが間違っているように見える場合は、まずソース・データを確認してから、暗黙的な共有、データのスケーリング、符号の反転、およびロード・ルールに関するその他の潜在的な問題を確認します。

ロードされたデータをトラブルシューティングするには、次の項目を確認します:

  • 正しいデータソースをロードした。

    この場合、データソースを再度確認し、正しい値が含まれていることを確認します。

  • ソース・データが正しくフォーマットされている。

    • すべての範囲が適切に設定されている。

    • データがクリーンである。たとえば、Essbaseはデータソースを処理するときにメンバー名を認識し、それらが属するディメンションを認識します。データソース・レコードに、ヘッダー・レコードで指定されているメンバーが存在するディメンションのメンバーが誤って含まれている場合、そのディメンションのヘッダー・レコードのメンバーは新しいメンバー名によって置き換えられます。次の例のデータソースでは、EssbaseによってFloridaはMarketディメンションのメンバーとして認識されます。最後の4つのレコードの値は、Texasの値ではなくFloridaの値であると解釈されます。

      Jan  Actual  Texas  Sales
         "100-10"   51.7
         "100-20"   102.5
         "100-20"   335.0
         Florida    96.7
         "200-20"   276.0
         "200-20"   113.1
         "200-10"   167.0
  • 認識していない暗黙的に共有されるメンバー(親と子が同じデータ値を共有している場合)があるかどうか。

    暗黙的な共有メンバーは、親と子が同じデータ値を共有する場合に発生します。これは、親に子が1つのみ、または親にロールアップされる子が1つのみの場合に発生します。

  • 受信データを既存のデータで置き換えるのではなく、受信データを既存のデータに追加した。

    「既存の値に対する加算または減算」を参照してください。

  • 選択または拒否する意図がなかったレコードを選択または拒否した。

    レコードの選択と拒否」を参照してください。

  • 符号が逆になっており(たとえば、プラス符号ではなくマイナス符号)、符号反転をUDAに対して実行したかどうか。

    「フィールド符号の反転」を参照してください。

  • クリアする意図がなかったデータの組合せをクリアした。

    「データ・ロード時に既存のデータ値をクリア」を参照してください。

  • 受信した値を誤ってスケーリングした。

    「データ値のスケーリング」を参照してください。

  • すべてのメンバー名および別名が79文字未満である。

Smart Viewまたはレポート・ライターから問合せを実行して、データを確認できます。

ファイル終端マーカーの拒否基準の作成

SQLデータ・ソースには、Essbaseデータ・ロードやディメンション構築の失敗につながる、特殊文字で構成されたファイル終端マーカーが含まれていることがあります。この問題を解決するには、問題のあるレコードを拒否する拒否基準を定義します。

拒否基準を定義するには:

  1. SQLデータソース内のファイル終端マーカーを見つけます。
  2. Essbaseの検索コマンドを使用してファイル終端マーカーを検索する方法を決定します。

    ファイル終端マーカーは1つ以上の特殊文字で構成されていることがあるため、このタスクは難しい場合があります。「文字列の無視」を参照してください。

  3. ファイル終端マーカーを拒否する拒否基準を定義します。「レコードの選択と拒否」を参照してください。

Essbaseによるロード・ルールの処理方法

Essbaseによるロード・ルールの初期化/検証方法、およびソース・データのレコードの処理中に操作が実行される順序を理解することで、ディメンション構築の問題を追跡できる場合があります。

ロード・ルールを初期化するために、Essbaseによって次のステップが実行されます:

  1. 関連するアウトラインに対してロード・ルールを検証します。

  2. ディメンションを検証します。このプロセスでは、構築方法とフィールド・タイプに互換性があることと、各ディメンションの名前が一意であることが確認されます。メンバー名は一意であるか、共有される必要があります。

  3. ロード・ルールで定義された新しいディメンションをアウトラインに追加します。

  4. ソース・データで指定されたヘッダー・レコードを読み取ります。

その後、Essbaseは、データ・ロード中またはディメンション構築中に、ソース・データの各レコードに対して次の操作を実行します:

  1. すべてのレコードにファイル・デリミタを設定します。

  2. ロード・ルールに定義されている順序でフィールド操作をデータに適用します。

    フィールド操作には、結合、移動、分割、およびテキストと結合を使用したフィールドの作成が含まれます。ロード・ルールでフィールド操作が定義される順序を学習するには、「フィールドに対する操作の実行」を参照してください。

  3. Essbaseにより、フィールドごとにすべてのプロパティが適用されます。field2に進む前にfield1にすべてのプロパティが適用されます。Essbaseでは、次の順序でフィールドのプロパティが適用されます。

    1. データ・ロード中に無視されるように設定されたフィールドを無視します

    2. ディメンション構築中に無視されるように設定されたフィールドを無視します

    3. データ・フィールドにフラグを付けます

    4. フィールド名を適用します。

    5. フィールドの世代を適用します。

    6. ロード・ルールに定義されている順序で、すべての置換を実行します。

    7. 先頭および末尾のスペースを削除します

    8. スペースをアンダースコアに変換します

    9. 接尾辞および接頭辞の演算を適用します

    10. データ値をスケーリングします。

    11. テキストを小文字に変換します

    12. テキストを大文字に変換します

  4. メンバーまたはメンバー情報、あるいはその両方をアウトラインに追加します

  5. 行をスキップするように選択した場合、指定した行数がEssbaseでスキップされます。それ以外の場合、Essbaseは最初のレコードに進みます。

  6. Essbaseにより、ロード・ルールで定義された順序で選択基準または拒否基準が実行されます。指定した基準に基づいて、Essbaseによってソース・データの個々のレコードがロードまたは拒否されます。

データ・ロード中の欠落フィールドまたは無効なフィールドに対するEssbaseでの処理方法

データ・ロード中にメンバー・フィールドが欠落している場合、Essbaseは以前の値を使用しますが、存在しない場合はロードを停止します。不明なメンバー名により、レコードが拒否されます。無効なデータ・フィールドがある場合、データ・ロードは停止し、部分的なデータ・ロードが発生します。

このような問題の後のデータ・ロードの再起動の詳細は、「ディメンション構築およびデータ・ロードのエラー・ログからのロード」を参照してください。

ディメンション・フィールドまたはメンバー・フィールドの欠落

ディメンション・フィールドまたはメンバー・フィールドが欠落している場合、Essbaseでは、以前にそのディメンション・フィールドまたはメンバー・フィールドで使用した値が使用されます。以前の値がない場合、Essbaseによりデータ・ロードは停止されます。

たとえば、次のファイルをSample.Basicデータベースにロードする場合、Essbaseでは、ProductディメンションにRoot BeerおよびDiet Colaを持つレコードを含むすべてのレコードにおいて、Ohioメンバー・フィールドがMarketディメンションにマッピングされます。

Jan  Sales  Actual  Ohio
                    Cola          25
                    "Root Beer"   50
                    "Diet Cola"   19

欠落したメンバー・フィールドの値が以前のレコードに含まれていない場合、Essbaseによりデータ・ロードは停止されます。たとえば、次のファイルをSample.Basicデータベースにロードしようとした場合、Marketディメンション(前の例ではOhio)が指定されていないため、データ・ロードは停止します。

Jan  Sales  Actual
            Cola          25
           "Root Beer"    50
           "Diet Cola"    19

不明なメンバー・フィールド

データ・ロードの実行中に不明なメンバー名が検出された場合、レコード全体が拒否されます。欠落したメンバー・フィールドのメンバー名が含まれた以前のレコードがある場合、Essbaseでは次のレコードの処理を続行します。以前のレコードがない場合、データ・ロードは停止します。たとえば、次のファイルをSample Basicデータベースにロードする場合、Ginger Aleを含むレコードは有効なメンバー名ではないため拒否されます。Cola、Root BeerおよびCream Sodaが含まれたレコードはロードされます。ただし、Ginger Aleが最初のレコードにある場合、データ・ロードは停止します。

Jan, Sales, Actual
Ohio   Cola          2
       "Root Beer"   12
       "Ginger Ale"  15
       "Cream Soda"  11

ノート:

ディメンション構築を実行する場合は、データベースに新しいメンバーを追加できます。「データ・ロードまたはディメンション構築の実行」を参照してください。

無効なデータ・フィールド

データ・ロードの実行中に無効なデータ・フィールドが検出された場合、データ・ロードは停止します。無効なフィールドより前にロードされたすべてのフィールドが、キューブにロードされます。その結果として、部分的なデータ・ロードになります。たとえば、次のファイルでは、15-というデータ値が検出されるとデータ・ロードは停止します。JanとFebのSalesレコードはロードされますが、MarとAprのSalesレコードはロードされません。

East   Cola   Actual
Sales         Jan    $10
              Feb    $21
              Mar    $15-
              Apr    $16

ディメンション構築およびデータ・ロード・エラー・ログからのロード

Essbaseディメンションの構築またはデータ・ロードが失敗した場合は、エラー・ログからロードすることで、失敗したレコードのみをロードできます。失敗したレコードのみをリロードする方が、すべてのレコードをリロードするよりもはるかに高速です。

エラー・ログからリロードするには、

  1. サーバーからロードする場合は、ファイル拡張子を.errから.txtに変更します。たとえば、dataload.errファイルをdataload.txtに変更します。

    クライアントからロードする場合は、.err拡張子のままにできます。

  2. ディメンション構築またはデータ・ロードの失敗の原因となった問題を修正します。問題の修正には、アウトラインの変更、エラー・ログ内のテキストの変更、ロード・ルールの編集などが含まれる可能性があります。

    次の条件が当てはまるかどうかを確認します:

  3. 適切なロード・ルールを使用してエラー・ログをロードします。