今回は「フィル」と呼ばれるコマンドの使い方を紹介していこう。このコマンドは、null(空白)として取得されたデータを自動補完してくれるもので、取得元のデータ表に「結合されたセル」があった場合、ならびにCSVファイルからデータを取得した場合などに活用できる。
「フィル」の基本的な使い方
データを処理するにあたって、少し厄介な存在となるのが「セルの結合」だ。今回は、nullとして取得されたデータを補完する際に活用できる「フィル」の使い方を紹介していこう。
まずは、以下の図に示したデータ表を見て頂きたい。このデータ表には「結合されたセル」がいくつか含まれている。では、このデータ表を「Power Query エディター」に取得すると、どうなるだろうか? 実際に試してみよう。
結果は以下の図のとおり。「結合されたセル」のデータは“先頭セル”のデータとして取得され、他のセルはnull(空白)になってしまう。
このままでは正しくデータを処理できないので、nullの部分を“適切なデータ”に補完してあげる必要がある。この作業を自動で処理してくれるコマンドが「フィル」となる。
「フィル」の使い方を紹介する前に、「日付/時刻」として取得されてしまっている「公演日」のデータから時刻情報を削除しておこう。この処理は、データ型を「日付」に変更すると実行できる。
それでは、本題となる「フィル」の使い方を紹介していこう。最初に、データ補完の対象にする列を選択する。今回の例の場合、「会場」の列を選択すればよい。続いて、「変換」タブにある「フィル」をクリックし、「下へ」を選択する。
すると、各nullの“すぐ上にあるデータ”がコピーされ、すべてのセルを“適切なデータ”で埋めることが可能となる。
このように、“すぐ上にあるデータ”でnullを自動補完してくれる機能が「フィル」となる。ちなみに、「フィル」コマンドには「上へ」という選択肢も用意されている。
こちらを選択した場合は、“すぐ下にあるデータ”でnullが自動補完される仕組みになっている。
もちろん、今回の例の場合、この補完方法は適切とはいえない。また、一番下にあるnullは自身より下のデータが存在しないため、nullの状態が維持されることになる。
“補完すべきデータが自身の下にある”というのは極めて稀なケースと考えられるので、「フィル」→「上へ」を使用する機会は滅多にない。よって、参考程度に覚えておけば十分だ。通常は「フィル」→「下へ」を使用するのが基本である。
補完したいデータが「null」でない場合は?
これまでに解説してきたように、「フィル」の使い方そのものに特に難しい点は見当たらない。“すぐ上にあるデータ”でnullを補完してくれる機能、と覚えておけば十分であろう。ただ、これだけで話を終わらせてしまうと面白みに欠けるので、少し応用的な例を紹介しておこう。
以下の図は、「セルの結合」ではなく、「〃」の記号(同じ)が入力されていた場合の例だ。内容は、先ほど示したデータ表と同じである。
このデータ表を「Power Query エディター」に取得すると、以下の図のような結果になる。一部のデータが「〃」になっているため、このままでは「並べ替え」などの処理を行えなくなってしまう。
このような場合にも「フィル」が活用できる。ただし、自動補完の対象になるのはnullのみ、という点に注意しなければならない。よって、あらかじめ「〃」をnullに置き換えておく必要がある。
この処理は置換機能で対応できる。「会場」の列を選択し、「変換」タブにある「値の置換」をクリックする。
「値の置換」の設定画面が表示されるので、“検索する値”に「〃」と入力し、“置換後”に「null」と半角で入力する。その後、「OK」ボタンをクリックする。
※「〃」の文字は「おなじ」を漢字変換すると入力できる。
これで「〃」のデータをnullに置換できた。以降の操作手順は、先ほど紹介した例と同じだ。「会場」の列を選択し、「フィル」→「下へ」を実行すればよい。これで、すべてのセルを“適切なデータ”に自動補完できる。
補完したいデータが空文字の場合は?
次の例は、nullではなく「空文字」としてデータが取得されてしまった場合の対処方法だ。たとえば、以下の図のように「カンマ」が連続するCSVファイルがあったとしよう。
このCSVファイルを「Power Query エディター」に取得すると、「カンマ」が連続していた部分(データなしの部分)は、nullではなく、空文字としてデータが取得される。
試しに、この状態のまま「フィル」でデータを補完してみよう。「会場」の列を選択し、「フィル」→「下へ」を実行する。
結果は、以下の図のとおり。データの補完は失敗に終わり、そのまま空文字が残ってしまう。
先ほども述べたように、「フィル」により自動補完されるのはnullだけで、空文字は対象とならない。
「null」と「空文字」は似て異なる存在になるため、その違いに十分に注意しておく必要がある。簡単に説明しておくと、以下のようになる。
・null …………… データが存在しない
・空文字 ………… “長さ0の文字列”が存在する
「長さ0(0文字)なら存在していないのでは……?」と思うかもしれないが、パワークエリはそう考えてくれない。よって、正しく自動補完するには、空文字をnullに変換してから作業する必要がある。
この変換にも「値の置換」が活用できる。「会場」の列を選択し、「変換」タブにある「値の置換」をクリックする。
空文字をnullに置き換えるときは、“検索する値”に何も入力しないで、“置換後”に「null」と入力すればよい。
「OK」ボタンをクリックすると、「空文字」→「null」の置換が実行され、以下の図に示したような結果が得られる。以降の作業は、これまでと同じ。「会場」の列を選択して「フィル」→「下へ」を実行すると、nullを“すぐ上にあるデータ”で自動補完できる。
このようにデータが空文字の場合も、事前に置換の作業が必要となる。重箱の隅をつつくような話になってしまうが、いざという時に困らないように、念のため覚えておくとよいだろう。