Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
お世話になっております。
Exists関数の使い方について、ご存知の方いましたらご教示お願いします。
やりたいことは、ロードスクリプトで読み込んだデータを別テーブルとして出力し
その際、すでに出力済みのデータは除外したい(存在しないデータだけを登録したい)のです。
具体的なロジックは以下のとおりです。
// 1~20までのIDが入っている
test1:
LOAD @1 as numID
FROM
load1.txt
(txt, codepage is 932, no labels, delimiter is '\t', msq);
// 1~25までのIDが入っている
test2:
NoConcatenate LOAD @1 as numID
FROM
load2.txt
(txt, codepage is 932, no labels, delimiter is '\t', msq);
// test1から、test中間テーブルを作成する
// なので、1~20までが登録される
test:
NoConcatenate LOAD numID resident test1;
// test2から、testテーブルへ登録する。 その際、存在しないnumIDだけを登録しているつもり
// 1~20は登録済みなので、21~25までを登録したい。
Concatenate LOAD numID Resident test2
where not Exists(numID);
結果的にはtestテーブルには1~20までしか登録できていません。
何が間違っているのでしょうか??
以下のように行えば登録できます。
ヘルプでQVDの増分ロードを参照してみてください。
test1:
LOAD NumID
FROM
sample1206.xlsx
(ooxml, embedded labels, table is Sheet3);
Concatenate(test1)
LOAD NumID
FROM
sample1206.xlsx
(ooxml, embedded labels, table is Sheet4)
where not exists(NumID);
以下のように行えば登録できます。
ヘルプでQVDの増分ロードを参照してみてください。
test1:
LOAD NumID
FROM
sample1206.xlsx
(ooxml, embedded labels, table is Sheet3);
Concatenate(test1)
LOAD NumID
FROM
sample1206.xlsx
(ooxml, embedded labels, table is Sheet4)
where not exists(NumID);
回答、ありがとうございます。
確認することができました。
しかしながら、一度読み込んだテーブルを利用する場合にはできないようです。。