Exists - スクリプト関数
Exists() は、特定の項目値がロード スクリプトの項目にすでにロードされているかどうかを決定します。この関数は TRUE または FALSE を返すため、LOAD ステートメントまたは IF 関数の where 句で使用できます。
構文:
Exists(field_name [, expr] )
戻り値データ型: ブール値
引数:
引数 | 説明 |
---|---|
field_name |
値を検索する項目の名前。引用符なしで明示的な項目名を使用できます。 項目はスクリプトによって既にロードされている必要があります。つまり、スクリプトのさらに下の句にロードされている項目を参照することはできません。 |
expr |
存在するかどうかを確認する値。現在の [load] ステートメントの 1 つまたは複数の項目を参照する明示的な値または数式を使用できます。 情報メモ現在の [load] ステートメントに含まれていない項目は参照できません。
この引数はオプションです。省略すると、関数は現在のレコードの field_name の値が既に存在するかどうかを確認します。 |
例1:
Exists (Employee)
現在のレコード内の項目 Employee の値が、その項目を含む読み取り済みのレコード内にすでに存在してれば、-1 (True) を返します。
例2:
Exists(Employee, 'Bill')
項目値 'Bill' が項目 Employee の現在のコンテンツに含まれていれば、-1 (True) を返します。
ステートメント Exists (Employee, Employee) と Exists (Employee) は同じ働きをします。
例3:
この例では、データ モデルの Citizens と呼ばれるテーブルがロードされ、このテーブルは Employee 軸と Address 軸を使用してテーブル チャートとして表示できます。
where 節:where Exists (Employee) は、テーブル Citizens から Employees にも存在する名前のみを新しいテーブルにロードすることを意味します。Drop ステートメントは、一時的なテーブル Employees を混乱を避けるために削除します。
Employee | Address |
---|---|
Bill | New York |
John | Miami |
Steve | Chicago |
例4:
where 句には次のものが含まれます not: where not Exists (Employee)。
これは、テーブル Citizens から Employees にも存在する名前のみを新しいテーブルにロードすることを意味します。
Citizens テーブルには Lucy の値が 2 つありますが、結果テーブルには 1 つしか含まれていないことに注意してください。最初の行に値 Lucy をロードすると、その行は Employee フィールドに含まれます。したがって、2 行目がチェックされると、値はすでに存在します。
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
例5:
この例は、すべての値をロードする方法を示しています。
Lucy のすべての値を取得できるようにするために、2 つのことが変更されました。
-
Employees テーブルへの先行ロードが挿入され、Employee の名前が Name に変更されました。
Load Employee As Name;
-
Citizens の Where 条件が次のように変更されました。
not Exists (Name, Employee).
これにより、Name と Employee のフィールドが作成されます。Lucy の 2 行目をチェックしても、Name にはまだ存在しません。
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Lucy | Paris |
例で使用されているデータ: