Fabric Uygulamalarını Fabric verilerine bağla

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@latest ile oluşturulan veya npx rayfin init ile 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.yml içindeki en üst düzey connectors bö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 install komutu 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.yml uygulamanı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.