はじめに
Microsoft Fabric Semantic link で Power BI 利用状況レポートのデータを定期保存する - 生データ - の続きです。
生データを取得することが出来た一方、レポートに表示されているデータを取得する程度のほうが使いやすいというニーズもあるかもしれないので、DAXの結果を取得する方法を記載します。
準備 - 対象 DAX 調査
利用状況レポートはそのままではダウンロードできないので git 統合を利用して Power BI Desktop で開けるファイル形式にしてしまいます。
手順
Evaluate DAXを使用していきます。
workspace の引数があるので、別のワークスペースのセマンティックモデルに接続も可能です。
※xmlaエンドポイントが有効である必要があるので PPU or Fabric のワークスペースが対象となります。
-
Report open requests の場合は以下のようになりました。
pyspark# Report open requests dax= """ // DAX Query DEFINE VAR __DS0FilterTable = TREATAS({FALSE, BLANK()}, 'Workspace reports'[IsUsageMetricsReportWS]) VAR __DS0FilterTable2 = TREATAS({FALSE, BLANK()}, 'Reports'[IsUsageMetricsReport]) VAR __DS0FilterTable3 = FILTER( KEEPFILTERS(VALUES('Reports'[ReportGuid])), 'Reports'[ReportGuid] = "7f5701b1-8771-453b-8602-587b5933ed15" ) VAR __DS0Core = SUMMARIZECOLUMNS( 'Dates'[Date], __DS0FilterTable, __DS0FilterTable2, __DS0FilterTable3, "Weekly_Views", 'Model measures'[Weekly Views], "Report_views", 'Model measures'[Report views] ) VAR __DS0PrimaryShowAll = ADDMISSINGITEMS( 'Dates'[Date], __DS0Core, 'Dates'[Date], __DS0FilterTable, __DS0FilterTable2, __DS0FilterTable3 ) VAR __DS0BodyLimited = SAMPLE(3502, __DS0PrimaryShowAll, 'Dates'[Date], 1) EVALUATE __DS0BodyLimited ORDER BY 'Dates'[Date] """ df_report_open_requests = fabric.evaluate_dax( "Usage Metrics Report", dax, workspace='<対象のワークスペースID>' ) display(df_report_open_requests)
-
取得できたデータを保存します。(パーティション上書きが便利なのでspark で処理していますが、evaluate_daxはpandas データフレームで返答するのでpythonで保存してもいいと思います
pysparksdf_report_open_requests = spark.createDataFrame(df_report_open_requests) # 動的パーティション上書きを設定して、読みこんだデータフレームに存在するパーティションのみ差し替え spark.conf.set('spark.sql.sources.partitionOverwriteMode','dynamic') # 列名を補正 sdf_report_open_requests = sdf_report_open_requests\ .withColumnRenamed("Dates[Date]","Date")\ .withColumnRenamed("[Weekly_Views]","Weekly_Views")\ .withColumnRenamed("[Report_views]","Report_views") sdf_report_open_requests.write.partitionBy("Date").mode("overwrite").saveAsTable("report_open_requests")
以上のように、利用状況レポートの DAX を確認して、semantic link を使用することでビジュアルデータのレイクハウスへの保存が可能です。