データフィルタ
データフィルタは、タスクによって処理される行数を制限するためにソースに適用するフィルタです。簡易または詳細データフィルタを作成して、ソースデータがデータフローに追加される前にフィルタリングを行います。
データ転送タスクの任意のタイプのタスク。
レプリケーションタスクまたは同期タスク。データフィルタの各セットは他のセットとは独立して機能します。
簡単なデータフィルタ
1つ以上の簡単なデータフィルタを作成できます。
簡単なデータフィルタを複数作成すると、関連付けられたタスクがフィルタ間にAND演算子を作成し、簡単なデータフィルタすべてに適用される行をロードします。
例えば、Salesforceの取引先オブジェクトの行をデータベーステーブルにロードするとします。ただしロードするのは、年収が$100,000以上あり、従業員が500人を超える取引先のみです。次の簡単なデータフィルタを設定します。
フィールド | 演算子 | フィールド値 |
---|
AnnualRevenue | >= | 100000 |
NumberOfEmployees | > | 500 |
簡易データフィルタの構成
タスクウィザードで簡易データフィルタを構成します。
1 簡易データフィルタを作成するには、次のいずれかのアクションを実行します。
- - マッピングタスクの[ソース]ページの[フィルタ]領域で、[簡易]を選択し、[新規]をクリックします。
- - データ転送タスクの[ソース]ページまたは[2番目のソース]ページの[フィルタ]領域で、[簡易]を選択し、[新規]をクリックします。
2必要に応じて、データフィルタを作成するオブジェクトを指定します。
タスクに含まれるソースオブジェクトごとに別々のデータフィルタを作成します。
3フィールド、演算子、およびフィールド値に基づいてフィルタ条件を入力します。
4[OK]をクリックします。
5必要に応じて、追加の簡易データフィルタを作成します。
データフィルタを削除するには、データフィルタの横の[削除]アイコンをクリックします。
6[次へ]をクリックします。
詳細データフィルタ
詳細データフィルタを作成して、AND、OR、またはネストされた条件を使用する複雑な式を作成します。
詳細データフィルタを作成する場合は、すべてのフィルタを含む1つの式を入力します。入力する式は、ソースからレコードを取得するために使用するクエリ内のWHERE句になります。
SQL ELTモードのマッピングには、利用するクラウドデータウェアハウスで有効な式構文を使用します。詳細については、利用するクラウドデータウェアハウスのドキュメントを参照してください。他のタイプのマッピングの場合は、Informaticaトランスフォーメーション言語の式構文を使用します。
例えば、Salesforceの取引先オブジェクトの行をデータベーステーブルにロードするマッピングを作成するとします。ただしロードするのは、請求先の州がカリフォルニアまたはニューヨークであり、年収が$100,000以上のレコードです。次の詳細フィルタ式を設定します。
(BillingState = 'CA' OR BillingState = 'NY') AND (AnnualRevenue >= 100000)
Salesforceオブジェクトにデータフィルタを作成すると、対応するタスクがWHERE句のあるSOQLクエリを生成します。WHERE句はデータフィルタを表します。SOQLクエリは、20,000文字未満にする必要があります。クエリが文字制限を超過すると、次のエラーが表示されます。
Salesforce SOQL limit of 5000 characters has been exceeded for the object: <Salesforce object>. Please exclude more fields or decrease the filters.
注: フィルタ条件はランタイムまで検証されません。
詳細データフィルタの構成
タスクウィザードで詳細データフィルタを構成します。簡易データフィルタを詳細データフィルタに変換することはできますが、詳細データフィルタを簡易データフィルタに変換することはできません。
1詳細データフィルタを作成するには、次のいずれかのアクションを実行します。
- - 同期タスク、レプリケーションタスク、またはマスキングタスクの[データフィルタ]ページで、[新規] > [詳細]をクリックします。
簡易データフィルタのすべてを1つの詳細データフィルタに変換するには、[データフィルタ]ページで簡易データフィルタを選択して、[詳細]をクリックします。
- - マッピングタスクの[ソース]ページの[フィルタ]領域で、[詳細]を選択します。
- - [ソース]または[2番目のソース]ページのフィルタ領域のデータ転送タスクで、[詳細]を選択します。
すべての簡易データフィルタを1つの詳細データフィルタに変換するには、[詳細]を選択します。
2必要に応じて、データフィルタを作成するオブジェクトを指定します。
タスクに含まれるソースオブジェクトごとに別々のデータフィルタを作成します。
3フィルタ式を入力します。
フィールド名をクリックして、フィールドを式に追加します。
4[OK]をクリックします。
データフィルタを削除するには、データフィルタの横の[削除]アイコンをクリックします。
5[次へ]をクリックします。
データフィルタ演算子
各フィールドの種類に応じて特定の演算子を使用できます。
SQL ELTモードのマッピングには、利用するクラウドデータウェアハウスの式言語で有効な演算子を使用します。詳細については、利用するクラウドデータウェアハウスのドキュメントを参照してください。その他のタイプのマッピングについては、次の表に示すInformaticaトランスフォーメーション言語の演算子を使用します。
次の表は各フィールドの種類で使用できる演算子を示しています。
フィールドの種類 | 演算子 |
---|
Boolean | =, ! =, Is Null, Is Not Null |
Currency | =, ! =, <, <=, >, >=, Is Null, Is Not Null |
Date | =, ! =, <, <=, >, >=, Is Null, Is Not Null |
日時 | =, ! =, <, <=, >, >=, Is Null, Is Not Null |
Double | =, ! =, <, <=, >, >=, Is Null, Is Not Null |
ID | =, ! =, Is Null, Is Not Null |
Int | =, ! =, <, <=, >, >=, Is Null, Is Not Null |
参照 | =, ! =, Is Null, Is Not Null |
文字列 | =, ! =, LIKE'_%', LIKE'%_', LIKE'%_%', Is Null, Is Not Null, <, <=, >, >= |
Textarea | =, ! =, LIKE'_%', LIKE'%_', LIKE'%_%', Is Null, Is Not Null, <, <=, >, >= |
その他の型 | =, ! =, Is Null, Is Not Null |
データフィルタ変数
データフィルタ変数は、タスクが以前に実行された日付または時刻を表します。データフィルタ変数を使用して、前回のタスク実行から変更されたソースデータのキャプチャに役立てます。簡単なデータフィルタまたは詳細なデータフィルタの条件でデータフィルタ変数を使用できます。
次のデータフィルタ変数を使用できます。
変数 | 説明 |
---|
$LastRunDate | 成功あるいは警告で終了した最後のタスク実行のGMTタイムゾーンでの開始日。時刻は含みません。例: 2018-09-24。フィールドタイプがDATEのフィルタの値として使用できます。 |
$LastRunTime | 成功あるいは警告で終了した最後のタスク実行のGMTタイムゾーンでの開始日時。例: 2018-09-24 15:23:23。フィールドタイプがDATETIMEのフィルタの値として使用できます。 $LastRunTime変数をDATEフィールドで使用することはできません。 |
SQL ELTモードのマッピングの式でデータフィルタ変数を使用することはできません。
例えば、次の簡単なフィルタ条件を含めることができます。
LastModifiedDate > $LastRunTime
注: タイムゾーン間の日付を比較するときはタイムゾーンの違いを考慮します。$LastRunDate変数および$LastRunTime変数の日時は、Informatica Intelligent Cloud Servicesで設定されたタイムゾーンに基づきます。実際のジョブの日時は、SalesforceソースおよびデータベースソースのデータベースサーバーのGMTタイムゾーンに基づきます。タイムゾーンの違いによって、予期しない結果が発生する可能性があります。
データフィルタのルールおよびガイドライン
データフィルタに使用されるルールおよびガイドラインは、次のとおりです。
- •SQL ELTモードのマッピングでデータフィルタを作成する場合、利用するクラウドデータウェアハウスで有効な式構文を使用します。詳細については、利用するクラウドデータウェアハウスのドキュメントを参照してください。他のタイプのマッピングの場合は、Informaticaトランスフォーメーション言語の式構文を使用します。
- •データフィルタには有効なSQLまたはSOQL演算子が含まれている必要があります。
- •同じタスクに簡単なデータフィルタと詳細データフィルタを含めることはできません。
- •簡単なデータフィルタを詳細データフィルタに変換すると、詳細データフィルタを簡単なデータフィルタに戻すことはできません。
- •データフィルタに含まれるフィールドが存在しなくなったか、フィールドのデータ型が変更された場合、タスクは失敗します。データ型が変更された場合、タスクを編集します。
- •その他のデータ型のフィールドでは、[次の値に等しい]、[次の値に等しくない]、[NULLである]、または[NULLではない]の演算子を選択できます。
- •アプリケーションは、先頭または末尾が一重引用符のデータが含まれる、[次の値に等しい]、[次で始まる]、または[次で終わる]の演算子および文字列フィールドを持つフィルタを適用しません。これらのレコードをフィルタリングするには、次を含む演算子を使用します。
- •Text、Ntext、Imageデータ型のフィールドのデータフィルタでは、[NULLである]および[次の値に似ている]演算子のみ使用できます。
- •date/timeフィルタに日付のみを指定して時刻が指定されていない場合、データ統合は00:00:00(12:00:00 a.m.)を時刻として使用します。
- •フラットファイルソースが含まれる同期タスクでは簡単なデータフィルタを作成できません。詳細データフィルタを作成できます。
- •簡単なデータフィルタで使用できる演算子のリストは、データフィルタに含まれるフィールドのデータ型によって異なります。一部の演算子は、データフィルタに含まれるすべてのフィールドには適用されません。
- •複数の簡単なデータフィルタを入力した場合、アプリケーションはすべてのデータフィルタの要件を満たす行をフィルタリングします。
- •データフィルタにパラメータを使用する場合は、データフィルタの先頭にパラメータを指定するようにします。例えば、100000=$$Salesではなく、$$Sales=100000を使用します。