Ambarlar arası bağımlılıkları geliştirme ve dağıtma

Bu makalede, Visual Studio Code'da SQL veritabanı projelerini kullanarak çapraz ambar bağımlılıklarını modellemeyi ve dağıtmayı öğreneceksiniz. İki mevcut depo projesinden başlıyorsunuz ve veritabanı referansları kullanarak aralarındaki tek yönlü bağımlılıkları yapılandırıyorsunuz.

Bu makale, Develop warehouse projects in Visual Studio Code içindeki kavramları temel alır ve tek bir ambar projesi oluşturup yayımlama konusunda zaten rahat olduğunuzu varsayar.

Önkoşullar

Başlamadan önce şunları yaptığınızdan emin olun:

  • Aynı çalışma alanında iki Doku Ambarı oluşturun.
    • Yeni bir örnek ambar oluşturmak için bkz. Microsoft Fabric'da örnek Bir Ambar oluşturma.
  • Visual Studio Code her depo için database projesi ayıklayın veya oluşturun.
  • İş istasyonunuza Visual Studio Code yükleyin.
  • Veritabanı projeleri oluşturmak ve yayımlamak için .NET SDK'sını yükleyin.
  • İki Visual Studio Code uzantısı yükleyin: SQL Veritabanı Projeleri ve SQL Server (mssql).
    • "SQL Veritabanı Projeleri" veya "SQL Server (mssql)" araması yaparak gerekli uzantıları doğrudan Visual Studio Code marketten yükleyebilirsiniz.
  • Ambar projeleri Visual Studio Code'da doğrulanabilir, derlenebilir ve yayımlanabilir.

Uyarı

Bu makale, Visual Studio Code warehouse projelerine ve bunları Git'te normal kod projeleri olarak nasıl sürüm oluşturduğunuza odaklanır. Fabric Git entegrasyonu, çalışma alanları ve depo öğeleri için ayrıca Geliştirme ve Dağıtım ile Git entegrasyonu bölümlerinde ele alınmıştır. Makale, Fabric çalışma alanınızın dağıtım hedefi olduğunu ve T-SQL şemasının Git'te sürüm kontrolü yaptığınız bir veya daha fazla Visual Studio Code projesinde yer aldığını varsayıyor.

Bu makale bir Lakehouse'un SQL analitik uç noktası için depolararası geliştirmeyi kapsamaz. Lakehouse tabloları ve SQL analiz uç noktası nesneleri, ambar projeleri gibi kaynak kontrolünde aynı şekilde izlenmezler. Fabric yerel deneyimlerinde ve istemci araçlarında tam git tümleştirmesi ve dağıtım desteği için Ambar öğelerini veritabanı projeleriyle kullanın.

Senaryo: Zava Analytics alanlar arası depolar

Zava Analytics iki iş alanı kullanır:

  • Satış – müşteri siparişleri, gelir ve işlem hattı ölçümleri.
  • Pazarlama – kampanyalar, kanallar ve etkileşim ölçümleri.

Her alan adı şunu içerir:

  • Aynı çalışma alanında bir Doku Ambarı :

    • ZavaSalesWarehouse
    • ZavaMarketingWarehouse
  • Visual Studio Code'da bir veritabanı projesi:

    • Zava.Sales.Warehouse
    • Zava.Marketing.Warehouse

Uçtan uca ELT ve raporlama oluşturmak için her etki alanının diğer etki alanındaki verilere erişmek için salt okunur görünümlere sahip olması gerekir:

  • Sales müşteri tarafından pazarlama etkileşimi gerekiyor.
  • Marketing kampanyaya göre satış performansına ihtiyaç duyar.

Şunları yapmanız gerekir:

  • Veritabanı referansları aracılığıyla tek yönlü ambarlar arası bağımlılıklar oluşturun.
  • Döngüsel bağımlılıklardan kaçının.

Ambarlar arasındaki bağımlılıkların tek yönlü olduğundan emin olun

Her ambar çifti için, mantıksal bağımlılığın yönünü seçin.

Örnek:

  • Sales görevlendirme verilerine bağlıdır Marketing .
  • Marketing Sales gerekli olan nesnelere bağımlı değildir.

Uygulamada:

Zava.Sales.Warehouse bir veritabanı referansınaZava.Marketing.Warehouse sahiptir.

  • Depodaki Sales T-SQL şu şekilde üç parçalı adları kullanabilir:
    SELECT * FROM ZavaMarketingWarehouse.Marketing.CampaignEngagement
    
  • Zava.Marketing.Warehousedağıtım zamanında bağımlılık döngüsünü zorlayacak nesnelere başvurmazSales.

Tip

Her ambar çifti için basit bir ok diyagramı (SalesMarketing) çizin. Aynı tür nesne için her iki yöne işaret eden oklar bulursanız, tasarımı tek yönlü bir bağımlılığı yeniden yapılandırmak için yeniden yapıp yapın.

Döngüsel bağımlılıklardan kaçının

A Ambar ve B Ambar, motorun tek bir dağıtımda çözümleyemeyeceği şekilde birbirine bağımlı olduğunda bir döngüsel bağımlılık meydana gelir.

Sorun örneği (bunu yapmayın):

  • ZavaSalesWarehouse.dbo.CustomerRollup görünüm:
    CREATE VIEW dbo.CustomerRollup AS
    SELECT  c.CustomerId,
            c.TotalRevenue,
            m.LastCampaignId
    FROM    dbo.CustomerRevenue AS c
    LEFT OUTER JOIN   
            ZavaMarketingWarehouse.dbo.CustomerEngagement AS m
            ON c.CustomerId = m.CustomerId;
    
  • ZavaMarketingWarehouse.dbo.CampaignAttribution görünüm:
    CREATE VIEW dbo.CampaignAttribution AS
    SELECT  m.CampaignId,
            SUM(s.TotalRevenue) AS RevenueAttributed
    FROM    dbo.Campaigns AS m
    LEFT OUTER JOIN    
            ZavaSalesWarehouse.dbo.CustomerRollup AS s
            ON m.CampaignId = s.LastCampaignId
    GROUP BY m.CampaignId;
    

Bu anti-paternde:

  • CustomerRollup içinde Satış, CustomerEngagementPazarlama'ya bağlıdır.
  • CampaignAttribution Pazarlama, CustomerRollupSatış'a bağlıdır.

Bu anti-patern bir döngü oluşturur: Satış görünümü → Pazarlama görünümü → Yeniden satış görünümü.

Kılavuz:

Ambarlar arasındaki karşılıklı bağımlılıkları normal şema düzeyinde nesneler olarak modellemeyin. Gerçekten böyle bir mantığa ihtiyacınız varsa, bağımlılığın bir tarafını sorgulama sırasında iki depoyu birleştiren bir aşağı akış anlamsal modeline veya rapora taşıyın.

Veritabanı referansları aracılığıyla doğrudan çapraz depo referansları

Bu düzende, Veritabanı Başvuruları'nı kullanarak doğrudan veritabanı projelerinde tek yönlü bağımlılıkları modellemeniz gerekir.

1. Adım: Mevcut iki ambar projesinden başlayın

Zaten sahip olmanız gerekenler:

  • Zava.Sales.Warehouse → dağıtıldı ZavaSalesWarehouse
  • Zava.Marketing.Warehouse → dağıtıldı ZavaMarketingWarehouse

Her bir proje Visual Studio Code'de Depo Projeleri Geliştirin adlı kılavuzdaki adımları kullanarak oluşturulmuş veya ayıklanmıştır.

2. Adım: Satıştan Pazarlamaya veritabanı referansı ekleme

  • Visual Studio Code Database Projects görünümünü açın.
  • Projeye sağ tıklayın Zava.Sales.Warehouse .
  • Veritabanı Başvurusu Ekle...'yi seçin.
  • Bunlardan birini seçin:
    • Geçerli çalışma alanında Veritabanı projesi (Bu şekilde başvuruda bulunılan bir veritabanı projesi de Visual Studio Code'de açık olmalıdır) veya
    • Veri katmanı uygulaması (.dacpac) (Ambar için bir .dacpac oluşturduysanız, Marketing oluşturulmuş varsayılır).
  • Başvuru seçeneklerini ayarlayın:
    • Başvuru türü: Aynı sunucu, farklı veritabanı.
    • Veritabanı adı veya değişkeni: SQLCMD değişkeni kullanın, örneğin [$(MarketingWarehouseName)].
  • Sales projesini kaydedin ve yeniden oluşturun.

.sqlproj Dosyasında şuna benzer bir girdi görmeniz gerekir:

<ItemGroup>
  <ArtifactReference Include="..\Zava.Marketing.Warehouse\bin\Debug\Zava.Marketing.Warehouse.dacpac">
    <DatabaseVariableLiteralValue>$(MarketingWarehouseName)</DatabaseVariableLiteralValue>
  </ArtifactReference>
</ItemGroup>
<ItemGroup>
  <SqlCmdVariable Include="MarketingWarehouseName">
    <DefaultValue>ZavaMarketingWarehouse</DefaultValue>
  </SqlCmdVariable>
</ItemGroup>

Tip

Uzak ambar adı için bir SQLCMD değişkeni kullanmak, ambar adlarının farklı olabileceği Geliştirme/Test/Üretim gibi tüm ortamlarınızda aynı projeyi yeniden kullanmanıza olanak tanır.

3. Adım: Satış'ta ambarlar arası görünüm oluşturma

Projede, Sales projesine bir görünüm ekleyin ve bu görünüm Marketing deposundan okuma yapsın.

-- schema/Views/dbo.CustomerEngagementFact.sql
CREATE VIEW [dbo].[CustomerEngagementFact] AS
SELECT
    s.CustomerId,
    s.TotalRevenue,
    m.LatestChannel,
    m.LastEngagementDate
FROM dbo.CustomerRevenue AS s
JOIN [$(MarketingWarehouseName)].[dbo].[CustomerEngagement] AS m
    ON s.CustomerId = m.CustomerId;

Önemli noktalar:

  • Üç parçalı ad [$(MarketingWarehouseName)].[dbo].[CustomerEngagement] , Doku SQL düzenleyicisindeki ambarlar arası sorgular için kullanılan T-SQL deseni ile eşleşir.
  • DacFx, dış veritabanını veritabanı başvurusu aracılığıyla çözümler.

SQL71501 çözümlenmemiş referans hataları olmadığından emin olmak için projeyi oluşturun.

4. Adım: Pazarlama ambarını ve ardından Satışları yayımlama

Dağıtım sorunlarını önlemek için:

  • Derleme ve yayımlamaZava.Marketing.Warehouse öncelikle:
    • Projeye sağ tıklayın → Derle.
    • Projeyi sağ tıklatın → Yayımla'yı seçin → seçin ZavaMarketingWarehouse.
  • Dağıtım başarılı olduktan sonra Marketingderleyin ve yayımlayınZava.Sales.Warehouse:
    • Projeye sağ tıklayın → Derle.
    • Projeyi sağ tıklatın → Yayımla'yı seçin → seçin ZavaSalesWarehouse.

Sonuçta elde edilen dağıtım akışı:

Zava.Marketing.Warehouse (dış bağımlılık yok) → Zava.Sales.Warehouse (bağımlıdır Marketing)

Artık, ZavaSalesWarehouse içindeki herhangi bir T-SQL sorgusu, çapraz depo T-SQL kullanarak depodan dbo.CustomerEngagementFact dahili olarak okunan Marketing görünümünü kullanabilir.

Öğrenmeye devam et

  • Bu deseni kaynak kontrolü ve CI/CD rehberliğiyle geliştirme ve dağıtım ile Fabric git entegrasyon dokümantasyonuyla birleştirin.
  • Zava Analytics senaryosunu Geliştirme/Test/Üretim ortamlarını içerecek şekilde genişletin, birden fazla ambar üzerinde yayımlama sırasını düzenlemek amacıyla dağıtım işlem hatlarını veya harici CI/CD'yi kullanarak.