Azure Synapse AnalyticsのSynapse Link for Dataverseの挙動を確認してみた
はじめに
Microsoft Buildの
Harness the power of data in your applications with Azure
にてアナウンスされたSynapse Link for Dataverseを試した手順を記載します。
※2021/07時点の情報です
Azure Synapse Link for Dataverse とは
Microsoft Dataverse からデータレイクにエクスポートする機能は以前から存在しており、Common Data Modelのフォーマットを利用することで、Azure上で更に高度な分析ワークロードにシームレスにつなぐことが示唆されていました。
https://docs.microsoft.com/en-us/common-data-model/data-lake
Synapse Link for Dataverseでは、出力されたCDM形式のデータがネイティブにSynapse Analyticsとつながることで、より簡単に分析を進めることができるようになります。
https://docs.microsoft.com/ja-jp/powerapps/maker/data-platform/export-to-data-lake
参考リンク
Azure Synapse Link for Dataverse とは
Accelerate time to insight with Azure Synapse Link for Dataverse
自分の Azure Synapse ワークスペースを使用して Azure Synapse Link for Dataverse を構成する (プレビュー)
Power Platform で広がるデータ インテグレーションの世界 (1/2)
こちらで、Dataverseとデータレイクの統合と、Azureへの再利用が紹介されています。
確認手順
事前準備
Power Appsの環境作成
Power Apps管理ポータルにて環境を作成します。筆者は日本で作成しました。
※ライセンスがない場合は種類を評価版に変更しましょう
「データベース作成」は「はい」を選んでおきます
「サンプルアプリおよびデータの展開」を「はい」にするとたくさんデータがクエリできます
Azure Synapse Analytics の作成
Azure Portalから作成しますが、Power Apps環境が既定では西日本でであることがあるので、西日本の環境を使用する際は、西日本にデプロイするように注意しましょう
筆者は東日本で作成しました。
手順は以下を参照ください。
権限の確認
以下の権限が必要になります。
- 対象リソースグループの所有者
※もし難しい場合は、閲覧者とストレージのBlobデータ共同作成者をもらってください。
- Synapse管理者※リソース作成者に自動的に割り当てられます
Synapse Link for Dataverseを構成する
作成したPower Apps環境内で、「Azure Synapse Link」-> 「データレイクへの新しいリンク」を選択していきます。
Synapse Linkのチェックボックスをチェックし、作成したSynapse Workspaceを選んでいきます。
ここで、権限が足りないorリージョンが異なると表示されなかったり、エラーが出ます。
対象テーブルを選択します。とりあえず全て選びました。
しばらく待つとリンクが完了します(数分)
Synapse Studioへ遷移するボタンが表示されます
Synapse Studio からテーブルの確認
Synapse Studioを使って確認していきます。
はじめにデータレイク
DataVerseではじまるファイルシステムが作成され、先ほどインポート対象にしたエンティティ群がインポートされています。
次に、テーブルを確認します。
DataverseでインポートされたエンティティはSparkテーブルとして登録されます。スキーマ情報もきちんと連携できているように見えます。Azure Machine Learningによる自動機械学習もできそうです。
Spark テーブルはServerless SQL Poolからもアクセスが可能なので、右クリックで内容を確認してみます。
spark Dataframeとしての読み込み右クリックから呼び出してこのような形になります。
spark table として登録されているのでDESCRIBEの結果を見てみます。
locationなんかは想定通りにとれていましたが、それ以外の情報はほぼありませんでした。
蛇足:自前で構成できないか試した
Spark Poolには組み込みのCDMコネクタがインストールされています。(詳細は記事先頭の参考リンクをご覧ください)
これを利用してSynapse Linkがやったことを追ってみます。あわよくば他のCDM形式で連携される製品(Power BI Dataflowなど)をSynapse Link for Dataverseと同じような使い勝手にできるはずです
はじめにCDMコネクタを利用して、CDM形式で保存された各エンティティをdf.readしてみます。
readDf = (spark.read.format("com.microsoft.cdm")
.option("storage", "<storage account名>.dfs.core.windows.net")
.option("manifestPath","dataverse-dvtest-unq4ecc478bf88244cf8eab341a8a032/model.json")
.option("entity", "connectionroleassociation")
.load())
display(readDF)
これをSparkテーブルとして登録するためには、saveAsTableを実行する必要がありますが、試しにcdm形式でsaveAsTableしてみたらエラーとなりました。
(readDf.write.format("com.microsoft.cdm")
.option("storage", "<storage account名>.dfs.core.windows.net")
.option("manifestPath", "dataverse-dvtest-unq4ecc478bf88244cf8eab341a8a032/model2.json")
.option("entity", "TestEntity")
.option("format", "parquet")
.option("compression", "gzip")
.saveAsTable("TestEntity"))
また、Synapse Link for Dataverseで作成されたテーブルは、うまくmodel.json/manifest.jsonのファイルを使って、外部テーブル化されています。(synapse/warehouseフォルダにデータをもたない)
マネージドテーブルについて参考
AzureSynapseAnalyticsのメタデータ共有についてわかったこと
外部テーブルを作る方法として、saveAsTableでパスを指定する以外に、SQLで外部テーブルを作成する方法もありますが、cdm形式での指定の仕方は不明でした。
CREATE TABLE <テーブル名>
USING <Format>
LOCATION <abfssパス>
Synapse Link for Dataverseを連携したとき、Spark テーブルとして登録されているにもかかわらず、Spark sessionが起動した形跡はありませんでした。
Synapse Link for Dataverseでは、データレイクにエクスポート後は独自の方法でメタストアに直接テーブルの登録を行っているようです。
以上となりますが、上記蛇足もふくめて記事が役に立てば幸いです。
(もし、CDMコネクタを使って外部テーブルを作成する方法がわかる方がいたらぜひご指摘ください。。)
Author And Source
この問題について(Azure Synapse AnalyticsのSynapse Link for Dataverseの挙動を確認してみた), 我々は、より多くの情報をここで見つけました https://qiita.com/ryoma-nagata/items/881c0e72cbc344d0816f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .