このページでは、DAX関数を使用してデータクレンジングや名寄せ作業でありがちな半角、全角スペースの処理に関してまとめています。
・使用する関数:SEARCH,CONTAINSSTRING,SUBSTITUTE,FIND
ダミーデータの紹介
下記のような半角、全角スペースが入り混じったダミーデータを使用して、各関数のふるまいを確認してみます。
(種類列に苗字と名前の間に含まれるスペースの種類を記述していますが、関数の引数では使用しません。)
SEARCH関数
SEARCH関数を使用して、半角スペース、全角スペースが何文字目か割り出します。
search_半角 = SEARCH(" ",[Name]) //半角スペース
search_全角 = SEARCH(" ",[Name]) //全角スペース
結果
SEARCH関数は、半角、全角スペースの区別せず、何文字目か返してくれました。
CONTAINSSTRING関数
CONTAINSSTRING関数を使用して、半角スペース、全角スペースが何文字目か割り出します。
contain_半角 = CONTAINSSTRING([Name]," ") //半角スペース
contain_全角 = CONTAINSSTRING([Name]," ") //全角スペース
結果
CONTAINSSTRING関数は、半角、全角スペースの区別せず、TRUEを返しました。
SUBSTITUTE関数
SUBSTITUTE関数を使用して、半角スペース、全角スペースを記号に変換します。
半角変換 = SUBSTITUTE([Name]," ","■") //半角スペース
全角変換 = SUBSTITUTE([Name]," ","■") //全角スペース
結果
SUBSTITUTE関数は、半角、全角スペースの区別して文字変換をしました。
FIND関数
FIND関数を使用して、半角スペース、全角スペースが何文字目か割り出します。
ここでは、対象のスペースが含まれていない場合は、-1を返すような引数を設定しています。
find_半角 = find(" ",[Name],1,-1) //半角スペース
find_全角 = find(" ",[Name],1,-1) //全角スペース
結果
FIND関数は、半角、全角スペースの区別して何文字目か返しました。
半角スペース、全角スペースの判定方法
FIND関数を使用して、Name列のスペースの種類を判定する方法を記載します。
判定 =
SWITCH(
TRUE(),
FIND(" ",[Name],1,-1)>0,"半角",
FIND(" ",[Name],1,-1)>0,"全角",
"なし"
)
データクレンジング、名寄せ処理の内容に応じて、関数の使い分けが重要になりそうです。
まとめ
- 半角、全角スペースの区別しない
SEARCH関数,CONTAINSSTRING関数 - 半角、全角スペースの区別する
SUBSTITUTE関数,FIND関数