Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
I denne artikkelen lærer du hvordan du modellerer og distribuerer avhengigheter på tvers av varelager ved å bruke SQL-databaseprosjekter i Visual Studio Code. Du starter fra to eksisterende lagerprosjekter og konfigurerer enveisavhengigheter mellom dem ved å bruke databasereferanser.
Denne artikkelen bygger videre på konseptene i Utvikle lagerprosjekter i Visual Studio Code og forutsetter at du allerede er komfortabel med å bygge og publisere ett enkelt lagerprosjekt.
Forutsetninger
Før du begynner, må du sørge for at du:
-
Opprett to Fabric Warehouses i samme arbeidsområde.
- For å opprette et nytt eksempelvarehus, se Opprett et eksempelvarehus i Microsoft Fabric.
- Lag eller hent ut et databaseprosjekt for hvert lager i Visual Studio Code.
- For å opprette et databaseprosjekt for ditt eksisterende lager eller et nytt lager, se Utvikle lagerprosjekter i Visual Studio Code.
- Installer Visual Studio Code på arbeidsstasjonen din.
- Installer SDK-en .NET for å bygge og publisere databaseprosjekter.
- Installer to Visual Studio Code utvidelser: SQL Database Projects og SQL Server (mssql).
- Du kan installere de nødvendige utvidelsene direkte fra Visual Studio Code Marketplace ved å søke på "SQL Database Projects" eller "SQL Server (mssql)".
- Lagerprosjektene validerer, bygger og kan publiseres i Visual Studio Code.
Note
Denne artikkelen fokuserer på warehouse-prosjekter i Visual Studio Code og hvordan du versjonerer dem i Git som vanlige kodeprosjekter. Fabric Git-integrasjon for arbeidsområder og lagervarer dekkes separat i Development and Deployment ogGit-integrasjon. Artikkelen antar at Fabric-arbeidsområdet ditt er distribusjonsmålet, og at T-SQL-skjemaet ligger i ett eller flere Visual Studio Code-prosjekter som du versjonskontrollerer i Git.
Denne artikkelen dekker ikke tverrlagerutvikling for SQL-analyseendepunktet til et Lakehouse. Lakehouse-tabeller og SQL-analyse-endepunktobjekter er ikke sporede objekter i kildekode på samme måte som warehouse-prosjekter. Bruk Warehouse-elementer med databaseprosjekter for fullstendig git-integrasjon og distribusjonsstøtte i Fabric native opplevelser og klientverktøy.
Scenario: Zava Analytics tverrdomenelagre
Zava Analytics bruker to forretningsområder:
- Salg – kundeordrer, inntekter og pipeline-målinger.
- Markedsføring – kampanjer, kanaler og engasjementsmålinger.
Hvert domene har:
Et tekstillager i samme arbeidsområde:
ZavaSalesWarehouseZavaMarketingWarehouse
Et databaseprosjekt i Visual Studio Code:
Zava.Sales.WarehouseZava.Marketing.Warehouse
For å bygge ende-til-ende ELT og rapportering, trenger hvert domene skrivebeskyttede visninger for å få tilgang til data fra det andre domenet:
-
SalesTrenger markedsføringsengasjement fra kunden. -
MarketingTrenger salgsytelse per kampanje.
Du må:
- Etabler enveis avhengigheter på tvers av varehus via databasereferanser.
- Unngå sykliske avhengigheter.
Sørg for at avhengighetene mellom lagrene er enveiskjørte
For hvert par av lager, velg en retning for logisk avhengighet:
Eksempel:
-
SalesDet avhenger avMarketingengasjementsdata. -
MarketingAvhenger ikke avSalesfor objekter som trengs ved deployering.
I praksis:
Zava.Sales.Warehouse har en databasereferanse til Zava.Marketing.Warehouse.
- T-SQL i lageret
Saleskan bruke tredelte navn som:SELECT * FROM ZavaMarketingWarehouse.Marketing.CampaignEngagement -
Zava.Marketing.Warehouserefererer ikke tilSalesobjekter som ville tvinge frem en avhengighetssyklus ved utrullingstidspunkt.
Tips
For hvert par av lagerbygninger, tegn et enkelt pildiagram (Sales → Marketing). Hvis du finner piler som peker i begge retninger for samme type objekt, refaktorerer du designet for å gjenopprette en enveisavhengighet.
Unngå sykliske avhengigheter
En syklisk avhengighet oppstår når Lager A og Lager B begge er avhengige av hverandre på en måte som motoren ikke kan løse i én enkelt utrulling.
Problemeksempel (ikke gjør dette):
-
ZavaSalesWarehouse.dbo.CustomerRolluputsikt: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.CampaignAttributionutsikt: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;
I dette anti-mønsteret:
-
CustomerRollupi salg avhenger avCustomerEngagementi markedsføring. -
CampaignAttributioni markedsføring avhengerCustomerRollupav i salg.
Dette anti-mønsteret skaper en syklus: Salgsperspektiv → Markedsføringsperspektiv → Salgsperspektiv igjen.
Veiledning:
Ikke modellere gjensidige avhengigheter mellom lagre som vanlige skjema-nivåobjekter. Hvis du virkelig trenger denne typen logikk, flytt den ene siden av avhengigheten inn i en nedstrøms semantisk modell eller rapport som kobler de to lagrene sammen ved spørringstidspunktet.
Direkte tverrlagerreferanser via databasereferanser
I dette mønsteret modellerer du enveisavhengigheter direkte i databaseprosjektene ved hjelp av Database References.
Steg 1: Start med to eksisterende lagerprosjekter
Du bør allerede ha:
-
Zava.Sales.Warehouse→ utplassert tilZavaSalesWarehouse -
Zava.Marketing.Warehouse→ utplassert tilZavaMarketingWarehouse
Hvert prosjekt ble opprettet eller hentet ut ved hjelp av stegene i Utvikle lagerprosjekter i Visual Studio Code.
Trinn 2: Legg til en databasereferanse fra salg til markedsføring
- I Visual Studio Code, åpne visningen Database Projects.
- Høyreklikk på prosjektet
Zava.Sales.Warehouse. - Velg Legg til databasereferanse....
- Velg en av:
- Databaseprosjekt i nåværende arbeidsområde (Et databaseprosjekt som refereres til på denne måten må også være åpent i Visual Studio Code), eller
-
Data-tier applikasjon (.dacpac) (Forutsetter at du har bygget hvis du har bygget
.dacpacforMarketinglageret).
- Sett referansealternativene:
- Referansetype: Samme server, annen database.
-
Databasenavn eller variabel: Bruk for eksempel
[$(MarketingWarehouseName)]en SQLCMD-variabel.
- Lagre og bygge opp salgsprosjektet på nytt.
I .sqlproj filen skal du se en oppføring som ligner:
<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>
Tips
Ved å bruke en SQLCMD-variabel for navnet på det eksterne lageret kan du gjenbruke det samme prosjektet i alle miljøene dine, som Dev/Test/Prod, hvor warehouse-navnene kan variere.
Steg 3: Lag en tverrlagervisning i Sales
I Sales prosjektet legg til en visning som leses fra Marketing lageret:
-- 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;
Nøkkelpunkter:
- Det tredelte navnet
[$(MarketingWarehouseName)].[dbo].[CustomerEngagement]samsvarer med T-SQL-mønsteret som brukes for cross-warehouse-spørringer i Fabric SQL-editoren. - DacFx løser den eksterne databasen via databasereferansen.
Bygg prosjektet for å sikre at det ikke finnes SQL71501 uløste referansefeil .
Trinn 4: Publiser markedsføringslageret, deretter salg
For å unngå utrullingsproblemer:
-
Bygg og publiser
Zava.Marketing.Warehouseførste:- Høyreklikk prosjekt → Bygg.
- Høyreklikk prosjekt → Publiser → velg
ZavaMarketingWarehouse.
- Når
Marketingutrullingen lykkes,Zava.Sales.Warehouse:- Høyreklikk prosjekt → Bygg.
- Høyreklikk prosjekt → Publiser → velg
ZavaSalesWarehouse.
Den resulterende distribusjonsflyten er:
Zava.Marketing.Warehouse (ingen eksterne avhengigheter) → Zava.Sales.Warehouse (avhenger av Marketing)
Nå kan enhver T-SQL-spørring bruke ZavaSalesWarehouse visningen dbo.CustomerEngagementFact , som internt leser fra Marketing lageret ved hjelp av tverrlager-T-SQL.
Fortsett læringen
- Kombiner dette mønsteret med kildekode og CI/CD-veiledning i utvikling og distribusjon samt dokumentasjon for Fabric git-integrasjon.
- Utvid Zava Analytics-scenariet til å inkludere Dev/Test/Prod-miljøer , ved å bruke distribusjonspipelines eller ekstern CI/CD for å orkestrere publiseringsordre på tvers av flere lagre.