メインコンテンツまでスキップ

論理計算フィールド

論理計算フィールドは、データ ソースの 2 つ以上の値の比較に使用できます。値を送信した論理テストに基づいて常に 0 または 1 を返します。

Reveal では、論理計算フィールドは次のとおりです。

  • 引数のない関数: それぞれ 1 と 0 を返す true() および false()

  • 論理テストのある複素関数: 各関数の詳細な情報は、以下の表にあるリンクをクリックしてください

注記

以下の表のすべてのサンプルは HR Dataset 2016 スプレッドシートで作成されました。

論理関数:

関数名構文とサンプル
and: and は 2 つの論理テストを実行します。論理テストは true の場合、1 を返します。1 つまた 2 つは false の場合、0 を返します。構文: and({logical1},{logical2})
サンプル: and([BirthDate]>date(1983, 07, 15, 04, 06, 55),[Department]="CPA")
false: false は論理値の false である 0 を返します。構文: false()
サンプル: false()
if: if は論理テストを実行します。論理テストは true の場合、1 を返します。論理テストは false の場合、0 を返します。構文: if({logical test},{value if true},{value if false})
サンプル: if([BirthDate]<(1971,04,15,4,06,55),1,0)
not: not は論理テストを実行します。論理テストは false の場合、1 を返します。論理テストは true の場合、0 を返します。構文: not({logical})
サンプル: not([OfficeId]>=3)
or: or は 2 つの論理テストを実行します (if ステートメント)。論理テスト の 1 つのいずれか true の場合、1 を返します。両方が false の場合、0 を返します。構文: or({logical1},{logical2})
サンプル: or(if([Office]="London,UK",1,0),if([BirthDate]<date(1992,09,15,4,06,55),1,0))
true: true は論理値の true である 1 を返します。構文: true()
サンプル: true()

If

If 関数で論理テストで定義した特定の条件を満たす結果を見つけることができます。3 つの引数で構文されます。

  • logical test: 平均を計算するための式に必要な条件。

  • value if true 論理テストが true の場合に関数がアウトプットする値。

  • value if false: 論理テストが false の場合に関数がアウトプットする値。

基本サンプル

たとえば、上記の表の例です。

if([BirthDate]<date(1971,04,15,4,06,55),1,0)

より明確にするために関数を上記で定義した用語に基づいて区別します。

関数名論理テスtrue の場合の値false の場合の値
if (…​)[BirthDate]<date(1971,04,15,4,06,55)10

論理テストでデータ ソースの expression と論理テストを組み合わせます。

演算子条件の引数
[BirthDate]<date(1971,04,15,4,06,55)

date 引数は date で説明された構文に従います。

関数名
date(…​)1971041540655

以下は数値以外の例です。

if([Department]="Development",1,0)

説明:

関数名論理テスtrue の場合の値false の場合の値
if (…​)[Department]="Development"10

ネスト IF 文のサンプル

論理演算子 (andor) の後ろに続けてネスト IF 文を使用できます。

以下は if 文が 2 つある例ですが、if 文を使用する際の上限はありません。

maxif([Wage], and([OfficeId]=1, [Department]="Development"))

説明:

関数名管理演算子
maxif (…​)[Wage]and

if-condition のステートメント:

  • [BirthDate]>date(1992,09,15,4,06,55)

  • [Department]="Development"

論理演算子が and であるため、実行する maxif 集計の両方の条件が true である必要があります。

And と Or

and および or 関数は、適用する必要のある 2 つの論理テストを宣言してネスト if 条件を構築できます。and および or に同じ構文があります。

関数名論理テスト 1論理テスト 2出力
and (…​)logical1logical2両方の条件が満たされる場合、1 を返します条件の 1 つのみを満たす場合、または 条件が満たされない場合、0 を返します
or (…​)logical1logical2両方の条件、または条件の1 つのみを満たす場合、1 を返します条件が満たされない場合、0 を返します

サンプル

以下は and および or サンプルの例です。

  • and([BirthDate]>date(1983,07,15,04,06,55), [Department]="CPA")

  • or([Office]="London,UK",[BirthDate]<date(1992,09,15,4,06,55))

含まれる構文は同じです。

関数名論理テスト 1論理テスト 2出力
and (…​)[BirthDate]>date(1983,07,15,04,06,55)[Department]="CPA"行に基づいた 1 および 0。
or (…​)[Office]="London,UK"[BirthDate]<date(1992,09,15,4,06,55)行に基づいた 1 および 0。

and 計算フィールドは 4 つの TRUE 行のみ返します。

  • 行 7 (従業員 Zolleis Walker)。

  • 行 57 (従業員 Yancy Martinez)。

  • 行 94 (従業員 Nicolas Favarelli)。

  • 行 96 (従業員 Jorge Stanatto)。

ルールでフィルターするまたは値を選択する 1.00 を適用した場合のみ 2 つの行を確認します。

Zolleis Walker を見つけるために and 条件を設定し直す場合、以下の論理テストを使用できます。

関数名論理テス 1論理テス 2論理テス 3
and (…)[BirthDate]>date(1981,07,15,4,06,05)[Department]="CPA"[Wage]>150000
[Office]="Tokyo,Japan"

and/or 関数を isempty 計算フィールドと組み合わせて同じ結果を取得することも可能です。

関数名論理テス 1論理テス 2論理テス 3論理テス 4
and (…​)同上同上[OfficeId]>=3ISEMPTY([ResignedDate])

構文が追加の引数によって複雑になるため、追加の条件をネストして論理テストをグループ化できます。結果に影響はありませんが、2 つ目の and を明確に定義する必要があります。

and([BirthDate]>date(1981,07,15,4,06,05),[Department]="CPA",[OfficeId]>=3,ISEMPTY([ResignedDate]))

  • 論理テス 1: [BirthDate]>date(1983,07,15,4,06,55)

  • 論理テス 2: [Department]="CPA"

  • 論理テス 3: [OfficeId]>=3

  • 論理テス 4: ISEMPTY([ResignedDate])

複雑な計算フィールドの簡素化

複数の if 条件に基づいた結果が必要な場合は、上記のサンプルの数式などが便利ですが、構文は複雑になります。個別の計算フィールドを作成して 1 つの数式に結合することにより簡素化できます。たとえば、以下の計算フィールドがあります。

and([BirthDate]>date(1981,07,15,4,06,05),[Department]="CPA",[OfficeId]>=3,ISEMPTY([ResignedDate]))

4 つの if 条件があります。

  • [BirthDate]>date(1983,07,15,4,06,55)

  • [Department]="CPA"

  • [OfficeId]>=3

  • ISEMPTY([ResignedDate])

各 IF 条件の計算フィールドをわかりやすい名前で作成できます。

IF ステートメント新しい計算フィールド計算済の数式
IF ステートメント 1Employees Born after July 15, 1981[BirthDate]>date(1981,07,15,4,06,05)
IF ステートメント 2CPA Employees[Department]="CPA"
IF ステートメント 3JP, UY and BG Employees[OfficeId]>=3
IF ステートメント 4Current EmployeesISEMPTY([ResignedDate])

これらの新しいステートメントを新しい計算フィールドに結合します。

and([Employees Born after 1981],[CPA Employees],[JP, UY and BG Employees],[Current Employees])

Not

Not 関数を使用して、論理テストが true かどうかを確認できます。デフォルトでは、Not をタップすると以下の構造が表示されます。

not(logical)

サンプル

関数名論理テス
not (…​)[OfficeId]>=3)

説明:

演算子 1演算子 2条件の引数
[OfficeId]>=3

Not を and/or と組み合わせる

Not を使用して and/or 計算フィールドで反対の結果を取得できます。

以下の and 計算フィールドは、両方の if 条件が同時に true の EmployeeId 66 (Zerbe Johansen) のみに 1 を返します。すべての他の行は 0 を返します。

関数名論理テスト 1論理テスト 2
and (…​)[Department]="CPA"[BirthDate]>date(1992,09,15,4,06,55)

not を計算フィールドの前に追加することにより、反対の結果を取得できます。

notand論理テスト 1論理テスト 2
not (…​)and (…​)[Department]="CPA"[BirthDate]>date(1992,09,15,4,06,55)

以前 0 を返したすべての行は 1 を返し、すべての 1 は 0 になります。

True と False

true と false 関数が引数なしで使用されます。つまり論理テストが適用されていないため、論理テストを実行する式や特定のステートメントがありません

これらを if などの他の論理計算フィールドと組み合わせて使用すると便利です。以下は一般的な if 構文の例です。

関数名引数 1引数 2引数 3
if (…​)logical testvalue if truevalue if false

この式を、セクションの最初にある if の例で置き換えましょう (if([BirthDate]<date(1971,04,15,4,06,55),1,0))。更に true の場合の値と false の場合の値の引数の値を 3 と 4 に変更します。

関数名論理テストtrue の場合の値false の場合の値
if (…​)[BirthDate]<date(1971,04,15,4,06,55)34

if ステートメントの出力は、論理テストが true の場合 3、論理テストが false の場合 4 です。標準 1.0 ブール値の結果を使用する場合、その位置に true() and false() を含むことができます。

関数名論理テストtrue の場合の値false の場合の値
if (…​)[BirthDate]<date(1971,04,15,4,06,55)true()false()

論理テストに基づいて if 数式の出力を強制的に 1 と 0 にします。