Life is Like a Boat

忘備録や経済、投資、プログラミングに関するメモやtipsなど

DAX, M, PowerFxについて整理する

Power PlatformはMicrosoftの製品で、ビジネスプロセスを自動化し、ビジネスの生産性を向上させるためのプラットフォーム(SaaS)です。

だいたい、入門レベルの解説にも載っていることなのですが、このプラットフォームには、以下の製品が含まれています。

  • Power Apps - ビジネスアプリを開発するためのツール
  • Power Automate - ワークフローやタスクの自動化を行うためのツール
  • Power BI - ビジネスデータの分析と可視化を行うためのツール
  • Power Virtual Agents - AIチャットボットを構築するためのツール

Microsoft社のPower Platformに関する営業資料をみると、ローコード・ノーコードという謳い文句付きで必ず解説されるのですが、プログラミングと全く無縁というわけではなく、生産性を上げる意味でも知っておいて決して損することはないです。このプラットフォームで登場するプログラミング言語は以下の通りです。

  • DAX
  • M
  • PowerFx

それぞれ自分のなかでの整理の意味でまとめてみました。

M

M(Mashup)は、F言語で書かれた関数型言語です。Power BIのPower Queryフレームワークで登場します。Power Queryは軽量ETLエンジンとして機能していて、例えば、列の名前変更、型の変換、ランキングなどの比較的軽い計算操作が行えます。Power QueryはUIからぽちぽち操作して、裏でコードを生成しているので、実際にコード(クエリに近いです)を書くシーンは少ないです。

以下のコードはOrdersテーブルのItem列の値の各単語の最初の文字だけを大文字にして残りの文字を小文字にします。

= Table.TransformColumns(Orders, {"Item", Text.Proper})

Quick tour - PowerQuery M | Microsoft Learn

DAX

DAX(Data Analysis Expression)はPower BIのフロントエンド言語として考えるといいと思います。キャッシュまたはインメモリの保存の概念に近い式エンジンを使用してデータを保持します。複雑なカスタム計算や単純な計算を作成するために使用されます。

以下のコードはTotal Salesというメジャーからチャネル名がStoreの売上を抽出するコードです

Store Sales = CALCULATE([Total Sales], Channel[ChannelName] = "Store")

メジャーは「集計結果を算出するために繰り返し利用できる計算の定義」と覚えておけばいい認識です。

Dax in Power BI - An Guide to DAX Function, Query with Examples

Power Fx

厳密な型付け、宣言型で関数型プログラミング言語です。Excel関数のように使えるので、Microsoftとしては、ビジネスユーザーとプロの開発者の両方がロジックを表現し、問題を解決するための共通の言語という位置付けにしたいようです。Power Apps, Power Automate、Power Virtual Agentで使うシーンがあります。

以下はContact Nameという属性の値をスペース区切りで分割するコードです。"織田 信長"が"織田"と"信長"のリストになります。

Split(ThisItem.'Contact Name', " "))

Transform examples to Power Fx formulas - Power Apps | Microsoft Learn

What is Microsoft Power Fx? An easy 10 minute Guide - PowerPlatformLearn | Rory Neary

pnp.github.io