このページでは、PowerBIでテキストデータの半角全角を変換するデータクレンジングの方法を紹介します。
数字やアルファベットだけでなく、記号も同時に変換できる方法を記載しています。
本記事では、紹介する方法はPower Queryを活用して変換を行うので、Excelでも対応できます。
半角全角の変換方法
データ分析において、テキストデータのデータクレンジングは極めて重要です。特に、半角と全角の文字を適切に扱うことは、データの品質を保つ上で不可欠であり、後の集計や分析作業に大きな影響を与えます。
本記事では、PowerBIで半角と全角の文字を一括で変換する方法を詳しく解説します。
Power BIでの変換方法
Power BIで使用することができるDAX関数の中には、テキストデータの半角、全角を変換するための関数は用意されていません。そのためDAX関数による変換ではなく、Power Queryで変換を行うカスタム関数を作成して変換処理を行います。
Power Queryでカスタム関数を作成
先ずはカスタム関数の作成方法を説明します。データの変換から、Power Query エディターでを開きます。
Power Query エディターで画面左側のクエリ画面で右クリックし、新しいクエリ→空のクエリを選択し、クエリ1を作成します。
作成したクエリ1を選択し、詳細エディターをクリック。詳細エディター画面を表示します。
詳細エディター内に半角、全角を変換するクエリを記述します。
下記は、全角を半角に変換するテンプレートになります。
(initialValue) =>
let
text_full_half = List.Zip(
{
List.Combine( { { Character.FromNumber(0x3000) }, { "!".."~" } } ),
List.Combine( { { Character.FromNumber(0x20) }, { "!".."~" } } )
}
),
textList = List.ReplaceMatchingItems(
Text.ToList(initialValue),
text_full_half
)
in
Text.Combine(textList)
入力して完了ボタンをクリックし、全角を半角に変換するカスタム関数を作成することができました。
半角を全角に変換するクエリ式は下記になります。
あまり活用することはないかもしれませんが。必要な場合は、同様に詳細エディターに記述してカスタム関数を作成してください。
(initialValue) =>
let
text_full_half = List.Zip(
{
List.Combine( { { Character.FromNumber(0x20) }, { "!".."~" } } ),
List.Combine( { { Character.FromNumber(0x3000) }, { "!".."~" } } )
}
),
textList = List.ReplaceMatchingItems(
Text.ToList(initialValue),
text_full_half
)
in
Text.Combine(textList)
カスタム関数でサンプルデータを変換
下記のような半角、全角が混在したサンプルデータに対して、作成したカスタム関数を使用して変換を行い、確認を行ってみます。
変換したい列を選択し、カスタム関数の呼び出しをクリック。
カスタム関数を使用して、半角文字のデータ列を新しく作成します。列名を記入し、関数クエリは作成したクエリを選択。
OKボタンのクリックで、全データを半角に変換できました。
上で紹介したクエリを使えば全角にも変換できます。
変換方法をカスタム関数として準備しているので、変換したい列が複数ある場合であっても、カスタム関数の呼び出しだけで対応できるので、効率よく変換処理を行うことができると思います。
変換の仕組み
基本的には、半角文字、全角文字を1対1の関係でList.ReplaceMatchingItems関数を使用して置き換える処理を行っています。英数字、記号の半角、全角でそれぞれリスト化したものを引数としています。
まとめ
- DAX関数を使用して変換を行う処理は現状できない。
- Power Queryでカスタム関数を作成して、変換処理する方法を紹介した。