建立一個與語意模型連結的應用程式

使用資料應用程式範本搭配 Fabric 語意模型連接器,建立分析型 Fabric 應用程式。 該範本提供視覺化、格式化、資料網格及瀏覽器驗證模式。 此連接器可透過 Fabric Apps 用戶端,以具型別的委派存取方式存取語意模型。

開箱即用該範本製作的應用程式包括:

  • Fabric 認證。
  • 高品質 DAX(資料分析表達式)生成指引。
  • 為分析應用設計的企業級視覺化元件。
  • 資料網格、主題、格式與瀏覽器驗證模式。

備註

目前,Rayfin CLI 是使用資料應用範本建立應用程式的支援方式。

為什麼要使用資料應用程式範本?

若沒有這些內建功能,編碼代理必須在每個工作階段從零開始解決認證、DAX 產生與視覺化設計。 這可能導致:

  • 更多失敗和畫面破碎或空洞。
  • 圖表行為不一致。
  • 開發與執行時出現不必要的 DAX 查詢。

該範本提供可重複使用的模式,提升可靠性,產生更連貫且符合報告最佳實務的視覺化,並降低查詢負擔。 該連接器標準化語意模型配置與執行時存取。

先決條件

  • Node.js 20 或更新版本。
  • Fabric 存取權限。
  • 一個 Fabric 工作區,你擁有貢獻者、成員或管理員權限。
  • 你的租戶已啟用 Fabric Apps 工作負載。 請參閱「建立你的第一個 Fabric 應用程式」。
  • 「語意模型執行查詢 REST API」租用戶設定已啟用。
  • 在託管於 Fabric 或 Power BI 容量的語意模型上建立與讀取權限。
  • 語意模型的工作區 ID 與項目 ID。

建立應用程式

從資料應用程式範本建立專案:

npm create @microsoft/rayfin@latest -- "<app-name>" --template dataapp --workspace <workspace-name>

請將 <workspace-name> 和 <app-name> 替換為你的應用程式和 Fabric 工作區的名稱。 接著開啟新的專案資料夾:

cd <app-name>

新增語意模型連接器

如果你不知道語意模型項目 ID,請在工作區中列出語意模型:

npx rayfin connector search --workspace-id <workspace-id> --type fabric-semanticmodel --json

加入語意模型作為連接埠:

npx rayfin connector add --type fabric-semanticmodel --workspace-id <workspace-id> --item-id <semantic-model-item-id> --name salesModel --operations executeQuery

命令:

  • 將 salesModel 連接器加入至 rayfin/rayfin.yml。
  • 在 rayfin/connectors/salesModel/ 下建立其結構描述。
  • 會為連接器套件印出版本匹配 npm install 的指令。

執行 CLI 顯示的完全相同安裝指令。

生成的配置類似以下範例:

connectors:
  - name: salesModel
    type: fabric-semanticmodel
    config:
      workspaceId: "<workspace-id>"
      itemId: "<semantic-model-item-id>"
    auth:
      type: delegated
    version: "1"
    operations:
      - name: executeQuery

保留產生的 version 價值。

將範本連接到語意模型

範本包含分析元件和代理指引,你可以用連接器重複使用。 設定其資料存取層以建立 ConnectorsRayfinClient 並註冊語意模型執行階段:

Important

使用 connector 用戶端來查詢語意模型。 若鷹架包含另一個語意模型用戶端,則取代對該客戶端的呼叫,而非維持兩條資料存取路徑。

import { ConnectorsRayfinClient } from '@microsoft/rayfin-client';
import { fabricSemanticModel } from '@microsoft/rayfin-connector-fabric-semanticmodel';
import {
  connectorConfig,
  type SalesModelSchema,
} from '../../rayfin/connectors/salesModel/schema.js';

type AppConnectorsSchema = {
  salesModel: SalesModelSchema;
};

export const client = new ConnectorsRayfinClient<
  Record<string, never>,
  Record<string, never>,
  AppConnectorsSchema
>(
  {
    baseUrl: '<app-api-url>',
    publishableKey: '<publishable-key>',
    authStorage: true,
    connectors: {
      salesModel: connectorConfig,
    },
  },
  {
    salesModel: fabricSemanticModel(),
  }
);

請使用 Fabric Apps 專案中的 API URL 和可發佈金鑰。 保持模板現有的 Fabric 登入流程。

透過連接器提交 DAX:

const result = await client.connectors.salesModel.executeQuery({
  query: 'EVALUATE TOPN(10, Sales)',
});

if (result.status === 'success') {
  console.log(result.table.columns, result.table.rows);
} else {
  console.error(result.error.category, result.error.message);
}

在你的語意模型中用表格取代 Sales 。 在將欄位和列傳送到視覺化前,請先檢查回傳狀態。

欲了解更多連接器設定與安全指引,請參閱「Connect Fabric Apps to Fabric data」。

用程式代理來建立應用程式

此框架包含供程式碼代理使用的指示與技能。 在你偏好的代理中開啟專案,描述受眾、問題、互動以及應用程式的視覺化。

例如,您可以:

  • 在 Visual Studio Code 中開啟專案,然後開啟 GitHub 的 Copilot Chat 窗格。
  • 在專案中開啟終端機,然後執行 copilot。

截圖顯示 Visual Studio Code 中 GitHub Copilot Chat 介面。

請以此提示作為起點:

Build an analytical Fabric app that uses the existing salesModel connector.

Before editing:
1. Read the repository instructions and skills.
2. Inspect rayfin/connectors/salesModel/schema.ts and the template's data-access,
   visualization, data grid, formatting, and validation patterns.
3. Query the semantic model metadata before writing DAX. Don't guess table,
   measure, or column names.

Requirements:
- Use ConnectorsRayfinClient and fabricSemanticModel() for semantic model access.
- Call client.connectors.salesModel.executeQuery() for DAX queries.
- Keep the existing Fabric sign-in flow. Don't add credentials, access tokens,
  another authentication flow, or direct calls to the Execute Queries REST API.
- Reuse query results where practical, and bound large result sets.
- Apply semantic model format strings consistently to cards, charts, tooltips,
  and data grids.
- Include loading, empty, and error states.
- Use the template's browser-validation workflow at desktop and mobile sizes.

Give me a short implementation plan, make the changes, run the existing build,
and report the results.

使用範本功能

資料應用程式範本包含可重複使用的分析應用模式。

Fabric Apps 是標準的網頁應用程式,所以你可以實作這些模式之外的功能。 模板中未包含的功能可能需要更多客製化工程與驗證。

視覺效果

此範本包含交叉醒目提示及預先設定的基元如下:

  • 條狀圖,包括垂直、水平、分組及堆疊配置。
  • 折線圖,附有可選的標記。
  • 區域圖。
  • 散點圖。
  • 派和甜甜圈圖表。
  • 熱力圖。
  • 氣泡圖。
  • 瀑布圖。
  • 用於 KPI 重點提示的單值卡片。
  • 分層與複合視覺化,如帶資料標籤的條狀圖和雙軸折線圖。

使用連通語意模型中存在的欄位與度量。 不要用模擬資料替換失敗的連接器查詢。

你可以請你的程式代理產生其他視覺化。 沒有範本的視覺化原件可能需要更多迭代和驗證。

資料網格功能

範本包含具備以下預設功能的資料網格:

  • 欄位標頭源自語意模型元資料。
  • 透過格式字串將數字與日期格式套用至各欄。
  • 排序中。
  • 可捲動的列,並支援溢出處理。
  • 光明與暗色主題支援。
  • 適用於以下項目的自訂儲存格渲染器:
    • 數字欄位。
    • 布林指標。
    • 可點擊的網址。
    • 帶有燈箱疊加效果的影像單元。
    • 多欄位的儲存格,例如在同一欄中顯示名稱和角色。

你可以加入其他資料網格功能,但可能需要更多客製化工程。

主題設計

為你的程式設計代理設定品牌或樣式需求,例如配色方案、邊角樣式或字體。 該範本將共用樣式集中在同一個中央位置,因此對樣式所做的變更都會套用到卡片、按鈕、圖表、資料格線和工具提示。

集中式樣式避免顏色不匹配、字體不一致及各元件獨立樣式時可能產生的版面差異。

格式化字串

每個結果欄的格式只需定義一次。 該範本可在圖表軸、工具提示、資料標籤、卡片及資料格格間重用語意模型格式字串。

例如,單一格式定義會讓 1500.5 一律顯示為 $1,500.50,並讓 0.25 一律顯示為 25%,無論這些值出現在哪裡。

瀏覽器驗證

在發佈應用程式前,請使用附帶的 Playwright 瀏覽器驗證流程,在真實瀏覽器中開啟並檢查:

  • 畫面顯示正常。
  • 圖表不會被截斷或壓縮。
  • 文字是可讀的。
  • 資料網格負責處理溢位。
  • 載入、空和錯誤狀態都是可用的。
  • 篩選、交叉高亮和資料格式都如預期般運作。
  • 瀏覽器主控台沒有出現任何意外錯誤。

此工作流程能在使用者發現前發現版面與渲染問題。 瀏覽器驗證會確認前端行為。 請與同時使用 Fabric 應用程式與語意模型的使用者單獨測試已部署的連接器。

部署並驗證應用程式

部署應用程式與連接器配置:

npx rayfin up

從 Fabric 入口開啟已部署的應用程式。 登入後執行每次使用者互動,並與語意模型比較重要結果。

如果查詢失敗:

  • 在 rayfin.yml 中確認工作區和語意模型項目的識別碼。
  • 確認「語義模型執行查詢」REST API 租戶設定是否啟用。
  • 確認使用者對語意模型擁有建置與讀取權限。
  • 確認 DAX 是否參考現有的資料表、欄位和度量。
  • 檢查接頭結果的錯誤類別和訊息。
  • 請檢查瀏覽器主控台是否有客戶端錯誤。