1

2 つのテーブル (A と B) を結合したいのですが、テーブル B になく、交点にない行を挿入したい (写真でお見せしたように)、それらをテーブル B に挿入します。

私がSQLを使用している場合、次のようにできます:

SELECT *
FROM A
LEFT JOIN B ON A.key = B.key
WHERE B.key IS NULL

しかし、ODIで。私はそれをすることはできません。Left Outer Join を作成しましたが、問題は解決しませんでした。Left Outer Join により、テーブル A にあるすべての行と、A と B の交点にある行を取得できます。

私が必要とするのは、交点にある行を除いて、テーブル A にあるすべての行を抽出することです。ODIでこれを修正するにはどうすればよいですか

手伝ってくれてどうもありがとう。

4

4 に答える 4

2

これはうまくいくはずです:

  1. ODIインターフェースで A.key = B.key の内部結合を作成できます
  2. この内部結合を編集し、結合条件を A.key (+) = B.key に置き換えます
  3. インターフェイスを保存する
  4. インターフェースでフィルターを作成しますWHERE B.key IS NULL
于 2017-08-29T09:22:42.780 に答える
0

ODI 11g を使用している場合は、黄色の (一時的な) インターフェイスで参加できます。フィルタを適用できる青色のインターフェイスでそのインターフェイスを再利用します。青いインターフェイスのソースで [派生ステートメントとして使用 (サブ選択)] を選択していることを確認してください。そうすることで、黄色のインターフェイスがサブクエリになり、結合後にフィルターが確実に適用されます。

ODI 12c を使用している場合は、データセット コンポーネントで結合を実行し、データセットの出力にフィルターを追加できます。したがって、結合後にフィルターが適用されていることを確認してください。

于 2015-09-14T11:59:49.163 に答える
0

セットベースの操作(MINUS)に頼る必要なく、提供するSQLをODIに生成させることができるはずです。これもパフォーマンスが向上するはずです。

A.key = B.keyマッピングでロジックを分割し、条件を JOIN とのFILTERに入れることを確認できますB.key IS NULLか?

于 2015-09-15T10:35:12.573 に答える