Connect Fabric Apps k Fabric dátam

Konektory poskytujú typový prístup z aplikácie Fabric k dátam v iných Fabric položkách. Použite konektor na dotazovanie do lakehouse, skladu, SQL databázy vo Fabric alebo sémantického modelu bez potreby konfigurácie samostatnej dátovej služby.

Podporované konektory

Vyberte konektor podľa položky Fabric a operácií, ktoré vaša aplikácia potrebuje:

Látka Typ konektora Podporované operácie
Koncový bod analýzy Lakehouse SQL fabric-sqlanalytics read
Sklad fabric-warehouse read, create, update, a delete
SQL databáza vo Fabric fabric-sqldatabase read, create, update, a delete
Sémantický model fabric-semanticmodel executeQuery

Pre sklady a SQL databázy v Fabric konektoroch konfigurujte len tie operácie, ktoré vaša aplikácia potrebuje. Konektor pre jazerný dom je len na čítanie.

Požiadavky

  • Projekt Fabric Apps vytvorený pomocou npm create @microsoft/rayfin@latest alebo inicializovaný pomocou npx rayfin init.
  • Pracovný priestor Fabric, ktorý obsahuje položku, ku ktorej sa chcete pripojiť.
  • Povolenie na prístup do pracovného priestoru a zdrojovej položky.
  • ID pracovného priestoru a ID položky, ktoré nájdete v Fabric URL alebo pomocou príkazu connector search.

Nájdite Fabric položku

Použite na connector search zoznam položiek konkrétneho typu v pracovnom priestore. Nasledujúci príklad uvádza sklady:

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

Nahraďte <workspace-id> ho identifikátorom pracovného priestoru služby Fabric. Ak chcete vyhľadať inú podporovanú položku, zmeňte hodnotu --type . Môžete tiež pridať filter mien:

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

Skopírujte ID položky z výsledku vyhľadávania.

Pridať konektor

Spustite connector add to z koreňa vášho projektu Fabric Apps. Nasledujúci príklad pridáva skladový konektor len na čítanie s názvom inventory:

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

Použite príslušný typ konektora a operácie pre ostatné položky Fabric:

# 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

Príkaz:

  • Pridáva konektor do hornej connectors časti v rayfin/rayfin.yml.
  • Vytvorí konektorové súbory pod .rayfin/connectors/<connector-name>/
  • Vytlačí príkaz zladený npm install s verziou pre požadované balíky konektorov.

Spustite presný inštalačný príkaz vytlačený CLI. Týmto sa udržiavajú konektorové balíky zarovnané s vašou verziou Rayfin CLI.

Poznámka

Objavovanie schémy je najlepšia snaha. Konektor sa dá pridať aj v prípade, že objavovanie nie je dokončené. Ak CLI zobrazí varovanie pred objavovaním, vyriešte ho skôr, než definujete entity z generovaného metadata.json súboru.

Generovaná konfigurácia využíva delegovanú autentifikáciu. Konfigurácia skladu a sémantického modelu pripomína nasledujúci príklad:

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

Zachovajte hodnotu sémantického modelu version , ktorú generuje CLI.

Konfigurujte konektor entít

Lakehouse, warehouse a SQL databázové konektory zprístupňujú vybrané zdrojové tabuľky ako typované entity. Použite vygenerovaný metadata.json súbor na definovanie iba tabuliek a stĺpcov, ktoré vaša aplikácia potrebuje.

Nasledujúci príklad predpokladá, že vybraný sklad obsahuje tabuľku dbo.Order s menovaným OrderID celočíselným primárnym kľúčom a textovým stĺpcom pomenovaným customerEmail. Nahradte tieto ilustračné názvy a typy hodnotami z generovaných metadát.

Dôležité

Neodvodzujte primárny kľúč z názvu stĺpca. Ak zdrojová tabuľka nemá kľúč, vynechajte primaryKey. Bezkľúčové entity nepodporujú operácie, ktoré adresujú riadok po kľúči.

Vytvorte entitu:

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

Potom zaregistrujte entitu v schéme konektora:

// 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
>;

Udržiavajte konzistentný názov konektora, vlastnosť schémy a názov konfigurácie klienta.

Konfigurujte klienta konektorov

Pridajte spojovacie schémy do ConnectorsRayfinClient. Konektory sémantických modelov tiež vyžadujú fabricSemanticModel() runtime:

// 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(),
  }
);

Použite API URL a publikovateľný kľúč z vášho projektu Fabric Apps. Zachovajte existujúci prihlasovací tok aplikácie. Vytvorenie klienta neznamená prihlásenie používateľa.

Dotaz na prepojené dáta

Po prihlásení používateľa pristupujte k entity connector cez jeho meno a entitu:

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

Vyberte stĺpce explicitne a obmedzte počet vrátených riadkov.

Pre sémantický model odošlite DAX dotaz s 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);
}

Nahraďte Sales ju tabuľkou vo vašom sémantickom modeli. Pred použitím výsledku skontrolujte stav vrátenia.

Prístup cez zabezpečený konektor

Používajte tieto ovládacie prvky spolu:

  • Obmedzte operácie konektora na rayfin.yml akcie, ktoré aplikácia potrebuje.
  • Pridajte @role deklarácie k entitám konektora, aby ste kontrolovali, ktorí prihlásení používatelia môžu vykonávať jednotlivé operácie.
  • Pridajte riadkové politiky alebo polia, zahrňte a vylučujte pravidlá, keď používatelia potrebujú prístup len k časti entity.
  • Nechajte delegovanú autentifikáciu zapnutú, aby požiadavky na konektor využívali prístup prihláseného používateľa.

Typy TypeScriptov na strane klienta zlepšujú bezpečnosť vývoja, ale nie sú hranicou autorizácie. Vynuťte prístup v konfigurácii konektora a rolách entít.

Nasadiť konektor

Nasadenie aplikácie a konfigurácie konektora:

npx rayfin up

Otestujte nasadenú aplikáciu s používateľom, ktorý má očakávané oprávnenia na aplikáciu Fabric aj na pripojenej položke.