【ITニュース解説】⚔️ ISBLANK vs ISEMPTY: The Nothing Detection Duel
2025年09月08日に「Medium」が公開したITニュース「⚔️ ISBLANK vs ISEMPTY: The Nothing Detection Duel」について初心者にもわかりやすいように丁寧に解説しています。
ITニュース概要
データ分析で使われるISBLANK関数とISEMPTY関数は、どちらも「空」を判定するが対象が異なる。ISBLANKは単一の値が空かを確認し、ISEMPTYはテーブル全体に行がないかを判定する。データに応じて正しく使い分ける必要がある。
ITニュース解説
データ分析の世界では、「データが存在しない」状態を正しく、かつ意図通りに扱うことが非常に重要である。特にMicrosoft Power BIなどのビジネスインテリジェンスツールで広く使われるデータ分析言語「DAX (Data Analysis Expressions)」において、この「何もない」状態を検出するために用意されているのが ISBLANK と ISEMPTY という二つの関数である。これらは名前が似ており、どちらも「空であること」を確認する役割を持つため混同されやすいが、その判定対象と動作原理は根本的に異なる。この違いを正確に理解することは、信頼性の高いデータモデルやレポートを構築する上で不可欠な知識となる。
まず ISBLANK 関数について解説する。この関数は、単一の値が「ブランク(BLANK)」であるかどうかを判定するために使用される。ここで言う単一の値とは、専門的にはスカラー値と呼ばれ、テーブル内の特定のセルに入っている一つの数値や文字列、あるいはメジャーと呼ばれる計算式によって返される単一の結果などを指す。ISBLANK 関数は、引数として与えられた値がブランクであればTRUE(真)を、そうでなければFALSE(偽)を返す。DAXにおける「ブランク」という概念を理解することが重要であり、これは数値の「0(ゼロ)」や、文字が一つも含まれていない「空文字列("")」とは明確に区別される。ゼロや空文字列は、それ自体が意味を持つ「値」として存在していると見なされるため、これらを ISBLANK 関数で評価すると結果はFALSEとなる。ISBLANK がTRUEを返すのは、データベースにおける NULL のように、値そのものが本質的に存在しない、あるいは定義されていない状態の場合に限られる。具体的な使用例としては、売上テーブルに「割引額」という列があり、ある取引では割引が適用されなかったためにそのセルが空欄になっているケースが挙げられる。この空欄のセルに対して ISBLANK を用いるとTRUEが返るため、計算式の中で「もし割引額がブランクなら特定の処理を行う」といった条件分岐に利用できる。
次いで ISEMPTY 関数について説明する。この関数は ISBLANK とは異なり、単一の値ではなく、「テーブル」、すなわちデータの行と列から構成される表形式のデータ集合体が空であるかどうかを判定する。ISEMPTY は、引数に指定されたテーブルが一行もデータを含んでいない場合にTRUEを返し、一行でもデータが存在する場合にはFALSEを返す。この関数は、主に FILTER 関数や CALCULATETABLE 関数など、何らかの条件に基づいて元のテーブルから新しいテーブルを生成する関数と組み合わせて使われることが多い。例えば、「特定の商品カテゴリについて、過去一ヶ月間の売上データ」という条件でデータを抽出した結果、該当する取引が一件もなかったとしよう。このとき、抽出結果として得られるテーブルは行数がゼロの「空のテーブル」となる。この結果テーブルを ISEMPTY で評価するとTRUEが返ってくる。この機能を利用して、特定のデータが存在する場合にのみグラフを表示したり、データがない場合には「該当データなし」というメッセージを表示したりするなど、レポートの表示内容を動的に制御する高度なロジックを実装することが可能になる。
したがって、ISBLANK と ISEMPTY の最も本質的な違いは、評価する対象が「個々の値」であるか「データの集合体」であるかという点にある。ISBLANK は、計算の結果やセルの値といったミクロな視点でデータの有無を確認する際に用いる。一方で ISEMPTY は、特定の条件を満たすデータの集まり全体がマクロな視点で存在するかどうかを確認するために用いる。この使い分けを誤ると、意図しない計算結果やエラーを引き起こす原因となる。例えば、ある商品の売上が存在するかどうかを確認したい場合に、売上額の合計を計算するメジャーに対して ISEMPTY を使うことはできない。メジャーは単一の値を返すため、ISBLANK でその結果がブランクかどうかを判定するのが正しいアプローチである。
これらの関数の特性を理解し、適切に使い分けることは、データ分析の精度と効率を向上させる上で極めて重要である。ISBLANK は個々のデータポイントの欠損を処理し、ISEMPTY は分析対象となるデータ群そのものの存在を検証する。両者は似て非なる目的を持つツールであり、それぞれの役割を正しく認識することで、より堅牢でユーザーにとって分かりやすいデータ分析ソリューションを構築することができるのである。