Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Konektor menyediakan akses yang diketik dari aplikasi Fabric ke data di item Fabric lainnya. Gunakan konektor untuk melakukan query ke lakehouse, gudang, database SQL di Fabric, atau model semantik tanpa mengonfigurasi layanan data terpisah.
Konektor yang didukung
Pilih konektor berdasarkan item Fabric dan operasi yang dibutuhkan aplikasi Anda:
| Barang Kain | Jenis Konektor | Operasi yang Didukung |
|---|---|---|
| Titik akhir analisis SQL Lakehouse | fabric-sqlanalytics |
read |
| warehouse | fabric-warehouse |
read, create, update, dan delete |
| Basis data SQL dalam Fabric | fabric-sqldatabase |
read, create, update, dan delete |
| Model semantik | fabric-semanticmodel |
executeQuery |
Untuk konektor database gudang dan SQL di Fabric, konfigurasikan hanya operasi yang dibutuhkan aplikasi Anda. Konektor Lakehouse hanya bisa dibaca.
Prasyarat
- Proyek Fabric Apps yang dibuat dengan
npm create @microsoft/rayfin@latestatau diinisialisasi dengannpx rayfin init. - Ruang kerja Fabric yang berisi item yang ingin Anda hubungkan.
- Izin untuk mengakses ruang kerja dan item sumber.
- ID workspace dan ID item, yang dapat Anda temukan di URL Fabric atau menggunakan perintah pencarian konektor.
Temukan item Fabric
Gunakan connector search untuk mencantumkan item dengan tipe tertentu di workspace. Contoh berikut mencantumkan gudang:
npx rayfin connector search --workspace-id <workspace-id> --type fabric-warehouse --json
Ganti <workspace-id> dengan ID ruang kerja Fabric Anda. Untuk mencari item lain yang didukung, ubah nilainya --type . Anda juga dapat menambahkan filter nama:
npx rayfin connector search "sales" --workspace-id <workspace-id> --type fabric-warehouse --json
Salin ID item dari hasil pencarian.
Tambahkan konektor
Jalankan connector add dari root proyek Fabric Apps Anda. Contoh berikut menambahkan konektor gudang hanya baca yang bernama inventory:
npx rayfin connector add --type fabric-warehouse --workspace-id <workspace-id> --item-id <warehouse-item-id> --name inventory --operations read
Gunakan tipe konektor dan operasi yang sesuai untuk item Fabric lainnya:
# 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
Perintah:
- Menambahkan konektor ke bagian
connectorstingkat atas dirayfin/rayfin.yml. - Membuat file konektor di bawah
rayfin/connectors/<connector-name>/. - Mencetak perintah
npm installyang versinya sesuai untuk paket konektor yang diperlukan.
Jalankan perintah instalasi persis yang dicetak oleh CLI. Ini menjaga paket konektor tetap selaras dengan versi CLI Rayfin Anda.
Note
Penemuan skema adalah usaha terbaik. Konektor dapat ditambahkan meskipun penemuan belum selesai. Jika CLI menampilkan peringatan penemuan, selesaikan peringatan tersebut sebelum Anda mendefinisikan entitas dari file metadata.json yang dihasilkan.
Konfigurasi yang dihasilkan menggunakan autentikasi delegasi. Konfigurasi model gudang dan semantik menyerupai contoh berikut:
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
Pertahankan nilai model version semantik yang dihasilkan CLI.
Konfigurasikan konektor entitas
Konektor database Lakehouse, gudang, dan SQL menampilkan tabel sumber terpilih sebagai entitas yang diketik. Gunakan file yang dihasilkan metadata.json untuk mendefinisikan hanya tabel dan kolom yang dibutuhkan aplikasi Anda.
Contoh berikut mengasumsikan bahwa gudang yang dipilih berisi dbo.Order tabel dengan kunci utama bilangan bulat bernama OrderID dan kolom teks bernama customerEmail. Ganti nama dan tipe ilustratif ini dengan nilai dari metadata yang Anda hasilkan.
Important
Jangan menyimpulkan kunci utama dari nama kolom. Jika tabel sumber tidak memiliki kunci, hilangkan .primaryKey Entitas tanpa kunci tidak mendukung operasi yang mengakses baris berdasarkan kunci.
Buat entitas:
// 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;
}
Kemudian daftarkan entitas tersebut dalam skema konektor:
// 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
>;
Jaga agar nama konektor, properti skema, dan nama konfigurasi klien tetap konsisten.
Konfigurasikan klien konektor
Tambahkan skema konektor ke ConnectorsRayfinClient. Konektor model semantik juga memerlukan 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(),
}
);
Gunakan URL API dan kunci yang dapat dipublikasikan dari proyek Fabric Apps Anda. Pertahankan alur masuk aplikasi yang sudah ada. Membuat klien tidak akan membuat pengguna login.
Kueri data yang terhubung
Setelah pengguna masuk, akses konektor entitas melalui nama dan entitasnya:
const orders = await client.connectors.inventory.Order
.select(['orderId', 'customerEmail'])
.first(20)
.execute();
Pilih kolom secara eksplisit dan batasi jumlah baris yang dikembalikan.
Untuk model semantik, kirimkan query DAX dengan 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);
}
Ganti Sales dengan tabel di model semantik Anda. Periksa status yang dikembalikan sebelum Anda menggunakan hasilnya.
Akses konektor aman
Gunakan kontrol ini bersama-sama:
- Batasi operasi konektor di
rayfin.ymlhanya untuk tindakan yang diperlukan aplikasi. - Tambahkan deklarasi
@roleke entitas konektor untuk mengontrol pengguna yang masuk mana yang dapat melakukan setiap operasi. - Tambahkan kebijakan tingkat baris atau aturan penyertaan dan pengecualian tingkat kolom saat pengguna hanya memerlukan akses ke sebagian entitas.
- Biarkan autentikasi terdelegasi tetap aktif agar permintaan konektor menggunakan akses pengguna yang sedang masuk.
Tipe TypeScript sisi klien meningkatkan keamanan pengembangan, tetapi bukan batas otorisasi. Terapkan kontrol akses pada konfigurasi konektor dan peran entitas.
Pasang konektor
Terapkan aplikasi dan konfigurasi konektor:
npx rayfin up
Uji aplikasi yang telah diterapkan menggunakan pengguna yang memiliki izin yang diperlukan baik pada aplikasi Fabric maupun item yang terhubung.