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.
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.
- Var olan ambarınız veya yeni bir ambar için veritabanı projesi oluşturmak amacıyla bkz.: Visual Studio Code'da ambar projeleri geliştirin.
- İş 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
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ı :
ZavaSalesWarehouseZavaMarketingWarehouse
Visual Studio Code'da bir veritabanı projesi:
Zava.Sales.WarehouseZava.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:
-
Salesmüşteri tarafından pazarlama etkileşimi gerekiyor. -
Marketingkampanyaya 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:
-
Salesgörevlendirme verilerine bağlıdırMarketing. -
MarketingSalesgerekli olan nesnelere bağımlı değildir.
Uygulamada:
Zava.Sales.Warehouse
bir veritabanı referansınaZava.Marketing.Warehouse sahiptir.
- Depodaki
SalesT-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ı (Sales → Marketing) ç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.CustomerRollupgö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.CampaignAttributiongö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:
-
CustomerRollupiçinde Satış,CustomerEngagementPazarlama'ya bağlıdır. -
CampaignAttributionPazarlama,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
.dacpacoluşturduysanız,Marketingoluş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ımlama
Zava.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.