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. Mevcut iki ambar projesinden başlayıp veritabanı başvurularını ve gerektiğinde dağıtım öncesi ve dağıtım sonrası betiklerini kullanarak bunlar arasındaki tek yönlü bağımlılıkları yapılandırabilirsiniz.
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 iki yönde de işaret eden oklar bulursanız, tek yönlü bağımlılığı yeniden sağlamak için tasarımı yeniden düzenleyin.
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. Bu tür bir mantığa gerçekten ihtiyacınız varsa bağımlılığın bir tarafını şuraya taşıyın:
- Dağıtım sonrası betiği veya
- Sorgulama esnasında iki ambarı birleştiren aşağı akış semantik modeli veya raporu.
Dağıtıma duyarlı ambarlar arası mantık için dağıtım öncesi ve sonrası betikleri kullanın
Ambar dağıtımları tam şema farklılaştırma işlemleridir (nesne başına kısmi dağıtımlar olmadığından), ambarlar arası öğeleri dikkatli bir şekilde işleyin.
Ambar A ve Ambar B'nin birbirine bağlı nesnelere ihtiyacı varsa:
- Her ambar projesinde çekirdek tabloları ve çekirdek görünümleri tutun.
- Döngüler oluşturan köprü görünümlerini veya yardımcı program nesnelerini tek bir projede dağıtım öncesi veya dağıtım sonrası betiklere taşıyın.
- Bu betiklerin idempotent olduğundan ve yeniden çalıştırılması güvenli olduğundan emin olun.
Örnek desenler:
- Dağıtım öncesi betiği: Bunu bozacak şema değişikliklerini uygulamadan önce geçici olarak ambarlar arası görünümü bırakın.
- Dağıtım sonrası betiği: Her iki ambar da dağıtıldıktan sonra çapraz ambar görünümünü yeniden oluşturun veya güncelleştirin.
Daha fazla bilgi ve örnek için bkz. Fabric Data Warehouse için dağıtım öncesi ve dağıtım sonrası betikleri.
Örüntü 1: Veritabanı referansları yoluyla doğrudan çapraz depo referansları
Bu desende, veritabanı projelerinde Veritabanı Referansları kullanılarak tek yönlü bağımlılıkları doğrudan modellersiniz.
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 projeyi Visual Studio Code'ta Depo projeleri geliştir adımlarını kullanarak oluşturun veya çıkarın.
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.
- Aşağıdaki seçeneklerden birini belirleyin:
- Mevcut çalışma alanında veritabanı projesi (ayrıca referanslı veritabanı projesini Visual Studio Code'da açın), veya
-
Veri seviyesi uygulaması (.dacpac) (depo için bir
.dacpacMarketingoluşturduysanız bu seçeneği kullanın).
- 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 depo adı için SQLCMD değişkeni kullanarak, aynı projeyi Dev, Test ve Prod gibi tüm ortamlarınızda tekrar kullanabilirsiniz.
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, harici veritabanını veritabanı referansı aracılığıyla çözer.
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, Geliştirme ve dağıtım bölümündeki kaynak denetimi ve CI/CD yönergeleriyle ve Fabric Git tümleştirme belgeleriyle 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.