Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Connectors ger typad åtkomst från en Fabric-app till data i andra Fabric-objekt. Använd en anslutningsapp för att köra frågor mot ett lakehouse, ett datalager, en SQL-databas eller en semantisk modell i Fabric utan att konfigurera en separat datatjänst.
Stödda kopplingar
Välj en koppling baserat på den Fabric-produkt och de operationer som din app behöver:
| Tygföremål | Anslutningstyp | Åtgärder som stöds |
|---|---|---|
| Lakehouse SQL-analysslutpunkt | fabric-sqlanalytics |
read |
| warehouse | fabric-warehouse |
read, create, updateoch delete |
| SQL-databasen i Fabric | fabric-sqldatabase |
read, create, updateoch delete |
| Semantisk modell | fabric-semanticmodel |
executeQuery |
För lager- och SQL-databaser i Fabric-anslutningar, konfigurera endast de operationer som din app behöver. Lakehouse-anslutningen är skrivskyddad.
Förutsättningar
- Ett Fabric Apps-projekt som skapats med
npm create @microsoft/rayfin@latesteller initierats mednpx rayfin init. - Ett Fabric-arbetsområde som innehåller det föremål du vill koppla upp dig på.
- Behörighet att komma åt arbetsområdet och källobjektet.
- Workspace-ID och objekt-ID, som du kan hitta i Fabric-URL:en eller genom att använda connector-sökningskommandot.
Hitta en Fabric-artikel
Använd connector search för att lista objekt av en specifik typ i en arbetsyta. Följande exempel listar lager:
npx rayfin connector search --workspace-id <workspace-id> --type fabric-warehouse --json
Ersätt <workspace-id> med ditt Fabric arbetsyte-ID. För att söka efter ett annat stödd objekt, ändra värdet --type . Du kan också lägga till ett namnfilter:
npx rayfin connector search "sales" --workspace-id <workspace-id> --type fabric-warehouse --json
Kopiera artikel-ID:t från sökresultatet.
Lägg till en anslutning
Kör connector add från roten av ditt Fabric Apps-projekt. Följande exempel lägger till en skrivskyddad lageranslutning med namnet inventory:
npx rayfin connector add --type fabric-warehouse --workspace-id <workspace-id> --item-id <warehouse-item-id> --name inventory --operations read
Använd motsvarande kontakttyp och operationer för andra Fabric-artiklar:
# 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
Kommandot:
- Lägger till kontakten till den översta sektionen
connectorsirayfin/rayfin.yml. - Skapar anslutningsfilerna under
rayfin/connectors/<connector-name>/. - Skriver ut ett versionsmatchat
npm installkommando för de nödvändiga kontaktpaketen.
Kör exakt det installationskommando som CLI:n skriver ut. Detta håller kontaktpaketen i linje med din Rayfin CLI-version.
Anmärkning
Schemaupptäckt är bästa ansträngning. Kontakten kan läggas till även om upptäckten inte slutförs. Om CLI:n visar en upptäcktsvarning, lös den innan du definierar entiteter från den genererade metadata.json filen.
Den genererade konfigurationen använder delegerad autentisering. En lager- och semantisk modellkonfiguration liknar följande exempel:
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
Behåll det semantiska modellvärdet version som CLI:n genererar.
Konfigurera en entitetsanslutning
Lakehouse-, lager- och SQL-databaskopplingar exponerar utvalda källtabeller som typade enheter. Använd den genererade metadata.json filen för att definiera endast de tabeller och kolumner som din app behöver.
Följande exempel antar att det valda lagret innehåller en dbo.Order tabell med en heltalsprimärnyckel som OrderID heter och en textkolumn med namnet customerEmail. Ersätt dessa illustrativa namn och typer med värden från din genererade metadata.
Important
Dra inte slutsatser om en primärnyckel från ett kolumnnamn. Om en källtabell inte har en nyckel, utelämna primaryKey. Nyckellösa enheter stödjer inte operationer som adresserar en rad för nyckel.
Skapa entiteten:
// 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;
}
Registrera sedan entiteten i kopplingsschemat:
// 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
>;
Håll kontaktens namn, schema-egenskap och klientkonfigurationsnamn konsekventa.
Konfigurera klienten för anslutningar
Lägg till anslutningsscheman till ConnectorsRayfinClient. Anslutningsprogram för semantiska modeller kräver också körtiden 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(),
}
);
Använd API-URL:en och publicierbar nyckel från ditt Fabric Apps-projekt. Behåll appens befintliga inloggningsflöde. Att skapa klienten loggar inte in en användare.
Fråga om sammanhängande data
Efter att användaren loggat in, gå åt en entitetskopplare via dess namn och entitet:
const orders = await client.connectors.inventory.Order
.select(['orderId', 'customerEmail'])
.first(20)
.execute();
Välj kolumner explicit och begränsa antalet returnerade rader.
För en semantisk modell, skicka in en DAX-fråga med 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);
}
Ersätt Sales med en tabell i din semantiska modell. Kontrollera den returnerade statusen innan du använder resultatet.
Säker anslutningsåtkomst
Använd dessa kontroller tillsammans:
- Begränsa anslutningens åtgärder i
rayfin.ymltill de åtgärder som appen behöver. - Lägg till
@roledeklarationer till kopplingsenheter för att kontrollera vilka inloggade användare som kan utföra varje operation. - Lägg till radpolicyer eller fält inkluderar och exkluderar regler när användare behöver åtkomst till endast en del av en enhet.
- Ha delegerad autentisering aktiverad så att anslutningsförfrågningar använder den inloggade användarens åtkomst.
Typtyper på klientsidan förbättrar utvecklingssäkerheten, men de är inte en auktorisationsgräns. Upprätthåll åtkomst i anslutningskonfigurationen och entitetsrollerna.
Distribuera anslutningen
Distribuera appen och anslutningskonfigurationen:
npx rayfin up
Testa den distribuerade appen med en användare som har förväntade behörigheter både i Fabric-appen och på det anslutna objektet.