Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Konektory zapewniają typowy dostęp z aplikacji Fabric do danych w innych elementach Fabric. Użyj konektora do zapytań do domu nad jeziorem, magazynu, bazy danych SQL w Fabric lub modelu semantycznego, bez konieczności konfigurowania osobnej usługi danych.
Obsługiwane łączniki
Wybierz złącze na podstawie elementu Fabric i operacji, których potrzebuje Twoja aplikacja:
| produkt tekstylny | Typ łącznika | Obsługiwane operacje |
|---|---|---|
| Punkt końcowy analizy SQL usługi Lakehouse | fabric-sqlanalytics |
read |
| warehouse | fabric-warehouse |
read, create, updatei delete |
| Baza danych SQL na platformie Fabric | fabric-sqldatabase |
read, create, updatei delete |
| Model semantyczny | fabric-semanticmodel |
executeQuery |
Dla magazynu i bazy danych SQL w Fabric connectorach konfiguruj tylko operacje, których potrzebuje Twoja aplikacja. Konektor lakehouse jest tylko do odczytu.
Wymagania wstępne
- Projekt Fabric Apps utworzony za pomocą
npm create @microsoft/rayfin@latestlub zainicjowany przy użyciunpx rayfin init. - Przestrzeń robocza Fabric, która zawiera przedmiot, do którego chcesz się połączyć.
- Uprawnienia do dostępu do przestrzeni roboczej i elementu źródłowego.
- Identyfikator obszaru roboczego i identyfikator elementu, które można znaleźć w adresie URL usługi Fabric lub za pomocą polecenia wyszukiwania łącznika.
Znajdź element usługi Fabric
Użyj connector search, aby wyświetlić elementy określonego typu w przestrzeni roboczej. Poniższy przykład przedstawia magazyny:
npx rayfin connector search --workspace-id <workspace-id> --type fabric-warehouse --json
Zastąp <workspace-id> identyfikatorem obszaru roboczego Fabric. Aby wyszukać inny wspierany element, zmień jego wartość --type . Możesz też dodać filtr nazw:
npx rayfin connector search "sales" --workspace-id <workspace-id> --type fabric-warehouse --json
Skopiuj ID przedmiotu z wyników wyszukiwania.
Dodawanie łącznika
Uruchamiaj connector add od korzenia swojego projektu Fabric Apps. Poniższy przykład dodaje złącze magazynowe tylko do odczytu o nazwie:inventory
npx rayfin connector add --type fabric-warehouse --workspace-id <workspace-id> --item-id <warehouse-item-id> --name inventory --operations read
Użyj odpowiedniego typu i operacji złącza dla innych elementów 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
Polecenie:
- Dodaje złącze do sekcji najwyższego poziomu
connectorswrayfin/rayfin.yml. - Tworzy pliki łącznika w katalogu
rayfin/connectors/<connector-name>/. - Wyświetla polecenie
npm installdopasowane do wersji wymaganych pakietów konektorów.
Uruchom dokładne polecenie instalacyjne wydrukowane przez CLI. Dzięki temu pakiety konektorów pozostają zgodne z wersją Rayfin CLI.
Note
Odkrywanie schematów to najlepszy wysiłek. Złącze można dodać nawet jeśli odkrywanie nie zostanie zakończone. Jeśli CLI wyświetla ostrzeżenie o wykrywaniu, rozwiąż je przed definiowaniem jednostek z wygenerowanego metadata.json pliku.
Wygenerowana konfiguracja wykorzystuje uwierzytelnianie delegowane. Konfiguracja modelu magazynowego i semantycznego przypomina następujący przykład:
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
Zachowaj wartość modelu version semantycznego, którą generuje CLI.
Konfiguruj konektor encji
Łączniki dla rozwiązań Lakehouse, hurtowni danych i baz danych SQL udostępniają wybrane tabele źródłowe jako typowane encje. Użyj wygenerowanego metadata.json pliku, aby zdefiniować tylko tabele i kolumny, których potrzebuje Twoja aplikacja.
Poniższy przykład zakłada, że wybrany magazyn zawiera tabelę dbo.Order z nazwanym kluczem OrderID pierwotnym liczbowym oraz kolumną tekstową o nazwie customerEmail. Zamień te ilustracyjne nazwy i typy na wartości z wygenerowanych przez siebie metadanych.
Important
Nie wyciągaj klucza głównego z nazwy kolumny. Jeśli tabela źródłowa nie ma klucza, pomiń primaryKey. Encje bez klucza nie obsługują operacji, które odwołują się do wiersza za pomocą klucza.
Stwórz byt:
// 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;
}
Następnie rejestruje jednostkę w schemacie łącznika:
// 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
>;
Utrzymuj spójność nazwy złącza, właściwości schematu i nazwy konfiguracji klienta.
Konfiguruj klienta konektorów
Dodaj schematy łączników do ConnectorsRayfinClient. Konektory modeli semantycznych również wymagają środowiska uruchomieniowego 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(),
}
);
Użyj adresu URL API i klucza publikowalnego z projektu Fabric Apps. Zachowaj istniejący przepływ logowania w aplikacji. Utworzenie klienta nie powoduje zalogowania użytkownika.
Zapytanie o dane powiązane
Po zalogowaniu użytkownika uzyskaj dostęp do łącznika encji przez jego nazwę i podmiot:
const orders = await client.connectors.inventory.Order
.select(['orderId', 'customerEmail'])
.first(20)
.execute();
Wybierz kolumny jawnie i ogranicz liczbę zwróconych wierszy.
Dla modelu semantycznego przesłaj zapytanie DAX z :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);
}
Zastąp Sales tabelą w modelu semantycznym. Sprawdź zwrócony stan przed użyciem wyniku.
Dostęp do złącza zabezpieczonego
Używaj tych kontrolek razem:
- Ogranicz operacje łącznika w
rayfin.ymldo działań wymaganych przez aplikację. - Dodaj
@roledeklaracje do jednostek łączących, aby kontrolować, którzy zalogowani użytkownicy mogą wykonywać każdą operację. - Dodaj zasady na poziomie wierszy lub reguły uwzględniania i wykluczania pól, gdy użytkownicy potrzebują dostępu tylko do części encji.
- Zachowaj włączone uwierzytelnianie delegowane, aby żądania łącznikowe korzystały z dostępu zalogowanego użytkownika.
Typy TypeScript po stronie klienta poprawiają bezpieczeństwo rozwoju, ale nie stanowią granicy autoryzacji. Wymusz dostęp w konfiguracji konektora i rolach podmiotów.
Wdrażanie łącznika
Wdrożenie aplikacji i konfiguracji złącza:
npx rayfin up
Przetestuj wdrożoną aplikację z użytkownikiem, który ma oczekiwane uprawnienia zarówno do aplikacji Fabric, jak i do połączonego elementu.