前のページ|次のページ

SYNCADD=データセットオプション

オブザベーションの追加時に、一度に1つのオブザベーションを処理するのか、それとも一度に複数のオブザベーションを処理するのかを指定します。

該当要素: PROC SQL
デフォルト: NO
操作: UNIQUESAVE=
エンジン: SPD Engineのみ

構文

SYNCADD=YES | NO

必須引数

YES

一度に1つのオブザベーションを処理します(同期)。

NO

一度に複数のオブザベーションを処理します(非同期)。

詳細

SYNCADD=YESでは、オブザベーションは一度に1つずつ処理されます。PROC SQLでは、重複しないインデックスが付いたデータセットにオブザベーションを挿入した結果、SPD Engineで重複する値を含むオブザベーションが検出された場合、次の処理が発生します。
  • 追加操作を停止
  • 直前に追加したトランザクションをすべて取り消し
  • ディスク上の元のデータセットは変更なし
SYNCADD=NOでオブザベーションを追加した方が、明らかに処理がずっと速くなります。ただし、PROC SQLを使用して、重複しないインデックスが付いたデータセットに少数のオブザベーションを挿入する場合、SPD Engineでは、重複値が1つ見つかると、すべてのオブザベーションが取り消されることがあります。具体的には、次の処理が発生します。
  • SPD Engineでオブザベーションを拒否
  • SPD Engineで処理を続行
  • 追加操作または挿入操作の終了時にのみステータスコードを発行
拒否されたオブザベーションを別のデータセットに保存するには、UNIQUESAVE=データセットオプションをYESに設定します。

例: 重複しないインデックスが付いたデータセットに重複値のあるオブザベーションを挿入

次の例では、2つの同一データセットWITH_NOおよびWITH_YESが作成されます。両方ともインデックスは重複していません。
PROC SQLを使用して、3つの新しいオブザベーションが挿入されます。そのうちの1つには重複値があります。SYNCADD=YESオプションが使用されます。PROC SQLは重複値が検出されると停止し、データセットを復元します。
もう一度PROC SQLを使用して、これら3つの新しいオブザベーションが挿入されます(前回と同様)。この場合は、SYNCADD=NOオプションが使用されます。重複値のあるオブザベーションは拒否されます。SASログは次のとおりです。
オブザベーションの挿入
1 libname addlib spde 'c:\temp'; NOTE:Libref ADDLIB was successfully assigned as follows:Engine:        c:\temp\ 2 3 data addlib.with_no(index=(x /unique)) 4 addlib.with_yes(index=(x /unique)) ; 5 input z $ 1-20 x y; 6 list; 7 datalines; RULE:      ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+ 8 one 1 10 9 two 2 20 10 three 3 30 11 four 4 40 12 five 5 50 NOTE:The data set ADDLIB.WITH_NO has 5 observations and 3 variables.注:The data set ADDLIB.WITH_YES has 5 observations and 3 variables.13   run; 14 15   proc sql; 16      insert into addlib.with_yes(syncadd=yes) 17       values('six_yes',   6, 60 ) 18       values('seven_yes', 2, 70 ) 19       values('eight_yes', 8, 80 ) 20   ; ERROR:Duplicate values not allowed on index x for file WITH_YES.注:This insert failed while attempting to add data from VALUES clause 2 to the data set.注:Deleting the successful inserts before error noted above to restore table to a consistent state.21   quit; NOTE:The SAS System stopped processing this step because of errors.22 23   proc sql; 24      insert into addlib.with_no(syncadd=no) 25       values('six_no',   6, 60 ) 26       values('seven_no', 2, 70 ) 27       values('eight_no', 8, 80 ) 28   ; NOTE:3 rows were inserted into ADDLIB.WITH_NO.WARNING:Duplicate values not allowed on index x for file WITH_NO, 1 observations rejected.29   quit; 30 31   proc compare data=addlib.with_no compare=addlib.with_yes; 32   run; NOTE:There were 7 observations read from the data set ADDLIB.WITH_NO.注:There were 5 observations read from the data set ADDLIB.WITH_YES.
前のページ|次のページ|ページの先頭へ