メンバーのリストを DB2 サーバーにアップロードしようとしたときにこの問題に遭遇し、問題を説明する最小限の例を作成しました。
SAS 9.2 からローカルに作成されたデータ テーブルを DB2 データ ウェアハウス (ODBC ドライバーへの接続でアクセス) のテーブルに結合するために、私の手順では、これらのローカル テーブルを同じサーバー (異なるスキーマ) に配置して、請求。これの主な目的は、アップロードされたリストに member_ID が含まれているクレームのリストを除外することです。
ローカル データの最初の行に欠損値がある場合 (メンバーが識別情報を持っていない場合もあります)、ローカル側のデータは、DB2 スキーマにアップロードされるときに欠損していない値をいくつか失います。問題を強調するために、非機密情報を含むおもちゃの例を添付しました。
PROC IMPORT OUT= WORK.druglist DATAFILE= "C:\Users\caden2\Desktop\druglist.xls"
DBMS=EXCEL REPLACE;
RANGE="'Tab 4# Asthma Meds$'";
RUN;
DATA for_clinical;
SET druglist(KEEP= Drug_Class Drug_Type Generic GPI);
IF _N_ = 4 THEN DELETE;
IF _N_ <= 10;
IF _N_ = 1 THEN DO;
Drug_Class='';
Drug_Type='';
Generic='';
END;
RUN;
libname clinic odbc user=XXX password=XXX dsn=DWName schema=DWSchema autocommit=yes;
PROC SQL;
DROP TABLE clinic.caden_test;
CREATE TABLE clinic.caden_test AS
SELECT * FROM for_clinical;
QUIT;
PROC IMPORT および Data ステップは、単にデータを必要な形式にするためのものであり、問題はないはずです。臨床ライブラリは、私の資格情報を使用してデータ ウェアハウスへの ODBC 接続を介して作成されます。以下のスクリーンショットは、ローカル マシンと臨床サーバー上のデータ セットの前後を示しています (最初の行にいくつかの欠落があることに注意してください)。ログを投稿しませんでした。恐ろしいのは、私のログに何か問題があったという兆候がなかったことです。
これは、DB2、SAS、または SAS と DB2 の組み合わせの問題ですか? ローカルからローカルへ、または DB2 から DB2 への問題を再現できません。さらに、削除された値は常に斜めに表示されます。幅の広いデータ (4 つ以上の変数) では、ランダムな行から開始し、最後の列に到達するまで右斜め上に進みます。
Viewtable の混乱ではないというコメントの BellevueBob の懸念に対処するために、臨床データに対する PROC FREQ の出力を次に示します。欠落が実際に存在することを示しています。
BellevueBobの答えは、欠落しているデータが文字の場合に機能しますが、同じ方法でデータテーブルを作成しますが、数値データでは、解決策は文字データの場合とは異なります.