PowerQuery 文字列結合の方法|カスタム列と関数式

PowerQuery(パワークエリ)で文字列を結合する方法を紹介します。カスタム式と関数式を用いた文字列結合方法と列のマージを用いた結合方法を解説します。
文字列結合前のnullの処理方法なども記載していますので参考にしてみてください。

目次

カスタム列で文字列を結合する

カスタム列での結合方法

テキストデータを&記号でつなげることでカスタム列で文字列の結合が行えます。任意の文字列は ” ” (ダブルクォーテーション)で囲んで表記し、列データは [ ] で囲んで表記します。

【使用手順】

  1. 「列の追加」タブの「カスタム列」をクリックする。
  2. 編集画面で「任意の文字列」や「テキスト型の列データ」を&記号でつなげた関数式を作成する。

テキスト型以外の列データを使用すると 結果がErrorとなるため文字列結合を行う前にデータ型を変更するように注意してください。

カスタム列での文字列結合の式は全ての行に適用されます。式を適用する行を変更したい場合はIF文と組み合わせて使用してください。IF文の使い方については下記にありますのでよければ参照してみてください。

文字列切り出しの関数式(LEFT / RIGHT / MID関数相当)

カスタム列で文字列結合をする際にLEFT関数やRIGHT関数のような文字列を抽出する関数を組み合わせることで柔軟に文字列データを変換・結合することができます。
パワークエリにはLEFT関数やRIGHT関数はありませんが相当する関数がありますので紹介します。

Text.Start関数(LEFT関数に相当)

Text.Start関数は文字列データの先頭からテキストを抽出できる関数です。関数式は下記の通りで “文字列データ”部分を [列名] に置き換えて使うことができます

Text.Start ( “文字列データ” , 抽出する文字数 )

下記の使用例で「2023」が切り出されます。

Text.Start("2023年8月1日", 4)

Text.End関数(RIGHT関数に相当)

Text.End関数は文字列データの末尾からテキストを抽出できる関数です。関数式は下記の通りで “文字列データ”部分を [列名] に置き換えて使うことができます

Text.End ( “文字列データ” , 抽出する文字数 )

下記の使用例で「01」が切り出されます。

Text.End("2023/08/01", 2)

Text.Middle関数(MID関数に相当)

Text.Middle関数は文字列データの中間からテキストを抽出できる関数です。関数式は下記の通りで “文字列データ”部分を [列名] に置き換えて使うことができます

Text.Middle ( “文字列データ” , 開始インデックス , 抽出する文字数)

下記の使用例で「08」が切り出されます。

Text.Middle("2023/08/01", 5 , 2)


【使用例】カスタム列と関数式で文字列結合する

STEP
データ準備

下図の「年」「月」「日」の列データを文字列結合して「年月日」のデータを作成します。年データだけは年というテキストが含まれているため文字列の抽出関数を用いて数字部だけを切り出してから結合します。

STEP
データ型をテキスト型に変更する
  1. 文字列結合に用いる列のデータ型ボタンをクリックする。
  2. 変更するデータ型として「テキスト型」を選択する。
STEP
カスタム列で文字列結合の式を作成する
  1. 列の追加タブの「カスタム列」をクリックする。
  2. カスタム列の式に下記の文字列結合の式を入力する。
Text.Start([年],4) & "/" & [月] & "/" & [日]
STEP
文字列結合の完了

以上でカスタム列の文字列結合は完了です。3つの文字列が結合された「年月日」が作成されています。

最後に「年月日」列のデータ型を日付型に変換する。これにより日時の計算などに使用できるようになります。

Sponsored link

列のマージで文字列を結合する

「列のマージ」での結合方法

文字列結合したいテキスト型の列を選択して「列のマージ」コマンドを使用することで文字列の結合を行うことができます。

【使用手順】

  1. 文字列結合したいテキスト列をCtrlキーをクリックして選択する。
  2. 変換タブまたは列の追加タブの「列のマージ」をクリックする。
  3. 設定画面で文字列結合部の「区切り記号」と「新しい列名」を設定してOKをクリックする。
列のマージ:「変換」と「列の追加」の違い

「列のマージ」コマンドは変換タブ内と列の追加タブ内の両方にあり、文字列結合した結果が下記のように異なるので状況に応じて使い分けてください。

  • 元の列データ自体を変換したい:「変換タブ」の列の抽出を使用
  • 新しく列データを追加したい:「列の追加タブ」の列の抽出を使用
変換タブの「列のマージ」の結果
列の追加タブの「列のマージ」の結果

新しい文字列を追加したい場合は文字列を列データとして事前準備する必要があります。そのため、新しく文字列を追加したい場合はカスタム列と関数式で文字列結合を行うのがオススメです。

【使用例】列のマージで文字列結合する

STEP
データ準備

下図の「年」「月」「日」の列データを文字列結合して「年月日」のデータを作成します。

STEP
カスタム列で文字列結合の式を作成する
  1. 「年」「月」「日」の列をCtrlキーをクリックして全て選択する。
  2. 列の追加タブの「列のマージ」をクリックする。
  3. 区切り記号で「カスタム」を選択して「/」とし、新しい列名を「年月日」にしてOKをクリックする。
STEP
文字列結合の完了

以上でカスタム列の文字列結合は完了です。3つの文字列が結合された「年月日」が作成されています。

最後に「年月日」列のデータ型を日付型に変換する。これにより日時の計算などに使用できるようになります。

Sponsored link

文字列結合の前処理:null置換

カスタム列と&記号を用いて文字列結合をする場合、使用する列データにnullが含まれていると下図のように文字列結合の結果がnullとなってしまします。※列のマージを用いた場合はnull以外のデータが結合されます。

nullを含む文字列結合の結果

上図のようなnullとなる結果を回避するためには以下の手順で文字列結合前にnullを空白に置換します。

  1. nullが含まれる列をCtrlキーを押しながら複数選択する。
  2. 変換タブの「値の置換」をクリックする。
  3. 設定画面で「検索する値」に「null」、「置換後」を入力せずにOKをクリックする。

nullを空白に置換すると下図のように文字列結合の結果は他の文字列だけを結合したものとなります。

null置換後の文字列結合の結果

null置換の方法はこちらの記事で解説しています。

Sponsored link

文字列結合の前処理:データ型変換

カスタム列と&記号を用いて文字列結合をする場合、使用する列のデータ型がテキスト型以外だと下図のように文字列結合の結果がErrorとなってしまします。

データ型がテキスト型以外の文字列結合の結果

上図のようなErrorを回避するためには以下の手順で文字列結合前にデータ型を変換します。

  1. 文字列結合に用いる列のデータ型ボタンをクリックする。
  2. 変更するデータ型として「テキスト型」を選択する。
データ型の変換

Sponsored link

Power Queryのおすすめ書籍

パワークエリの学習本についてはコチラの記事でまとめてますので参考にしてみてください。

初心者向けおすすめ学習本

初中級者向けおすすめ学習本

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

仕事、お金、旅行のことなどメモしてます。
仕事ではTableauを勉強中!
初心者にもわかりやすいように学んだことを発信していきます。

コメント

コメントする

コメントは日本語で入力してください。(スパム対策)

CAPTCHA

目次