Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bağlayıcılar, bir Fabric uygulamasından diğer Fabric öğelerindeki verilere yazılı erişim sağlar. Ayrı bir veri hizmeti yapılandırmadan Fabric’teki veri gölü evi, ambar, SQL veritabanı veya semantik modeli sorgulamak için bir bağlayıcı kullanın.
Desteklenen bağlayıcılar
Uygulamanızın ihtiyaç duyduğu Fabric öğesi ve işlemlerine göre bir bağlayıcı seçin:
| Kumaş parçası | Bağlayıcı türü | Desteklenen işlemler |
|---|---|---|
| Lakehouse SQL analiz uç noktası | fabric-sqlanalytics |
read |
| warehouse | fabric-warehouse |
read, create, update ve delete |
| Fabric'de SQL veritabanı | fabric-sqldatabase |
read, create, update ve delete |
| Semantik model | fabric-semanticmodel |
executeQuery |
Fabric bağlayıcılarında depo ve SQL veritabanı için, sadece uygulamanızın ihtiyaç duyduğu işlemleri yapılandırın. Göl evi bağlantısı sadece okunabilir.
Prerequisites
-
npm create @microsoft/rayfin@latestile oluşturulan veyanpx rayfin initile başlatılan bir Fabric Apps projesi. - Bağlanmak istediğiniz öğeyi içeren bir Fabric çalışma alanı.
- İş alanı ve kaynak öğesine erişim izni.
- Fabric URL’sinde veya bağlayıcı arama komutunu kullanarak bulabileceğiniz çalışma alanı kimliği ve öğe kimliği.
Bir Fabric ürünü bul
Belirli bir türdeki öğeleri bir çalışma alanında listelemek için kullanın connector search . Aşağıdaki örnek depoları listeliyor:
npx rayfin connector search --workspace-id <workspace-id> --type fabric-warehouse --json
<workspace-id> ifadesini Fabric çalışma alanı kimliğiniz ile değiştirin. Desteklenen başka bir öğe aramak için değeri --type değiştirin. Ayrıca bir isim filtresi de ekleyebilirsiniz:
npx rayfin connector search "sales" --workspace-id <workspace-id> --type fabric-warehouse --json
Arama sonucundan ürün kimliğini kopyalayın.
Bağlayıcı ekleme
Fabric Apps projenizin kökünden başlayınconnector add. Aşağıdaki örnek, yalnızca okunabilir bir depo bağlayıcısı ekliyor:inventory
npx rayfin connector add --type fabric-warehouse --workspace-id <workspace-id> --item-id <warehouse-item-id> --name inventory --operations read
Diğer Fabric öğeleri için ilgili bağlantı tipi ve işlemlerini kullanın:
# 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
Komut:
- Bağlantıyı
rayfin/rayfin.ymliçindeki en üst düzeyconnectorsbölümüne ekler. - Bağlantı dosyalarını .
rayfin/connectors/<connector-name>/altında oluşturur. - Gerekli bağlayıcı paketleri için sürümü eşleşen bir
npm installkomutu yazdırır.
CLI tarafından basılan tam kurulum komutunu çalıştırın. Bu, konnektör paketlerini Rayfin CLI versiyonunuzla hizalanmış tutar.
Uyarı
Şema keşfi en iyi çabadır. Keşif tamamlanmasa bile bağlantı eklenebilir. Eğer CLI bir keşif uyarısı gösterirse, oluşturulan metadata.json dosyadan varlıkları tanımlamadan önce bunu çözebilirsiniz.
Oluşturulan yapılandırma, delege edilmiş kimlik doğrulama kullanır. Bir depo ve anlamsal model konfigürasyonu aşağıdaki örneğe benzer:
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
CLI'nin ürettiği anlamsal model version değerini koruyun.
Varlık bağlayıcısını yapılandırın
Lakehouse, veri ambarı ve SQL veritabanı bağlayıcıları, seçilen kaynak tablolarını türlendirilmiş varlıklar olarak sunar. Oluşturulan metadata.json dosyayı kullanarak sadece uygulamanızın ihtiyaç duyduğu tabloları ve sütunları tanımlayın.
Aşağıdaki örnek, seçilen deponun dbo.Order adlı, OrderID adlı tamsayı birincil anahtara ve customerEmail adlı bir metin sütununa sahip bir tablo içerdiğini varsayar. Bu açıklayıcı isimleri ve türleri oluşturulan metaverideki değerlerle değiştirin.
Important
Bir sütun adından birincil anahtar çıkarmayın. Kaynak tabloda bir anahtar yoksa, primaryKey öğesini atlayın. Anahtarsız varlıklar, bir satırı anahtarına göre hedefleyen işlemleri desteklemez.
Varlığı oluşturun:
// 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;
}
Sonra varlığı bağlantı şemasına kaydedin:
// 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
>;
Bağlayıcı adı, şema özelliği ve istemci yapılandırma adını tutarlı tutun.
Konnektör istemcisini yapılandırma
Bağlantı şemalarını ekleyin.ConnectorsRayfinClient Anlamsal model bağlayıcıları ayrıca fabricSemanticModel() çalışma zamanını gerektirir:
// 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(),
}
);
Fabric Apps projenizdeki API URL'sini ve yayınlanabilir anahtarı kullanın. Uygulamanın mevcut giriş akışını koruyun. İstemciyi oluşturmak, kullanıcının oturum açmasını sağlamaz.
Bağlantılı veri sorgulama
Kullanıcı giriş yaptıktan sonra, bir varlık bağlayıcısına adı ve varlığı üzerinden erişin:
const orders = await client.connectors.inventory.Order
.select(['orderId', 'customerEmail'])
.first(20)
.execute();
Sütunları açıkça seçin ve geri dönen satır sayısını sınırlayın.
Bir anlamsal model için, aşağıdaki dax sorgusu executeQuerygönderin:
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);
}
Yerine Sales semantik modelinizde bir tablo ekleyin. Sonucu kullanmadan önce döndürülen durumu kontrol edin.
Güvenli bağlantı erişimi
Bu kontrolleri birlikte kullanın:
- Bağlayıcının işlemlerini
rayfin.ymluygulamanın ihtiyaç duyduğu eylemlerle sınırlayın. - Hangi giriş yapan kullanıcıların her işlemi gerçekleştirebileceğini kontrol etmek için bağlayıcı varlıklara bildirmeler ekleyin
@role. - Kullanıcıların bir varlığın yalnızca bir bölümüne erişmesi gerektiğinde satır ilkeleri veya alan dahil etme ve hariç tutma kuralları ekleyin.
- Devre edilmiş kimlik doğrulamayı etkin tutun ki bağlayıcı istekleri giriş yapmış kullanıcının erişimini kullansın.
İstemci tarafı TypeScript tipleri geliştirme güvenliğini artırır, ancak yetkilendirme sınırı değildirler. Bağlantı yapılandırmasında ve varlık rollerinde erişimi zorunlu kılın.
Bağlayıcıyı dağıtın
Uygulama ve konnektör yapılandırmasını dağıtın:
npx rayfin up
Dağıtılan uygulamayı, hem Fabric uygulamasında hem de bağlı öğede beklenen izinlere sahip bir kullanıcıyla test edin.