論理関数
以下のリストに、式に使用できる論理関数を示します。
関数 | 説明 |
---|---|
Case | Case ステートメントには 2 種類の形態があります。 シンプル:
検索済み:
複数の when/then 式を入力することができ、これらの式は左から右の順に評価されます。 詳細については、以下を参照してください。 例:
例については、以下および「条件に基づく計算カラム」を参照してください。 |
If(Arg1,Arg2,Arg3)
| Arg1 =true の場合は Arg2 を返し、Arg1 =false の場合は Arg3 を返します。Arg1 はブール型で、通常は比較の結果です。Arg2 と Arg3 には任意の型を指定できますが、両方とも同じ型、または NULL である必要があります。2 番目と 3 番目の引数はローのサブセットのみを処理し、すべてのカラムベースおよび集計メソッドに影響を与えます。詳細については、以下を参照してください。 例:
例については、以下および「条件に基づく計算カラム」を参照してください。 |
Is Not Null
| 式によって空の値 (NULL 値) が生成されるかどうかを判別するために、If または Case ステートメント内で使用されます。例:
式に空の値 (NULL 値) が含まれている場合は、 |
Is Null
| 式によって空の値 (NULL 値) が生成されるかどうかを判別するために、 例:
式に空の値 (NULL 値) が含まれている場合は、 |
式での if の使用についての詳細:
式で If ステートメントを使用している場合、最初の引数の条件で、3 番目の引数で検証される値を制限します。動作を理解するため、例として最初に次のような単純な整数カラムを取ってみます。
Col1 |
1 |
2 |
3 |
次の式を使用して、計算カラムを挿入します。
if(Col1 < 2,
Max(Col1), Max(Col1))
この結果、2 つの異なる値を持つ新しいカラムが作成されます。1 つは、2 未満のすべての値の中の最大値を表示するカラム、もう 1 つは、残りの値の中の最大値を示すカラム (これはまた、カラム全体の最大値でもあります) です。
Col1 | if(Col1 < 2, Max(Col1), Max(Col1))
|
1 | 1 |
2 | 3 |
3 | 3 |
If
関数は、カラムを 2 つのグループに分割してから、新しいグループの式の検証を続けます。
代わりに Percentile
式を使用している場合、最初の条件でどのようにカラムを分割したかによって、同じパーセンタイル式でも異なる結果となります。
Col2 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
次の 2 つの演算式を使用して 2 つのカラムを挿入します。
if (Col2 < 4, 0,
Percentile(Col2, 70))
if (Col2 < 6, 0,
Percentile(Col2, 70))
次の結果が得られます。
Col2 | if (Col2 < 4, 0,
Percentile(Col2, 70))
| if (Col2 < 6,
0, Percentile(Col2, 70))
|
1 | 0 | 0 |
2 | 0 | 0 |
3 | 0 | 0 |
4 | 8.2 | 0 |
5 | 8.2 | 0 |
6 | 8.2 | 8.8 |
7 | 8.2 | 8.8 |
8 | 8.2 | 8.8 |
9 | 8.2 | 8.8 |
10 | 8.2 | 8.8 |
If
」でどのようにデータをグループ化したかにより変化します。式での条件の使用についての詳細:
条件式を使用する場合、「when
」以降の条件がカラム全体で計算されます。「then
」以降の引数が、「when
」条件で定義されたローに対し計算されます。複数の「when- then
」のペアが式に含まれている場合、「then
」は、最後の条件だけでなく前のすべての条件により制限されます。
単純な整数カラムを使用した例:
Col1 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
2 つの計算カラム (Case Min と Case Max) を、次の式を使用して挿入します。
Case Min:
case
when [Col1]<Avg([Col1]) then Min([Col1])
when [Col1]<(Avg([Col1]) + 1) then Min([Col1])
else Min([Col1])
end
Case Max:
case
when [Col1] < Avg([Col1]) then Max([Col1])
when [Col1] < (Avg([Col1]) + 1) then Max([Col1])
else Max([Col1])
end
結果は次のようになります。
Col1 | Case Min | Case Max |
1 | 1 | 4 |
2 | 1 | 4 |
3 | 1 | 4 |
4 | 1 | 4 |
5 | 5 | 5 |
6 | 6 | 8 |
7 | 6 | 8 |
8 | 6 | 8 |