これは、値のない程度の異なる組み合わせである(明確なCOL1、テーブルからCOL2を選択)はどのように異なる値
私は新たにロードされたCSVファイルを持つテーブルを持っているの複数のセットを取得します。
一部の列は外部キーのディメンションにリンクされていますが、特定の列の値が参照表に存在しない場合があります。
私の望みは、ソーステーブルのテーブルスキャンの量を最小限に抑えるような方法で、存在しない各列のすべての値を見つけることです。
私の現在のアプローチは、以下のようなクエリの束の出力を消費:
SELECT DISTINCT col2 FROM table WHERE col2 NOT IN (SELECT val FROM DimCol2)
SELECT DISTINCT col3 FROM table WHERE col3 NOT IN (SELECT val FROM DimCol3)
ただし、N列の場合、これはNテーブルスキャンをもたらします。
表は、最大5Mから5Mまでのカーディナリティで行と列の範囲が異なりますが、ほぼすべての値がすでにdimテーブル(> 99%)に存在しています。
DimColNは、5~50M値の範囲であり、良好な指標である。
csvはSSISを介してテーブルにロードされるため、SSIS内での前処理の分割は可能ですが、各行に対してSQLクエリを行わないといけません。
ssisサーバーにすべてのdimテーブルをキャッシュするのに十分なスペアRAMがありません。
値には存在しないという意味、
LEFT JOIN
を使用して確認する程度。私の望みは、ソーステーブルのテーブルスキャンの量を最小限に抑える方法で、存在しない各列のすべての値を見つけることです。私は努力していますが、私はあなたの質問を修正することに失敗していると感じています。 – billinkc@billinkcこれは私の質問の正しい再説です。私は言葉を明確にしようとします。 –
ファクトテーブルをインポートするときに、すべての外部キー値が存在するように、参照テーブルへの変更をインポートして開始するのはなぜですか? –