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:
この例では、データ モデルの EmployeeAddresses と呼ばれるテーブルがロードされ、このテーブルは Employee 軸と Address 軸を使用してテーブル チャートとして表示できます。
where 節:where Exists (Employee, Name) は、テーブル Citizens から Employees にも存在する名前のみを新しいテーブルにロードすることを意味します。Drop ステートメントは、一時的なテーブル Employees と Citizens を混乱を避けるために削除します。
Employee | Address |
---|---|
Bill | New York |
John | Miami |
Steve | Chicago |
例4:
後続を含むテーブル EmployeeAddresses を使用して構築する前の例で、where not Exists を使用してサンプル データのステートメントを置き換えます。
NonEmployee:
Load Name as Employee, Address Resident Citizens where not Exists (Employee, Name);
where 句には次のものが含まれます not: where not Exists (Employee, Name)。
これは、テーブル Citizens から Employees にも存在する名前のみを新しいテーブルにロードすることを意味します。
Citizens テーブルには Lucy の値が 2 つありますが、結果テーブルには 1 つしか含まれていないことに注意してください。最初の行をロードすると、値は Employee シンボル テーブルに含まれます。したがって、2 行目がチェックされると、値が存在します。
次の例は、すべての値をロードする方法を示しています。
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
例5:
Lucy のすべての値を取得できるようにするには、次の 2 つを変更する必要があります。
Employee の名前を Name に変更する前のロードを Employees に追加します。
Load Employee As Name, ID, Salary;
Citizens の Where 条件を次のように変更します。
not Exists (Name, Employee)。
これにより、Name と Employee に異なるシンボル テーブルが作成されます。Lucy の 2 行目をチェックしても、Name にはまだ存在しません。
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Lucy | Paris |
例で使用されているデータ: