webdevqa.jp.net

Excel-パワークエリ(または他の何か)-フィールド間の部分一致で結合しますか?

パワークエリ( またはMSクエリ 、またはExcelで目的の結果を提供する更新可能なテーブルを作成するその他のクエリ)、2つのフィールド間の部分一致に参加するにはどうすればよいですか?

このSQLステートメントに似た何かをしたい:

SELECT T1.SIZES AS SIZES,
       T2.PARTNO as PARTNO
FROM TABLE1 AS T1
LEFT JOIN TABLE2 AS T2
ON T2.APPLICATIONS LIKE '% ' T1.SIZES ' %'

例:フィールドSIZESに次のデータがあるTABLE1があるとします。

  • [〜#〜]サイズ[〜#〜]
  • P01
  • P02
  • P03
  • P04

そして、私はTABLE2を持っています。これは、フィールドPART NOAPPLICATIONSに次のデータがあります。

  • [〜#〜] partno [〜#〜]__________[〜#〜]アプリケーション[〜#〜]
  • 11111 ______________ P01/P02
  • 22222 ______________ P02/P04
  • 33333 ______________ P01/P04

TABLE2でTABLE1の左外部結合を実行し、TABLE1.SIZESTABLE2.APPLICATIONSが部分的に一致する行を返します。結果は次のようになります。

  • [〜#〜]サイズ[〜#〜]___________部品番号
  • P01 ______________ 111​​11
  • P01 ______________ 33333
  • P02 ______________ 111​​11
  • P02______________22222
  • P03 ______________null
  • P04 ______________ 22222
  • P04 ______________ 33333

パワークエリで同様の関数を実装する のこの例に沿って実行しようとしましたが、式を作成できましたが、「クエリマージ」の基準として使用する方法がわかりません(参加)。

私はパワークエリの完全な初心者です...

1
CBRF23

私はこれに関数を使用しません。テストと保守が簡単なため、コードが最小限であるかコードがないソリューションを好みます。

TABLE1とTABLE2の2つのクエリから始めます。それぞれに[列の追加]/[カスタム列の追加]ボタンを使用して、列を追加します。私はそれをダミーマッチキーと呼び、式を次のように設定します

= 1

TABLE1クエリに戻り、マージステップを追加し、ダミー一致キーを使用してTABLE2に結合し、TABLE2の元の列を展開します。これで、TABLE1のすべての行とTABLE2のすべての行のモンスターの相互結合ができました。慌てる必要はありません。大規模な場合でも、PQはこのシナリオを適切に処理し、大量のメモリを必要とする傾向があるSQLや特殊なETLツールよりも優れたIMOです。

とにかく、次に、[列の追加]/[条件付き列の追加]を使用して、次のように指定します。

新しい列名:一致した行

(列)アプリケーションに(列)サイズが含まれている場合(値)はい

これにより、一致した行のみに「はい」の値を持つ列が表示されます。これらの値をフィルタリングし、不要な列を削除すれば完了です。

コードの合計行数= 0。

1
Mike Honey