ニュース&ブログ
【Microsoft Fabric】Lakehouseへデータを取り込んでみた
投稿日:2023/11/15
本記事の概要
Microsoft Fabric(以下 Fabric)はデータ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンスまでのすべてをカバーする企業向けのオールインワン分析ソリューションです。
具体的にどのようなサービスなのかは、Microsoftの公式サイトや、こちらの記事をご参照ください。
Fabricをデータ分析基盤として利活用するために、まずは様々なデータソースからデータを集めてくる必要があります。
本記事ではFabricを使って、どのようにデータを取り込むことができるかを検証してみます。
検証内容と構成図
今回検証する内容と主要なサービス群を記載した構成図は以下の通りです。①Lakehouseの作成
②Azure BlobのデータをLakehouseのテーブルとして取り込む
③AWS S3のデータをLakehouseのテーブルとして取り込む

細かい設定までは構成図に記載しておりませんが、イメージは掴んで頂けましたでしょうか。
それでは実際に検証を進めていきましょう。
Lakehouseの作成
こちらからFabricの画面へ遷移することができます。

※11/1現在は試用版が使用できております。
タイミングによっては試用版が終了している可能性があるかもしれません。
画面左下の[Microsoft Fabric]を押下すると、Fabricで使用できるサービス群が表示されます。
[Data Engineering]を選択し、新しいLakehouseを作成していきます。

Data Engineeringでは、パイプラインを使ったデータの収集や、Lakehouseでのデータ保存を行うことができます。
Lakehouseは構造化データ、半構造化データ、非構造化データを格納することができるため、テーブルのようにデータを保存したり、ファイルとして保存することもできるのが特徴です。
今回作成するLakehouseの名前は [test_lakehouse] とします。

Lakehouseが作成されると以下の画面に遷移します。

Azure BlobのデータをLakehouseのテーブルとして取り込む
既に作成済みのAzure Blobである[fabstorage2023]内に[fabstorage]というコンテナーを作成しました。
コンテナー内にtest.txtというファイルをアップロードします。

ちなみに、ファイルの中身はこんな感じです。

それでは、先程作成したLakehouseの画面に表示されている[新しいデータパイプライン]を押下します。
New pipelineは[Get_AzureBlob]とします。

次の画面ではデータソースを選択することができます。
今回は[Azure BLOB ストレージ]を選択し、次に進みます。

Azure Blobへの接続情報を入力します。
| 設定 | 値 |
| アカウント名またはURL | fabstorage2023 |
| 接続 | 新しい接続 |
| 接続名 | デフォルトで「アカウント名またはURL」の内容が入力されます |
| 認証の種類 | SAS |

SASの情報が必要になるので、Azure Blobの画面に移動しましょう。
[ストレージアカウント] > [Shared Access Signature]からボックスにチェックを入れ、次に進みます。

SASトークンが出力されるのでコピーします。

Fabricの画面に戻り、SASトークンを入力します。
入力情報が正しければ、Azure Blob内のファイルを確認することができます。

次にデータの変換先として、作成済みのLakehouseを指定します。

ファイルとして取り込んでもいいのですが、今回はテーブル形式で取り込んでみます。
取り込み先のテーブル名や、カラムのデータ型も指定することができます。

最後にサマリーが表示されます。
準備ができたので、実際にデータを取り込んでみましょう。

[保存と実行]を押下すると、パイプラインの画面に遷移し、進捗状況を確認することができます。

無事に終了すれば取り込めていれば、[アクティビティの状態]が成功となるはずです。

Lakehouseを確認してみると、Tablesに新しいテーブルができており、データもtest.txtのものと一致しています。

AWS S3のデータをLakehouseのテーブルとして取り込む
今回は[パブリックアクセスをすべてブロック]がオンの状態で作成しているものを使用します。

Fabricに取り込むtest1.csvファイルを[sts-fabtest]の[test]というディレクトリ内に格納しておきます。

FabricからAWS S3にアクセスするためには、ポリシーとIAMユーザーが必要になります。
まず初めにAWS S3への接続に必要なポリシーを作成します。

ポリシーにアタッチする実行アクションは以下の通りです。

今回はS3を全て確認できるようにしますが、適宜スコープを絞る設定を加えてください。

ポリシー名は[Fabric-Policy]とします。

次にIAMユーザーの作成です。
ユーザー名は[Fabric-User]とします。

先程作成したポリシーをアタッチします。

これでIAMユーザーの作成は完了です。

準備は整いましたので、実際にAWS S3をデータソースとしてFabricに取り込んでみましょう。
Lakehouse画面の[データを取得]から[新しいデータパイプライン]を押下します。

New Pipeline名は[AWS_S3]とします。

データソースでは[Amazon S3]を選択します。

次に接続情報を入力します。

気を付けなければいけないのが、ユーザー名とパスワードはIAMユーザーのアクセスキーとシークレットアクセスキーを入力しなければいけないことです。
| 設定 | 値 |
| URL | https://s3.amazonaws.com |
| 接続 | 新しい接続 |
| 接続名 | デフォルトで「アカウント名またはURL」の内容が入力されます |
| 認証の種類 | 基本 |
| ユーザー名 | IAMユーザーのアクセスキー |
| パスワード | IAMユーザーのシークレットアクセスキー |
それでは、IAMユーザーの画面から、アクセスキーとシークレットキーを取得しましょう。
先程作成したIAMユーザーの[セキュリティ認証情報]の[アクセスキーを作成]を押下します。

アクセスキーを作成する目的や理由を選択します。
今回はその他としています。

説明タグに目的や理由を入力してアクセスキーを作成します。

ここでアクセスキーとシークレットアクセスキーが表示されます。
アクセスキーはいつでも確認できますが、シークレットキーは確認することができませんので必ず控えましょう。

この情報をユーザー名とパスワードに入力すると次の画面に遷移するはずです。
遷移できなかった場合は権限が足りないことが考えられるので、ポリシーを確認しましょう。

次にデータ変換先としてLakehouseを選択します。

S3のtest1.csvファイルのデータをLakehouse内の新しいテーブル[AWSS3_Table]として取り込みます。

サマリーを確認し、[保存と実行]を押下し、パイプラインが終了するのを待ちます。

1分程待つと、無事に取り込めたことが確認できました。

検証結果
今回はAzure BlobとAWS S3などのオブジェクトストレージからデータを取得し、Lakehouseのテーブルとして取り込む手順をご紹介しました。
必要な情報が揃っていればGUIベースで簡単に、誰でもデータを取り込むことができそうです。
しかし、なんでもかんでもFabricに格納すると容量が逼迫することも考えられますね。
次回の記事ではそんな悩みを解決してくれるショートカット機能についての検証結果をご紹介します。
中川 智文(2022年入社)
株式会社システムサポート フューチャーイノベーション事業本部 ソリューションサービス事業部所属
Oracle Database, SQL Serverを中心とした案件に従事

