Power Query へそのゴマ　第２５章　Microsoft Fabric

# 25.1 Microsoft Fabricとは

Microsoft Fabricは、現代のデータプラットフォームの進化を反映し、膨大で多様なデータを効率的に管理し、新しい技術を活用して分析を可能にするツールです。従来、データ分析は専門家によって行われていましたが、現在では企業内の多くの従業員が、自律的に分析スキルを活用できることが求められています。

Microsoftはこれまで、Azure SQL Database、Azure Data Factory、Azure Databricks、Azure Synapse Analytics、Azure Purviewなどの多様なデータ関連サービスを提供してきました。これらのサービスに加え、OLTP（Online Transaction Processing）とOLAP（Online Analytical Processing）を統合し、さらにHTAP（Hybrid Transactional/Analytical Processing）を実現するためのプラットフォームとしてMicrosoft Fabricを発表しました。

Microsoft Fabricは、Azure Data Factory、Synapse Analytics、Power BIといった複数のデータサービスを統合し、シームレスなデータエコシステムを構築します。

# 25.2 Microsoft Fabricの技術基盤

Microsoft Fabricは、SaaS（Software as a Service）型の包括的なデータプラットフォームで、データ管理、変換、分析、機械学習を統合します。その技術基盤には以下の要素が含まれます：

- **OneLake**: Microsoft Fabricの中核となるデータストレージ基盤。
- **レイクハウス**: データレイクとデータウェアハウスの利点を組み合わせた新しいデータ管理アーキテクチャ。
- **データウェアハウス**: 大量のデータを統合して保存し、効率的に分析や意思決定を行うためのリレーショナルデータベースシステム。
- **ETLプロセス**: SparkやDataflows Gen2などを活用。
- **機械学習**: Azure Machine Learningとの統合により、モデル開発やトレーニングを効率化。
- **リアルタイムデータ処理**: Azure Stream Analyticsなどを活用してリアルタイム処理を実現。

# 25.3 オープンソース技術の活用

Microsoft Fabricは、Apache SparkやDelta Lakeなどのオープンソース技術を積極的に採用し、最新技術を取り入れています。このアプローチにより、柔軟性、スケーラビリティ、高性能を実現し、企業のデータ分析基盤を大幅に強化しています。

## 25.3.1 Hadoop

Hadoopは、オープンソースの分散データ処理フレームワークであり、ビッグデータ分析の基盤技術として、データレイクやデータウェアハウスの構築に多く利用されています。

- **分散ストレージ**：HDFS（Hadoop Distributed File System）は、大規模データを複数のノードに分散して保存し、耐障害性を提供します。
- **分散処理**：MapReduceアルゴリズムにより、大量のデータを効率的に処理します。
- **スケーラビリティ**：クラスター内のノードを増やすことで、データ容量や処理能力を簡単に拡張可能。

OneLakeは、Hadoopの分散ストレージモデルに類似した設計概念を持つ分散ストレージモデルを採用しています。データフォーマットは、ParquetやDeltaなど、Hadoopエコシステムで一般的な形式がサポートされています。また、Hadoopを進化させ、ストレージと計算リソースを分離し、同じデータを異なる計算エンジンで処理することできます。

また、Hadoopの欠点であったディスクI/Oの多さを克服するため、インメモリ処理（Spark）を採用しており、SQLベースのクエリだけでなく、機械学習モデルやストリーミングデータ処理でも活用可能となっています。

## 25.3.2 Apache Spark

Apache Sparkは、オープンソースの分散データ処理フレームワークで、ビッグデータ分析の高速化と効率化を目的としています。Apache Software Foundationによって開発され、Hadoopエコシステムを補完する存在として登場しました。Sparkは主に以下の特徴を持ち、データエンジニアリング、データ分析、機械学習、ストリーミングデータ処理など、多岐にわたる用途に利用されています。Fabricに使用されているSparkエンジンは、もともとはオープンソース所リューションに基づいていましたが、現在はDatabricks社によって「最適化された」バージョンに代わっています。

- 分散型データ処理フレームワークで、大規模なデータのバッチ処理とリアルタイム処理をサポート
- Microsoft FabricのLakehouseやFabric内のSparkエンジンで利用されてる
- SparkはScala、Python（PySpark）、Java、R(SparkR)、Spark SQLなどの言語もサポート

**特徴と利点**:
- **高度な並列処理**: データを分散して効率的に処理。
- **幅広いライブラリのサポート**: 機械学習（MLlib）、ストリーム処理（Spark Streaming）、SQL解析（Spark SQL）をサポート。
- **Azureとの統合**: SparkジョブをAzure環境で効率的に実行できる。
- **Hadoop**との統合**: SparkはHadoopのHDFS（Hadoop Distributed File System）と連携可能

## 25.3.3 ParquetとORC

Microsoft Fabricで使われているParquetとORC（Optimized Row Columnar）は、どちらも列指向のデータストレージフォーマットで、大規模なデータ処理や分析を効率化するために設計されています。これらのフォーマットは、Microsoft Fabricのようなモダンなデータプラットフォームでデータ保存や処理の基盤として利用され、特にFabricのOneLakeやLakehouseで重要な役割を果たします。

Parquetは、2013年にClouderaとTwitterが開発し、大規模データ処理の課題に対応するため導入されました。その後、Apacheに採用されたこのファイル形式は、効率的な列単位の読み書きにより、I/Oコストを削減し、高い圧縮率で、特にビッグデータ処理で効率を発揮します。

ORCは、Apache Hiveプロジェクトで開発された列指向データフォーマットで、Hadoopエコシステムでのデータ保存と処理を効率化するために設計されています。Parquetと同様に、データが列単位で保存され、圧縮と最適化が行われます。更に、インデックスとサマリーデータを持つため、 データサイズが大きく、複雑なクエリを高速に処理することができます。

## 25.3.4 Delta Lake

Delta LakeはParquet形式を基にいくつかの重要な拡張が行われ、OneLakeのコア技術として採用されています。

### 特徴

- **ACIDトランザクション**： OneLakeでは、Delta Lakeフォーマットが標準的に利用され、ACIDトランザクションをサポートしています。複数ユーザーやプロセスが同時にデータにアクセスしても、データの整合性が保証されます
- **スキーマの進化と整合性**： データのスキーマ変更を管理し、分析プロセスでのエラーを最小限に抑えます
- **バージョン管理**： データの変更履歴を保存し、過去のバージョンに戻れる機能を提供
- **パフォーマンス最適化**： データのパーティション、キャッシュ、ZORDER（クラスタリング）による高速なクエリを実行
- **リアルタイムデータ処理**: ストリーミングデータをDelta Lakeに保存し、リアルタイム分析に活用できます

## 25.3.5 Kubernetes

Kubernetes（K8s）は、Googleによって開発され、現在はCNCF（Cloud Native Computing Foundation）が管理しているオープンソースのコンテナオーケストレーションツールです。Microsoft FabricにおけるKubernetesの技術は、Fabricの基盤となるデータプラットフォームのスケーラビリティ、高可用性、および効率的なリソース管理を支える重要な要素です。Kubernetesはコンテナオーケストレーションプラットフォームであり、コンテナ化されたアプリケーションをスケジュール、管理、自動化するために広く採用されています。

- **リソースの分離と管理**: リソースを論理的に分離し、異なるワークスペース間のリソース競合を防止し、チームやプロジェクト単位でのリソース割り当てを行います
- **スケーラビリティ**: データ量や分析要求に応じて動的にリソースをスケールアウト/スケールインします
- **高可用性とフェイルオーバー**: KubernetesのReplicaSetとNode Affinityを活用することで、Fabricのサービスは高可用性を保証します
- **セキュリティとマルチテナンシー**: FabricのセキュリティモデルはKubernetesの以下の機能を活用しています
    - Role-Based Access Control (RBAC): 各ユーザーやサービスに対してアクセス権限を設定
    - Network Policy: Pod間の通信を制御し、データの隔離を実現
    - Pod Security Policies (PSPs): 実行されるPodのセキュリティ要件を定義

## 25.3.6 PrometheusとGrafana

Prometheusは、システム監視および時系列データベースを提供するオープンソースツールです。2012年にSoundCloudで開発され、現在はCNCF（Cloud Native Computing Foundation）のプロジェクトとして広く採用されています。

Microsoft Fabricでは、PrometheusとGrafanaがFabricのモニタリングシステムの中核を形成しています。Kubernetes上で動作するコンテナやノードのリソース使用率（CPU、メモリ、ディスク、ネットワーク）を監視し、各ジョブの進行状況、成功率、失敗率をリアルタイムで追跡、分散クエリの処理時間やボトルネックの特定に役立ちます。また、ノードの状態をリアルタイムで可視化、障害の兆候を早期に発見します。

セキュリティにおいては、ユーザーのログイン履歴、不正アクセスの試行などを監視し、監査ログを収集し、異常な動作をダッシュボードで可視化できます。

### 主な特徴

- **統合監視**: Fabricのすべてのコンポーネント（Kubernetes、データ処理ジョブ、ネットワーク）を統合して監視。
- **リアルタイム性**: メトリクスの更新が速く、迅速な問題検出が可能。
- **拡張性**: 新しいデータソースやカスタムメトリクスを追加可能。
- **コスト効率**: オープンソースツールであり、カスタマイズも容易。

## 25.3.7 MLflow

MLflowは、MLflowは、Databricksが開発したオープンソースのツールで、機械学習モデルのトラッキング、管理、デプロイを一貫した方法で行うためのプラットフォームです。2020年以降、Azure Machine Learningは、MLflowをサポートしています。


FabricはAzure Machine LearningとMLflowを統合し、トレーニングからデプロイまでを一貫して管理できます。

MLflowは以下の4つの主要なコンポーネントで構成されています。

- **MLflow Tracking**: 実験の結果やメトリクスを記録し、モデルの比較を可能にする。
- **MLflow Projects**: 再現性を確保するためのコードベースの標準化。
- **MLflow Models**: モデルの保存とフォーマット管理を支援。
- **MLflow Registry**: モデルのバージョン管理やデプロイプロセスを一元化。

Fabricでは、MLflowを利用してトレーニングしたモデルをDataflows Gen2やLakehouseのデータパイプラインに統合し、リアルタイムで予測結果を生成できます。Fabric内でMLflow Registryを使用し、異なるモデルバージョンを本番環境に展開、ABテストや段階的デプロイメントにも対応可能です。また、MLflow Projectsを用いて、トレーニング環境の依存関係やコードを標準化。新しいメンバーがプロジェクトに参加した場合でも、迅速に再現可能な環境を構築できます。

# 25.4 OneLake

OneLakeは、Azure Data Lake Storage Gen2の原則に基づいた独自の統合ストレージをベースにしており、大量のデータを保存できる信頼性の高いストレージサービスです。Fabricのすべてのデータ、データウエアハウス、レイクハウス、KQLデータベースのテーブルは、Delta Lake（Delta Parquet）ファイルの形式で保存されます。フラットファイルや画像など各種のデータも保存できます。

Fabricですべてのデータをオープンで高性能なDelta Lake形式で保存する利点は、同じデータを複数の分析エンジン（T-SQL、Spark、AnalysisServicesなど）で再利用できるようにすることです。OneLakeは元のデータへのアクセス権を自動的に管理します。そのため、データを再利用するためにコピーやレプリケートする必要がなくなり、実行時間の節約になります。

OfficeがWord、Excel、PowerPointのファイルをOneDriveに保存するのと同様に、FabricはLakehouse、データウェアハウス、およびその他のアイテムをOneLakeに保存します。

# 25.5 レイクハウス

レイクハウスには、2種類のオブジェクトが利用できます。

- テーブル：構造化データ用で、OneLakeにDelta Lake形式で保存されています。
- ファイル、非構造化データ（画像、動画）やOneLakeに保存されたテーブルに変換される前の生データなど。

リレーショナルデータベースが得意とするSQLを使った分析機能と、データレイクの柔軟性や大量のデータを簡単に扱える能力をあわせ持っています。構造化されているかどうかに関係なく、どんな種類のデータでもレイクハウスに保存でき、それを使ってさまざまな分析ツールやプログラミング言語で作業ができます。クラウド上にあるため、レイクハウスは必要に応じて自動で容量を増やせるだけでなく、常に利用できる状態を保ち、災害時の復旧も対応できます。

レイクハウスには、テーブルやファイルをコピーせずに参照するショートカットを作成する機能も提供しており、Amazon S3や、Google Cloud Storageなどの外部ストレージに保存されたデータも統合し、アクセスしやすくなります。

LakehouseはSynapseデータサイエンスのエクスペリエンスに統合されており、テーブルやファイルを簡単にナビゲートできるため、データの探索が容易になります。また、レイクハウス内のデータを変換し、構造化およびモデリングする一連の操作を効率的に支援し、T-SQLを使用してレイクハウスのテーブルをクエリしたり、ビューを作成したりすることが可能になります。

データウェアハウスとは異なり、データレイクは厳格な前処理を必要とせず、データの探索と変換に柔軟性を提供します。これにより、先進的な分析、機械学習、または人工知能に最適な候補となります。

# 25.6 データ ウェアハウス

データウェアハウスは、MPP（Massively Parallel Processing）型のリレーショナルデータベースです。その主な目的は、分析およびレポート生成に最適化された環境を提供することです。

データウェアハウスは、大量のデータを扱うために設計されており、企業向けのデータ分析に必要なT-SQL（Transact-SQL）の全機能をサポートしています。また、フルマネージドであり、必要に応じて規模を拡張できる高い信頼性を備えています。さらに、OneLakeやレイクハウスと連携して動作し、データを簡単に分析するための便利な環境を提供します。

データウェアハウスは、複数のテーブルに対するデータの挿入、更新、削除時にデータの一貫性を保証します。一方で、レイクハウスではこのような一貫性の保証は提供されていません。

ユーザーは、Fabricの画面やSQLコマンドを使用してテーブルを作成したり、データを読み込んだり、整形したり、分析したりすることが可能です。さらに、SQLを用いてデータを調査するだけでなく、Spark（別のデータ処理ツール）を使用してデータを加工したり、機械学習モデルを作成したりすることもできます。

Lakehouseに欠けているもう一つの概念、つまりSQL言語で構築および維持されるロールを通じて細かいセキュリティを管理する機能もデータウェアハウスに存在します。

データエンジニアとデータアナリストが共同で作業するためのサポート機能を備えており、同じ環境内で協力して作業できるため、効率的に業務を進めることができます。

# 25.7 KQL(Kusto Query Language)

レイクハウスおよびデータウェアハウスが主なデータ分析ニーズに対応できる一方で、構造化および半構造化された時系列データのリアルタイム分析ニーズには不十分な場合があります。

KQLは、リアルタイムデータストリームの分析に適しており、IoTデータ、ユーザー行動の分析、アプリケーションのパフォーマンス監視などに最適です。KQLデータベースは、Kusto言語を通じてクエリが可能であり、データの問い合わせのみを許可するSQLの代替です。

# 25.8 データフロー Gen2

データフロー Gen2は、従来データエンジニアが多くの時間を費やしていたデータの抽出、変換、読み込み（ETL）プロセスを効率化するために設計されたツールです。Power BIから派生したPower Queryエンジンに基づいています。Power Query Onlineを利用して異なるソースからデータを収集し、変換し、Microsoft Fabric専用のストレージベースにデータを保存することも可能です。

データパイプラインを使用する場合、データフロー Gen2をオーケストレーションに組み込み、他のタスクと組み合わせて利用できます。また、データを一度レイクハウスに読み込み、その後にデータフロー Gen2で整形するELTプロセスとしても活用可能です。

データフローは再利用可能なETLロジックを提供し、手動実行やスケジュール設定、またはパイプラインの一部として運用することができ、データアナリストが分析やレポート作成に活用できる柔軟な環境を提供します。

## 25.8.1 Dataflows Gen2とは何か

Dataflows Gen2は、Microsoft Fabricにおける**次世代データ処理ツール**であり、データの統合、変換、および保存を効率的に行うことができる仕組みです。従来のDataflows Gen1と比較して、機能面や柔軟性の大幅な向上が特徴です。

## 25.8.2 主な特長

1. **Power Query Onlineとの統合**  
   Dataflows Gen2は、Power Query Onlineを活用してデータの取得、加工、結合を視覚的に行うことができます。これにより、プログラミング経験が少ないユーザーでも直感的にデータ変換が可能です。

2. **保存先の柔軟性**  
   Dataflows Gen1では、生成したデータはPower BIデータセット内での利用が主な目的でした。しかし、Dataflows Gen2では、レイクハウス、データウエアハウス、Azure SQL Database、Data Explorer Kustoといった様々な保存先にデータを直接ロードすることが可能になりました。

3. **オーケストレーションの強化**
    Dataflows Gen2をパイプラインに統合することで、完全自動化されたデータ処理を実現できます。また、データのクリーニング、変換、保存を一貫して管理できます。

# 25.9 データパイプライン

データパイプラインは、Azure Data Factoryから派生しており、グラフィカルインターフェースを使ってデータを収集、変換、保存し、最終的な目的地（データウェアハウスやデータレイクなど）で利用可能な形式に整えることができます。

データパイプラインの基本的な機能は、データをコピーすることです。パイプラインは100以上のネイティブコネクタを提供しており、クラウドデータベース、分析プラットフォーム、業務アプリケーション、オンプレミスのデータソースなどに簡単に接続できます。

データパイプラインの実行は、手動で起動することも、スケジュールに従って起動することもできます。データパイプライン自体は簡単なETL機能しかありませんが、データフローを組み入れてより高度な処理が可能です。

# 25.10 ノートブック

レイクハウスにあるデータにクエリを実行する作業は、主にノートブック（PySpark）を使って行われます。データエンジニアやデータサイエンティストは、ノートブックやPython言語を使用してデータの探索・分析を行う方が自然かもしれません。また、機械学習のために使用される強力なツールです。

Microsoft Fabricのノートブックは、Jupyter Notebookに似た形式で、インタラクティブな環境でデータ探索や可視化を一括して行えるため、生産性が向上します。リアルタイムで共有が可能で、バージョン管理により変更内容の追跡や巻き戻しも簡単です。また、Azureのツールと統合することで柔軟なデータ処理が可能となり、コード、可視化、ドキュメントを統一して扱うことで分析の一貫性も向上します。

- **データの探索**: 様々なデータソースにアクセスし、クエリや分析を実施。
- **データの変換と準備**: データのクリーニング、変換、結合。
- **機械学習**: モデルのトレーニング、評価、デプロイ。
- **データの可視化**: 分析結果をグラフや表で表現。
- **リアルタイムコラボレーション**: チームで共同作業を行い、結果を共有。

ノートブックは、データのクリーニングや準備を支援するData Wrangler機能を提供しています。Data Wranglerを使うと、コードを書かずに数クリックでデータの統計やPandasやSparkのDataFrameの生成が行えます。

Fabricノートブックでは、以下のプログラミング言語をサポートしています。

- **Python**: データサイエンスや機械学習ライブラリ（Pandas、NumPy、Scikit-learnなど）を利用可能。
- **R**: 統計分析やデータ可視化で広く使われる。
- **SQL**: データクエリや分析。
- **Spark**: 大規模データ処理や分散計算に対応。

ノートブックを使用したデータの取り込みは、一見適切ではないように見えますが、実際にはいくつかの場面では有効に働きます。

- 非典型的なフォーマット（地理空間データ、AS400データなど）からの取り込み
- PythonライブラリやSemantic Linkを使用してのデータ取り込み
- プログラミング言語を使用が必要となるデータの取り込み

データの取り込みには、パイプラインやGen2データフローを使用してAPIを使用することもできます。しかし、Power BI APIに必要なOAuth2認証は、安全に実装するのが複雑です。さらに、100のワークスペースに対してバッチで呼び出しを行う必要があるAPIもあり、プログラミング言語へのアクセスがなければ実現できないケースもあります。そのため、このような作業にはNotebookを使用することを選択します。

ノートブックは、HTMLファイルとしてダウンロードして、ブラウザから直接開くことができるほか、Pythonファイル（.py）、LaTeXファイル（.tex）、Jupyter Notebookファイル（.jpynb）としてもダウンロードできます。

# 25.11 Data Activator

Data Activatorは、Microsoft Fabric内で提供されるリアルタイムイベント処理ツールで、リアルタイムデータストリームを監視し、事前定義された条件に一致するとアクションを起動します。このツールは以下のような場面で使われ、データ監視と反応のプロセスを効率化し、ビジネスの俊敏性を向上させます。

1. 異常検出と通知
    - 製造現場でセンサーが異常値を検出した場合に即時通知。
    - ITシステムの監視でエラー発生時にアラートを送信。

1. 業務プロセスの自動化
    - 在庫が減少した場合に自動で補充プロセスを開始。
    - 顧客の購入履歴に基づき、次回のプロモーションを自動生成。

1. リアルタイムの意思決定支援
    - 売上データが目標値を達成した場合に即座にマーケティングキャンペーンを実施。
    - ストリーミングデータを基に、交通管理システムの信号を調整。

1. エンドユーザーへのパーソナライズ
    - ユーザーのアクション（例: Webサイト訪問）に基づき、リアルタイムで提案や通知を送信。

1. セキュリティ対応
    - システムやネットワークで異常なアクティビティを検出した際に即座に防御策を実行。

# 25.12 Power BI

Power BIは、データ分析に特化した包括的で統合されたプラットフォームです。過去10年間、Windows上で動作するPower BI Desktopと、WebポータルのPower BI Serviceからなるツールセットとして提供されていました。

Power BI Desktopでは、ユーザーのマシンの能力を使用し、DAX StudioやTabular Editorなどの外部ツールが使用できます。そして、ライセンスなしで使用できます。

しかし、Fabricでは、組織内での公開、共有、コラボレーション、レポート作成の工業化などの連携が行えます。Power BI Desktopに限定されていた機能を、インターネットブラウザ内で完全な形で実現できるよう、徐々に統合を行っています。