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

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では、製品ディメンションの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. 適切なロード・ルールを使用してエラー・ログをロードします。