はじめに
フィルタースクリプトを使用すると、Magic ETL DataFlowの作成者はSQL形式の構文を使用してデータを簡単にフィルターすることができます。フィルタースクリプトは論理(Boolean型)式である必要があります。つまり、スクリプトの結果はTrue/Falseが返される必要があります。従来の[フィルター設定]タブを開くのではなく、 ‘Column name’ >= 7 またはColumn name BETWEEN 15 AND 20 のような式を使用することで時間を節約できるようになりました。
一般的な論理フィルター
一般的な論理フィルターの例は次のとおりです。- ‘id’ >= 7
Percent ChangeBETWEEN.35 AND.65Phone NumberLIKE ‘801%’ ANDAge< 35 ANDState= ‘California’- (
Age> 20 AND (Salary/ 12) > 40000) orAge> 50 - REGEXP_LIKE(
Email, ‘@ gmail.com ’) Product TypeIN (1, 3, 7, 9)
行をフィルター
NULL値は、比較関数によって異なる方法で処理されます。SQLおよびMagic ETL DataFlowでは、nullとの比較の結果は常にnullであり、 [行をフィルター] タイルによって誤った結果として処理されます。Magic ETLのほとんどのコンテキストでは、nullはnullと等しくありませんが、nullもnullと等しくないわけでもありません。また、nullは0以下ですが、0以上でもあり、0と等しくもありません。 [行をフィルター] タイルが参照する列にnullがある場合、関数や引数に関係なく、それらの行はすべてドロップされます。nullを適切に処理できる関数は、「is null」と「is not null」のみです。v1では、フィルターが「column = null」のテストを実行した可能性があります。このような場合は今後、同じ結果を得られないため、 このようなフィルターは、「is null」演算子を使用するように変更する必要があります。 フローをMagic ETL(レガシー)から新しいMagic ETLに切り替えた後、正常に実行されていても出力から行が欠落しているような場合は、この変更が原因である可能性があります。「is not equal to」関数を使用するときには特に注意する必要があります。「column <> 5」は、列の値が5の行のみを除外するように見えるかもしれませんが、実際には、上記の理由により、列にnullを含む行も除外します。次の表に、 [行をフィルター] でのnullの動作の追加の例を示します。テスト | 評価済みの結果 | フィルターの有効性 |
|---|---|---|
| 4 <> 5 | true | keep |
| 5 <> 5 | false | drop |
| null <> 5 | null | drop |
| null = null | null | drop |
| null <> null | null | drop |
| null is null | true | keep |
| null is not null | false | drop |
| 5 is not null | true | keep |
| 5 is null | false | drop |
