目次

Search

  1. はじめに
  2. Informatica Data Engineering Integrationについて
  3. マッピング
  4. マッピングの最適化
  5. ソース
  6. ターゲット
  7. トランスフォーメーション
  8. Pythonトランスフォーメーション
  9. クラスタワークフロー
  10. プロファイル
  11. 監視
  12. 階層データ処理
  13. 階層データ処理設定
  14. スキーマが変更された階層データの処理
  15. ブロックチェーン
  16. インテリジェント構造モデル
  17. ステートフルコンピューティング
  18. 接続
  19. データ型リファレンス
  20. 関数リファレンス

ユーザーガイド

ユーザーガイド

関数とデータ型の処理(Sparkエンジン)

関数とデータ型の処理(Sparkエンジン)

SparkエンジンでのInformaticaの関数の処理には、いくつかの制限とガイドラインがあります。
Sparkエンジンでの関数とデータ型の処理の際は、次のルールとガイドラインを考慮します。
  • Sparkエンジンとデータ統合サービスでは、オーバーフロー値を異なる方法で処理します。Sparkエンジンの処理ルールは、データ統合サービスが使用するルールとは異なる可能性があります。その結果、Sparkエンジンがオーバーフローを処理するときは、マッピングの結果がネイティブ環境とHadoop環境とで異なる可能性があります。 Sparkに関して次のように処理の相違点があることを考慮します。
    • 式の結果が、ゼロによる除算や負の数値のSQRTなどの、数値エラーになった場合は、SparkエンジンはNULLを返します。ネイティブ環境では、同じ式の結果は行エラーになります。
  • Sparkエンジンとデータ統合サービスでは、データ型の変換を異なる方法で処理します。その結果、Sparkエンジンがデータ型変換を実行するときは、マッピングの結果がネイティブ環境とHadoop環境とで異なる可能性があります。Sparkに関して次のように処理の相違点があることを考慮します。
    • Decimalなどの浮動小数点型の計算処理結果は、ネイティブ環境とHadoop環境との間で異なる可能性があります。結果の違いは、複数の操作間で大きくなる可能性があります。
    • 高精度モードで実行するマッピングでTO_DECIMALまたはTO_DECIMAL38関数を使用するときは、スケール引数を指定する必要があります。マッピングを低精度モードで実行する場合、Sparkエンジンはスケール引数を無視し、doubleを返します。
    • doubleまたはdecimalの値の小数桁数が小数位ポートで設定されているスケールを超えると、Sparkエンジンは後続の桁を切り捨て、必要な場合は値を丸めます。
    • Hive 2.0以上を使用する場合、Sparkエンジンは位取りの値を保証します。例えば、SparkエンジンがHive 2.0を使用して9桁の位取りの10進数の
      1.1234567
      を処理すると、出力は
      1.123456700
      になります。
    • Sparkエンジンはナノ秒までの日付を処理できません。ミリ秒までの精度で日時データを返すことができます。
  • データオーバーフローが発生した場合、SparkエンジンはNULLを返します。例えば、精度が3、スケールが2のポートで式
    TO_DECIMAL(12.34, 2)
    を使用した場合、戻り値はNULLです。NULL値はマッピングを介してプロパゲートされます。マッピングはデフォルト値を使用してその値を上書きし、関数IS_NULLを使用して検出して、ターゲットにNULL値を書き込みます。
  • ストリーミングマッピングで高精度を有効にしている場合でも、Sparkエンジンはマッピングを低精度モードで実行します。
  • マッピングにdecimalデータ型の要素を含む複合ポートが含まれている場合、Sparkエンジンはマッピングを低精度モードで実行します。
  • Hadoop環境は「/n」の値をNULL値として扱います。集計関数に空の値またはNULL値が含まれている場合、Hadoop環境で集計の計算中にこれらの値が含められます。
  • マッピング検証は、ポート名などの変数値を使用してSYSTIMESTAMPを設定した場合に失敗します。この関数は、引数を含めないか、タイムスタンプ値を取得する精度を含めるかのいずれかです。
  • マッピング検証は、タイムゾーンデータ型のタイムスタンプが出力ポートに含まれる場合に失敗します。
  • アグリゲータトランスフォーメーション内に、単一またはネストされた関数を含めないでください。データ統合サービスは、ネイティブ環境でのマッピングに失敗します。処理をHadoop環境にプッシュすることはできますが、予期しない結果になる可能性があります。Informaticaは、集計を実行するには、複数のトランスフォーメーションを作成することをお勧めします。
  • ウィンドウ化用に設定されているトランスフォーメーションのデータはプレビューできません。
  • Spark METAPHONE関数は、
    org.apache.commons.codec.language
    ライブラリからの音声エンコーダを使用します。Sparkエンジンがマッピングを実行するときに、METAPHONE関数はネイティブ環境での出力とは異なる出力を生成する可能性があります。次の表に、いくつかの例を示します。
    文字列
    データ統合サービス
    Sparkエンジン
    Might
    MFT
    MT
    HIGH
    HF
    H
  • ISO標準形式で記述された文字列を処理するために、SparkエンジンでTO_DATE関数を使用する場合、
    *T*
    を日付文字列に追加し、
    *”T”*
    をフォーマット文字列に追加する必要があります。次の式に、TO_DATE関数を使用してISO標準形式で記述された文字列YYYY-MM-DDTHH24:MI:SSを変換する例を示します。
    TO_DATE(‘2017-11-03*T*12:45:00’,’YYYY-MM-DD*”T”*HH24:MI:SS’)
    次の表に、この関数での文字列の変換方法を示します。
    ISO Standard Format
    RETURN VALUE
    2017-11-03T12:45:00
    Nov 03 2017 12:45:00
  • UUID4関数は、UUID_UNPARSEまたはENC_BASE64内の引数として使用される場合にのみサポートされます。
  • UUID_UNPARSE関数は、引数がUUID4( )の場合にのみサポートされます。