Yhdistä Fabric-sovellukset Fabric-dataan

Liittimet mahdollistavat tyypitetyn pääsyn Fabric-sovelluksesta muiden Fabric-tuotteiden tietoihin. Käytä liitintä kysyäksesi lakehousea, varastoa, SQL-tietokantaa Fabric:ssa tai semanttista mallia ilman erillistä datapalvelua.

Tuetut liittimet

Valitse liitin Fabric-tuotteen ja sovelluksen tarvitsemien toimintojen perusteella:

Kangas esine Yhdistimen tyyppi Tuetut toiminnot
Lakehouse SQL -analytiikan päätepiste fabric-sqlanalytics read
varasto fabric-warehouse read, create, updateja delete
SQL-tietokanta Fabric-tiedostossa fabric-sqldatabase read, create, updateja delete
Semanttinen malli fabric-semanticmodel executeQuery

Varasto- ja SQL-tietokannan Fabric-liittimissä määritä vain sovelluksesi tarvitsemat toiminnot. Lakehouse-liitin on vain luku -luku.

Edellytykset

  • Fabric Apps -projekti, joka on luotu npm create @microsoft/rayfin@latest:lla tai alustettu npx rayfin init:llä.
  • Fabric-työtila, joka sisältää haluamasi kohteen.
  • Käyttöoikeus työtilaan ja lähdekohteeseen.
  • Työtilan ID ja item ID, jotka löydät Fabric-URL:stä tai käyttämällä connector-hakukomentoa.

Find a Fabric item

Käytä connector search tietyn tyyppisten esineiden listaamiseen työtilassa. Seuraava esimerkki listaa varastot:

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

Korvaa <workspace-id> se Fabric-työtilan tunnuksellasi. Etsiäksesi toista tuettua tuotetta, vaihda arvoa --type . Voit myös lisätä nimisuodattimen:

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

Kopioi tuotteen ID hakutuloksesta.

Yhdistimen lisääminen

Lähde connector add Fabric Apps -projektisi juurelta. Seuraava esimerkki lisää vain luku -luku -varastoliittimen nimeltä inventory:

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

Käytä vastaavaa liitintyyppiä ja toimintoja muille Fabric-tuotteille:

# 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

Komento:

  • Lisää liittimen ylimpään connectors osaan .rayfin/rayfin.yml
  • Luo liitintiedostot alle rayfin/connectors/<connector-name>/.
  • Tulostaa versionmukaisen npm install komennon vaadittaville liitinpaketeille.

Suorita tarkka asennuskomento, joka on tulostettu komentoketjun toimesta. Tämä pitää liitinpaketit linjassa Rayfin CLI -version kanssa.

Note

Skeeman löytäminen on paras yritys. Liittimen voi lisätä, vaikka Discovery ei valmistuisikaan. Jos komentojärjestelmä näyttää löytämisvaroituksen, ratkaise se ennen kuin määrittelet entiteettejä generoidusta metadata.json tiedostosta.

Generoitu konfiguraatio käyttää delegoitua tunnistautumista. Varasto- ja semanttinen mallikonfiguraatio muistuttaa seuraavaa esimerkkiä:

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

Säilytä CLI:n tuottama semanttinen malliarvo version .

Konfiguroi entiteettiliitin

Lakehouse-, varasto- ja SQL-tietokantaliittimet paljastavat valitut lähdetaulut tyypitettyinä entiteetteinä. Käytä luotua metadata.json tiedostoa määrittämään vain ne taulukot ja sarakkeet, joita sovelluksesi tarvitsee.

Seuraava esimerkki olettaa, että valittu varasto sisältää taulukon dbo.Order , jossa on kokonaislukuinen ensiavain nimeltä OrderID ja tekstisarake nimeltä customerEmail. Korvaa nämä havainnollistavat nimet ja tyypit arvoilla, jotka ovat peräisin luomistasi metatiedoista.

Tärkeää

Älä päättele ensisijaista avainta sarakkeen nimestä. Jos lähdetaulukossa ei ole avainta, jätä primaryKeypois . Avaimettomat entiteettit eivät tue operaatioita, jotka käsittelevät rivin avaimella.

Luo entiteetti:

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

Rekisteröi sitten entiteetti liitinskeemaan:

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

Pidä liittimen nimi, skeeman ominaisuus ja asiakkaan konfiguraationimi johdonmukaisina.

Konfiguroi liittimien asiakas

Lisää liitinskeemat .ConnectorsRayfinClient Semanttiset malliliittimet vaativat myös suorituksen 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(),
  }
);

Käytä API-URL-osoitetta ja julkaistavaa avainta Fabric Apps -projektistasi. Pidä sovelluksen olemassa oleva kirjautumisprosessi. Asiakasohjelman luominen ei kirjaudu käyttäjää sisään.

Hae yhdistettyjä tietoja

Kun käyttäjä kirjautuu sisään, pääse käyttöön entiteettiliittimeen sen nimen ja entiteetti kautta:

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

Valitse sarakkeet eksplisiittisesti ja rajoita palautettujen rivien määrä.

Semanttista mallia varten lähetä DAX-kysely muodossa 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);
}

Korvaa Sales se taulukolla semanttisessa mallissasi. Tarkista palautustila ennen kuin käytät tulosta.

Turvallinen liitinyhteys

Käytä näitä ohjaimia yhdessä:

  • Rajoita liittimen toiminnot rayfin.yml sovelluksen tarvitsemiin toimintoihin.
  • Lisää @role ilmoituksia liitäntäyksiköille hallitakseni, mitkä kirjautuneet käyttäjät voivat suorittaa kunkin toiminnon.
  • Lisää rivikäytäntöjä tai kentän sisällytys- ja poissulkemissääntöjä, kun käyttäjät tarvitsevat pääsyn vain osaan entiteettiä.
  • Pidä delegoitu tunnistautuminen päällä, jotta liitäntäpyynnöt käyttävät kirjautuneen käyttäjän pääsyä.

Asiakaspuolen TypeScript-tyypit parantavat kehitysturvallisuutta, mutta ne eivät ole valtuutuksen raja. Pakota pääsy liittimen konfiguraatioon ja entiteettirooliin.

Ota liitin käyttöön

Ota käyttöön sovellus ja liitinasetukset:

npx rayfin up

Testaa käytössä oleva sovellus käyttäjällä, jolla on odotetut oikeudet sekä Fabric-sovellukseen että siihen liitetyyn kohteeseen.