【Tableauの基本】初心者向け_テーマ2：関数

# 1.主要な関数の種類
※以下のリンクは、Tableau公式ヘルプページへのリンク

・今回学ぶ関数
①[数値関数](https://help.tableau.com/current/pro/desktop/ja-jp/functions_functions_number.htm)
②[文字列関数](https://help.tableau.com/current/pro/desktop/ja-jp/functions_functions_string.htm)
③[日付関数](https://help.tableau.com/current/pro/desktop/ja-jp/functions_functions_date.htm)
④[論理関数](https://help.tableau.com/current/pro/desktop/ja-jp/functions_functions_logical.htm)
⑤[集計関数](https://help.tableau.com/current/pro/desktop/ja-jp/calculations_calculatedfields_aggregate_create.htm)

・次回学ぶ関数
⑥[表計算関数](https://help.tableau.com/current/pro/desktop/ja-jp/functions_functions_tablecalculation.htm)

・今回学ばない関数
[型変換](https://help.tableau.com/current/pro/desktop/ja-jp/functions_functions_typeconversion.htm)
[パススルー関数 (RAWSQL)](https://help.tableau.com/current/pro/desktop/ja-jp/functions_functions_tablecalculation.htm)
[ユーザー関数](https://help.tableau.com/current/pro/desktop/ja-jp/functions_functions_user.htm)
[空間関数](https://help.tableau.com/current/pro/desktop/ja-jp/functions_functions_spatial.htm)
[予測モデリング関数](https://help.tableau.com/current/pro/desktop/ja-jp/functions_functions_predictivemodeling.htm)
[その他の関数](https://help.tableau.com/current/pro/desktop/ja-jp/functions_functions_additional.htm)


# 2.主要な関数の具体例
## ①数値関数
### ・概要
1, ZN  (ゼットエヌ) …計算結果がNULLになる場合でも「ゼロ」にする

### ・詳細（気になるもののみ記載）
#### 関数：ZN
・構文：ZN(expression)
・出力：任意、または 0
・定義：式の値が Null でない場合は <expression> を返し、それ以外は 0 を返します。
・例：ZN(Grade) = 0　※Grade＝NULL
・その他：この関数を使用すると、Null 値をゼロに置き換えることができます。




## ②文字列関数
### ・概要
1, LEFT (レフト) … 文字列の左からn文字を返す　★
2, REPLACE  (リプレイス) …条件にあてはまる文字列を指定した文字列に置換する　★
3, FIND  (ファインド) …特定の文字列の出現位置を返す　★
4, SPLIT  (スプリット) …ひとつのフィールド値を２つ以上のフィールドに分割する
5, STR  (エスティアール) …データ型を文字列に変換する

### ・詳細（気になるもののみ記載）
#### 関数：LEFT
・構文：LEFT(string, number)
・出力：文字列
・定義：文字列の左端から number 個の文字を返します。★
・例：LEFT("Matador", 4) = "Mata"
・その他：-


#### 関数：REPLACE
・構文：REPLACE(string, substring, replacement）
・出力：文字列
・定義：string で substring を検索し、それを replacement で置き換えます。substring が見つからない場合、文字列は変更されません。
・例：REPLACE("Version 3.8", "3.8", "4x") = "Version 4x"
・その他：-

#### 関数：FIND
・構文：FIND(string, substring, [start])
・出力：数値　★

・定義：
文字列内の部分文字列のインデックス位置を返します。部分文字列が見つからない場合は 0 を返します。文字列の最初の文字の位置は 1 です。

オプションの数値引数 start を追加した場合、関数は開始位置より前に出現する部分文字列のインスタンスをすべて無視します。　★
・例：
FIND("Calculation", "alcu") = 2
FIND("Calculation", "Computer") = 0
FIND("Calculation", "a", 3) = 7
・その他：-



## ③日付関数

### ・概要
1, TODAY (トゥデイ) …”今日”の日付を返す
2, YEAR  (イヤー) …日付から”年”を取得して返す 
3, MONTH  (マンス) …日付から”月”を取得して返す
4, DATETRUNC  (デイトトランク)…日付を指定したレベルに丸める
5, DATEDIFF  (デイトディフ) …２つの日付にの差を返す
6, DATEADD  (デイトアド)…特定の日付に任意の年数・日数を足す・引く

### ・詳細（気になるもののみ記載）
#### 関数：DATETRUNC
・構文：DATETRUNC(date_part, date, [start_of_week]) 
★何で丸めるか決定する。date_part=month,day,quarter等

・出力：日付
・定義：
date_partで指定された精度で dateを切り捨てます。★
この関数は新しい日付を返します。たとえば、月の中旬にある日付を月レベルで丸めた場合、この関数はその月の第 1 日を返します。
・例：
DATETRUNC('day', #9/22/2018#) = #9/22/2018#
DATETRUNC(quarter, #9/22/2018#) = #7/1/2018# 

・その他：-


#### 関数：DATEDIFF
・構文：DATEDIFF(date_part, date1, date2, [start_of_week])
・出力：整数
・定義：date_part の単位で表された、date1 と date2n の差異を返します。例えば、バンドに入った日と抜けた日を引き算して、その人がバンドにいた期間を確認します。
・例：
DATEDIFF('day', #3/25/1986#, #2/20/2021#) = 12,751
・その他：-


#### 関数：DATEADD
・構文：DATEADD(date_part, interval, date)
・出力：	日付
・定義：指定された date の指定された date_part に、interval で指定された数値を追加した日付を返します。例えば、開始日に 3 か月を足したり、12 日間を足したりするなどです。
・例：
DATEADD('week', 1, [due date])
DATEADD('day', 280, #2/20/21#) = #November 27, 2021#
・その他：


## ④論理関数

### ・概要
1, IF (イフ) … 条件によって別の結果を返す
2, IIF  (アイアイエフ) …条件によって別の結果を返す (2分岐のみ) 
3, CASE  (ケース) …ひとつのフィールドの各値に対して一対一の結果を返す
4, CONTAINS  (コンテインズ) …特定の文字列を含む/含まない を評価する



### ・詳細（気になるもののみ記載）
#### 関数：IF
・構文：
IF test1 THEN then1
[ELSEIF test2 THEN then2...]
[ELSE default]
END　★

・出力：thenの値のデータ型に応じて異なります。
・定義：一連の式をテストし、最初の真の test の then 値を返します。
例：
IF [Season] = "Summer" THEN 'Sandals' 
ELSEIF [Season] = "Winter" THEN 'Boots' 
ELSE 'Sneakers' 
END
・その他：-

#### 関数：IIF
・構文：
IIF(test, then, else, [unknown])

・出力：式内の値のデータ型によって異なります。
・定義：条件が満たされているかどうかを確認し (test)、テストが true の場合は then を返し、テストが false の場合は else を返し、テストが Null の場合は unknown のオプションの値を返します。オプションの unknown (不明) が指定されていない場合は、IIF は Null を返します。
・例：
IF([Season] = 'Summer', 'Sandals', 'Other footwear')
・その他：-


#### 関数：CASE

・構文：★
CASE expression
WHEN value1 THEN then1
WHEN value2 THEN then2
...
[ELSE default]
END

・出力：<then> の値のデータ型に応じて異なります。

・定義：
expression を評価し、指定されたオプション (value1、value2 など) と比較します。value が式と一致した場合、CASE は対応する return を返します。一致しなかった場合は、(オプションの) 既定値を返します。既定値も一致した値もない場合は、Null を返します。
・例：
CASE [Season] 
WHEN 'Summer' THEN 'Sandals' 
WHEN 'Winter' THEN 'Boots' 
ELSE 'Sneakers' 
END

・その他：



## ⑤集計関数
### ・概要
1, SUM (サム) …「合計」を出す
2, AVG  (アベレージ) …「平均」を出す
3, COUNTD  (カウントディー) …とあるディメンションの「値の種類」を出す

### ・詳細（気になるもののみ記載）
特になし


# 参照させていただいたサイト

https://blog.truestar.co.jp/tableau/20190716/37682/