「変換」では、変換をプレビューまたは保存する際に、静的パーサーを使用して、Groovyの一部の動的型付けの動作をオーバーライドしたり、未定義の変数などの解析のエラーを検出します。
また、静的パーサーにより、スクリプト内で直接参照される属性が、データ・セットのスキーマに定義されている属性と一致するかどうかも検証されます。属性が一致しない(たとえば、スペルミスがある)場合は、エラーが発生します。
変換スクリプト内に属性を変数として組み込む場合、属性に使用する書式が、静的パーサーがこの属性を処理する方法に影響します。属性の書式の詳細は、「変数の書式」を参照してください。
変換に解析エラーが含まれる場合、「変換」では、変換をプレビューまたは保存するときに「変換エラー」ダイアログ・ボックス内にエラー・メッセージが表示されます。また、「変換エラー」には、エラーが含まれる各行の横に赤い「X」アイコンが表示されます。これらのアイコンにカーソルを合わせると、エラーに関する詳細を表示できます。
ダイアログ・ボックスを閉じ、エラーを修正し、変換を再びプレビューし、すべてのエラーが修正されていることを検証する必要があります。エラーがない状態にするまでは変換をスクリプトに保存することはできません。
これらの関数は、「変換」から実行できるインライン変換に属しています。これらのset関数は、複数割当されている属性の値セットに適用されます。
Studio内の「変換」からこれらの関数のいずれかを実行し、実行対象となる属性が単一割当(単一値)属性である場合、変換APIによって属性のDgraphタイプに応じてNULLまたは例外がスローされます。
要約すると、変換を実行しようとして例外が発生する場合は、変換を実行する属性が単一値ではないかをチェックしてください。その場合、set変換関数は適用されません。
サポートされていないGroovy言語の機能が変換スクリプトに含まれる場合、セキュリティ例外がスローされ、「変換エラー」ダイアログ・ボックスに表示されます。エラーの原因となったコードを削除してください。
セキュリティ例外の原因となる可能性のあるGroovy言語機能の詳細は、「Groovyの予約済キーワードおよびサポートされていない機能」を参照してください。
静的パーサーでは、すべてのエラーを検出できるわけではなく、特にデータ内の異常が原因で発生した実行時の例外は検出できません。通常、「変換」では、処理できないデータに対してnull値を返すことによってこれらのエラーを処理します。
try { <transformation script> // replace this with your transformation script code 'OK' } catch (Exception ex) { ex.getMessage() }
変換スクリプトをプレビューすると、生成されたエラー・メッセージが文字列型の一時列に出力されます。デバッグが完了したら、tryブロックを削除し、一時属性を削除できます。
日時オブジェクト(つまり、mdex:dateTime属性)を文字列オブジェクトに暗黙的に変換する場合、クラスタのSparkジョブが実行される場所に応じて結果が異なる場合があります。特に、結果のタイムゾーンが予期したものとは異なる可能性があります。
// mydatetime is an mdex:dateTime object mydatetime = 1/1/1970 03:00:00 PM UTC // convert to mdex:string-set object new_set= toSet(mydatetime)
広範囲にわたるクラスタでは、ジョブがどこで実行されるかわからない場合があります。ジョブがNYタイムゾーンのニュー・ヨークに対して構成されているマシンで実行される場合、ESTはUTCより5時間早いため、結果は"Jan 1, 1970 10:00:00 AM"となります。しかし、ジョブがCAタイムゾーンのサンノゼに対して構成されているマシンで実行される場合、結果は"Jan 1, 1970 07:00:00 AM"となります。
new_set = toSet(toString(mydatetime,"MMM d, yyyy HH:mm:ss a","UTC"))この場合、タイムゾーンは、Sparkノードによってではなく、ユーザーによって指定されます。