Kapcsold össze a Fabric alkalmazásokat a Fabric adatokhoz

A csatlakozók gépelt hozzáférést biztosítanak egy Fabric alkalmazásból más Fabric elemek adataihoz. Használj egy csatlakozót egy tóház, raktár, SQL adatbázis lekérdezésére Fabric-ben vagy szemantikai modell lekérdezésére anélkül, hogy külön adatszolgáltatást konfigurálnál.

Támogatott összekötők

Válassz egy csatlakozót az alkalmazásod által szükséges Fabric elem és működés alapján:

Szövet elem Összekötő típusa Támogatott műveletek
Lakehouse SQL-elemzési végpont fabric-sqlanalytics read
warehouse fabric-warehouse read, create, updateés delete
SQL-adatbázis a Fabricben fabric-sqldatabase read, create, updateés delete
Szemantikai modell fabric-semanticmodel executeQuery

Raktári és SQL adatbázisokhoz Fabric csatlakozókban csak azokat a műveleteket konfiguráld, amikre az alkalmazásod szüksége van. A tóház csatlakozója csak olvasható.

Prerequisites

  • A npm create @microsoft/rayfin@latest létrehozott vagy a npx rayfin init inicializált Fabric Apps-projekt.
  • Egy Fabric munkaterület, amely tartalmazza azt a tárgyat, amelyhez csatlakozni szeretnél.
  • Engedély a munkaterülethez és a forrás elemhez való hozzáféréshez.
  • A munkaterület azonosítója és az item ID, amelyeket a Fabric URL-ben vagy a connector keresés parancs segítségével találhatsz meg.

Keress egy Fabric tárgyat

Használd connector search egy adott típusú elemek felsorolására egy munkaterületen. Az alábbi példa raktárakat sorol:

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

Cserélje le <workspace-id> a Fabric-munkaterület azonosítóját. Ha másik támogatott elemre keressz, változtasd meg az --type értéket. Névszűrőt is hozzáadhatsz:

npx rayfin connector search "sales" --workspace-id <workspace-id> --type fabric-warehouse --json

Másold le az azonosítót a keresési eredményből.

Csatlakoztató hozzáadása

Futtasd a(z) connector add parancsot a Fabric Apps projekt gyökérkönyvtárából. A következő példa hozzáad egy csak olvasható raktárcsatlakozót, amelynek neve inventory:

npx rayfin connector add --type fabric-warehouse --workspace-id <workspace-id> --item-id <warehouse-item-id> --name inventory --operations read

Használd a megfelelő csatlakozótípust és működést más Fabric elemekhez:

# Lakehouse SQL analytics endpoint
npx rayfin connector add --type fabric-sqlanalytics --workspace-id <workspace-id> --item-id <lakehouse-item-id> --name analytics --operations read

# SQL database in Fabric
npx rayfin connector add --type fabric-sqldatabase --workspace-id <workspace-id> --item-id <sql-database-item-id> --name operational --operations read

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

A parancs:

  • Hozzáadja a csatlakozót a legfelső szintű connectors szakaszhoz a(z) rayfin/rayfin.yml elemben.
  • Létrehozza a csatlakozó fájlokat az rayfin/connectors/<connector-name>/alatt.
  • A szükséges csatlakozó csomagokhoz verzióhoz igazított npm install parancsot nyomtat.

Futtassa pontosan a CLI által kiírt telepítési parancsot. Ez a csatlakozó csomagokat a Rayfin CLI verzióval igazítja.

Megjegyzés:

A séma felfedezése a legjobb próbálkozás. A csatlakozó akkor is hozzáadható, ha a felderítés nem fejeződik be. Ha a parancsnok felderítő figyelmeztetést jelenít meg, oldd meg azt, mielőtt a generált metadata.json fájlból definiálnád az entitásokat.

A generált konfiguráció delegált hitelesítést használ. Egy raktár- és szemantikai modellkonfiguráció a következő példára hasonlít:

connectors:
  - name: inventory
    type: fabric-warehouse
    config:
      workspaceId: "<workspace-id>"
      itemId: "<warehouse-item-id>"
    auth:
      type: delegated
    operations:
      - name: read

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

Tartsd meg a CLI által generált szemantikai modellértéket version .

Entitás-csatlakozó konfigurálása

A Lakehouse, a warehouse és az SQL adatbázis-csatlakozók a kiválasztott forrástáblákat típusozott entitásként jelenítik meg. A generált metadata.json fájlt használd arra, hogy csak azokat a táblákat és oszlopokat definiáld, amelyekre az alkalmazásod szüksége van.

A következő példa feltételezi, hogy a kiválasztott raktárban egy dbo.Order táblát tartalmaz, amelynek egy egész számú elsődleges kulcsa van OrderID elnevezve, és egy szövegoszlopot .customerEmail Ezeket az illusztráló neveket és típusokat a generált metaadatokból származó értékekre cseréljük.

Important

Ne következtess elsődleges kulcsot egy oszlop nevéből. Ha egy forrástáblának nincs kulcsa, hagyd primaryKeyki . Kulcs nélküli entitások nem támogatják azokat a műveleteket, amelyek egy sort a kulcsa alapján címeznek.

Hozd létre az entitást:

// rayfin/connectors/inventory/Order.ts
import { entity, int, text, role } from '@microsoft/rayfin-core';
import { Source } from '@microsoft/rayfin-connectors';

@role('authenticated', ['read'])
@entity()
export class Order extends Source({
  schema: 'dbo',
  table: 'Order',
  primaryKey: ['orderId'],
}) {
  @int({ column: 'OrderID' }) orderId!: number;
  @text() customerEmail!: string;
}

Ezután regisztráljuk az entitást a csatlakozó sémában:

// rayfin/connectors/inventory/schema.ts
import type { GraphQLBackedConnector } from '@microsoft/rayfin-connector-fabric-graphql';
import type { ConnectorConfig } from '@microsoft/rayfin-connectors';
import { Order } from './Order.js';

export { Order } from './Order.js';

export const connectorConfig = {
  connector: 'fabric-warehouse',
  operations: ['read'],
  entities: { Order },
} as const satisfies ConnectorConfig;

export type InventorySchema = GraphQLBackedConnector<
  { Order: typeof Order },
  typeof connectorConfig
>;

Tartsd a csatlakozó nevét, séma tulajdonságát és az ügyfélkonfigurációs nevet következetesen.

Konfiguráld a csatlakozók klienszét

Adja hozzá a csatlakozósémákat a ConnectorsRayfinClient-hoz. A szemantikai modellcsatlakozókhoz a futási idő is szükséges fabricSemanticModel() :

// src/lib/connectors.ts
import { ConnectorsRayfinClient } from '@microsoft/rayfin-client';
import { fabricSemanticModel } from '@microsoft/rayfin-connector-fabric-semanticmodel';

import {
  connectorConfig as inventoryConfig,
  type InventorySchema,
} from '../../rayfin/connectors/inventory/schema.js';
import {
  connectorConfig as salesModelConfig,
  type SalesModelSchema,
} from '../../rayfin/connectors/salesModel/schema.js';

type AppConnectorsSchema = {
  inventory: InventorySchema;
  salesModel: SalesModelSchema;
};

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

Használd az API URL-t és a publikálható kulcsot a Fabric Apps projektedből. Tartsd meg az alkalmazás meglévő bejelentkezési folyamatát. A kliens létrehozása nem jelenteti be a felhasználót.

Kapcsolt adatok lekérdezése

Miután a felhasználó bejelentkezett, érjen hozzá egy entitáscsatlakozót annak nevén és entitásán keresztül:

const orders = await client.connectors.inventory.Order
  .select(['orderId', 'customerEmail'])
  .first(20)
  .execute();

Válasszuk ki az oszlopokat explicit, és korlátozzuk a visszaküldött sorok számát.

Egy szemantikai modellhez küldj be egy DAX lekérdezést a következőkkel executeQuery:

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);
}

Cseréld Sales le táblázatot a szemantikai modelledben. Ellenőrizd a visszaküldött státuszt, mielőtt használod az eredményt.

Biztonságos csatlakozó hozzáférés

Használd együtt ezeket a vezérlőket:

  • Korlátozd a csatlakozó engedélyeit a(z) rayfin.yml alkalmazás számára szükséges műveletekre.
  • Csatolj @role nyilatkozatokat a csatlakozó entitásokhoz, hogy szabályozzák, mely bejelentkezett felhasználók végezhetnek el minden műveletet.
  • Adjon hozzá sorszintű szabályokat vagy mezők bevonására és kizárására vonatkozó szabályokat, ha a felhasználóknak csak egy entitás egy részéhez kell hozzáférést kapniuk.
  • Tartsd engedélyezve az átruházott hitelesítést, hogy a csatlakozó kérések a bejelentkezett felhasználó hozzáférését használják.

Az ügyféloldali TypeScript típusok javítják a fejlesztési biztonságot, de nem minősülnek engedélyezési határoknak. A hozzáférés kikényszerítése a csatlakozó konfigurációjában és az entitásszerepkörökben.

Az összekötő üzembe helyezése

Telepítsd az alkalmazás és a csatlakozó konfigurációját:

npx rayfin up

Teszteld a telepített alkalmazást olyan felhasználóval, akinek megvannak a várt jogosultságai mind a Fabric alkalmazáson, mind a kapcsolódó terméken.