Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Tässä artikkelissa opit, miten mallintaa ja ottaa käyttöön varastoriippuvuuksia SQL-tietokantaprojekteilla Visual Studio Code -ohjelmassa. Aloitat kahdesta olemassa olevasta varastoprojektista ja konfiguroit yksisuuntaiset riippuvuudet niiden välillä käyttämällä tietokantaviittauksia ja tarvittaessa esi- ja jälkiasennusskriptejä.
Tämä artikkeli rakentaa Develop varastoprojektit Visual Studio Code konsepteille ja olettaa, että olet jo valmis rakentamaan ja julkaisemaan yhden varastoprojektin.
Ennakkovaatimukset
Ennen kuin aloitat, varmista, että:
- Luo kaksi kangasvarastoa samaan työtilaan.
- Uuden näytevaraston luomiseksi katso Luo näytevarasto Microsoft Fabric.
- Luo tai poimi tietokantaprojekti jokaiselle varastolle Visual Studio Code.
- Luodaksesi tietokantaprojektin nykyiselle varastollesi tai uudelle varastolle, katso Kehitä varastoprojektit Visual Studio Code.
- Asenna Visual Studio Code työasemallesi.
- Asenna .NET SDK rakentaaksesi ja julkaisaksesi tietokantaprojekteja.
- Asenna kaksi Visual Studio Code-laajennusta: SQL Database Projects ja SQL Server (mssql).
- Voit asentaa tarvittavat laajennukset suoraan Visual Studio Code -markkinapaikalta hakemalla "SQL Database Projects" tai "SQL Server (mssql)".
- Varastoprojektit validoivat, rakentavat ja voidaan julkaista Visual Studio Code-muodossa.
Note
Tämä artikkeli keskittyy varastoprojekteihin vuonna Visual Studio Code ja siihen, miten ne versiotaan Gitissä tavallisina koodiprojekteina. Fabric Git -integraatio työtiloille ja varasto-esineille käsitellään erikseen Development and Deployment- ja Git-integraatioissa. Artikkeli olettaa, että Fabric-työtilasi on käyttöönoton kohde ja T-SQL-skeema sijaitsee yhdessä tai useammassa Visual Studio Code -projektissa, joita versiota ohjaat Gitissä.
Tämä artikkeli ei käsitteleLakehousen SQL-analytiikan päätepisteen cross-warehouse-kehitystä. Lakehouse-taulukoita ja SQL-analytiikan päätepiste-objekteja ei seurata versiossa samalla tavalla kuin varastoprojekteja. Käytä Warehouse-elementtejä tietokantaprojektien kanssa täydelliseen git-integraatioon ja käyttöönottotukeen Fabricin natiivikokemuksissa ja asiakastyökaluissa.
Skenaario: Zava Analyticsin monitoimivarastot
Zava Analytics käyttää kahta liiketoiminta-aluetta:
- Myynti – asiakastilaukset, liikevaihto ja putkistomittarit.
- Markkinointi – kampanjat, kanavat ja sitoutumismittarit.
Jokaisella alueella on:
Kangasvarasto samassa työtilassa:
ZavaSalesWarehouseZavaMarketingWarehouse
tietokantaprojekti vuonna Visual Studio Code:
Zava.Sales.WarehouseZava.Marketing.Warehouse
Päästä päähän -ELT:n ja raportoinnin rakentamiseksi jokainen toimialue tarvitsee vain luku -näkymiä päästäkseen käsiksi toisen domainin tietoihin:
-
Salesvaatii asiakaskohtaista markkinointivuorovaikutusta. -
MarketingTarvitsee myyntituloksia kampanjan mukaan.
Sinun täytyy tehdä seuraavat asiat:
- Määritä yksisuuntaiset ristivarastoriippuvuudet tietokantaviitteiden avulla.
- Vältä syklisiä riippuvuuksia.
Varmista, että varastojen väliset riippuvuudet ovat yksisuuntaisia
Jokaiselle varastoparille valitse suunta loogiselle riippuvuudelle:
Esimerkki:
-
SalesRiippuuMarketingsitoutumisdatasta. -
Marketingei riipuSalesmistään käyttöönoton aikana tarvittavista objekteista.
Käytännössä:
Zava.Sales.Warehouseon tietokantaviittaus .Zava.Marketing.Warehouse
- T-SQL varastossa
Salesvoi käyttää kolmiosaisia nimiä, kuten:SELECT * FROM ZavaMarketingWarehouse.Marketing.CampaignEngagement -
Zava.Marketing.Warehouseei viittaaSalesobjekteihin, jotka pakottaisivat riippuvuussyklin käyttöönoton aikana.
Vihje
Jokaiselle varastoparille piirretään yksinkertainen nuolikaavio (Sales → Marketing). Jos löydät nuolia, jotka osoittavat molempiin suuntiin saman tyyppisessä objektissa, refaktoroi suunnittelu palauttaaksesi yksisuuntaisen riippuvuuden.
Vältä syklisiä riippuvuuksia
Syklinen riippuvuus syntyy, kun varasto A ja varasto B ovat molemmat riippuvaisia toisistaan tavalla, jota moottori ei pysty ratkaisemaan yhdellä käyttöönotolla.
Ongelmaesimerkki (älä tee tätä):
-
ZavaSalesWarehouse.dbo.CustomerRollupnäkymä: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.CampaignAttributionnäkymä: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;
Tässä anti-kuviossa:
-
CustomerRollupMyynnissä riippuuCustomerEngagementmarkkinoinnista. -
CampaignAttributionMarkkinoinnissa riippuuCustomerRollupmyynnistä.
Tämä anti-kuvio luo syklin: Myyntinäkymä → Markkinointinäkymä → Myyntinäkymä uudelleen.
Ohjaus:
Älä mallintaa varastojen välisiä keskinäisiä riippuvuuksia tavallisina skeematason objekteina. Jos todella tarvitset tällaista logiikkaa, siirrä toinen riippuvuuden puoli seuraavaan:
- Jälki-asennusskripti, tai
- Alavirran semanttinen malli tai raportti , joka yhdistää kaksi varastoa kyselyn yhteydessä.
Käytä ennen ja jälkeen käyttöönottoa sisältäviä skriptejä käyttöönoton arkaluontoiseen cross-warehouse-logiikkaan
Koska varaston käyttöönotot ovat kokonaisia skeemadiff-operaatioita (ei osittaisia objektikohtaisia käyttöönottoja), käsittele varastojen väliset kohteet huolellisesti:
Jos sekä varasto A että varasto B tarvitsevat toisiinsa riippuvia objekteja:
- Pidä ydintaulukot ja ydinnäkymät jokaisessa varastoprojektissa.
- Siirrä siltanäkymät tai työkaluobjektit , jotka luovat syklejä, esi - tai jälkiasennusskripteihin yhdessä projektissa.
- Varmista, että nämä skriptit ovat idempotentteja ja turvallisia uudelleenajottavia.
Esimerkkikuvioita:
- Ennen käyttöönottoa skripti: pudota väliaikaisesti poikkivarastonäkymä ennen kuin skeemamuutoksia sovelletaan, jotka rikkoisivat sen.
- Käyttöönoton jälkeinen skripti: luo tai päivitä varastojen välinen näkymä uudelleen, kun molemmat varastot on otettu käyttöön.
Lisätietoja ja esimerkkejä löytyy kohdasta Pre-deployment ja post-deployment scripts for Fabric tietovarasto.
Malli 1: Suora ristiinvarastoviittaukset tietokantaviitteiden kautta
Tässä mallissa mallinnat yksisuuntaisia riippuvuuksia suoraan tietokantaprojekteissa käyttämällä tietokantaviitteitä.
Vaihe 1: Aloita kahdesta olemassa olevasta varastoprojektista
Sinun pitäisi jo tietää:
-
Zava.Sales.Warehouse→ lähetettyZavaSalesWarehouse -
Zava.Marketing.Warehouse→ lähetettyZavaMarketingWarehouse
Luo tai purkaa jokainen projekti käyttämällä Develop warehouse projects -vaiheita Visual Studio Code:ssa.
Vaihe 2: Lisää tietokantaviite myynnistä markkinointiin
- Vuonna Visual Studio Code avaa Database Projects -näkymä.
- Napsauta
Zava.Sales.Warehouseprojektia oikealla. - Valitse Lisää tietokantaviite....
- Valitse jokin seuraavista vaihtoehdoista:
- Tietokantaprojekti nykyisessä työtilassa (avaa myös viitattu tietokantaprojekti Visual Studio Code:ssa), tai
-
Data-tier-sovellus (.dacpac) (käytä tätä vaihtoehtoa, jos olet rakentanut
.dacpaca:nMarketingvarastolle).
- Aseta viitevaihtoehdot:
- Viitetyyppi: Sama palvelin, eri tietokanta.
-
Tietokannan nimi tai muuttuja: Käytä SQLCMD-muuttujaa, esimerkiksi
[$(MarketingWarehouseName)].
- Tallenna ja rakenna myyntiprojekti uudelleen.
Tiedostossa .sqlproj pitäisi näkyä merkintä, joka on samankaltainen:
<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>
Vihje
Käyttämällä SQLCMD-muuttujaa etävaraston nimenä voit käyttää samaa projektia uudelleen kaikissa ympäristöissäsi, kuten Devissä, Testissä ja Tuotannossa.
Vaihe 3: Luo varastoinvälinen näkymä myyntiin
Lisää projektiin Sales näkymä, joka näyttää varastosta Marketing :
-- 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;
Avainkohdat:
- Kolmiosainen nimi
[$(MarketingWarehouseName)].[dbo].[CustomerEngagement]vastaa T-SQL-mallia, jota käytetään Fabric SQL -editorissa poikkivarastokyselyissä. - DacFx ratkaisee ulkoisen tietokannan tietokantaviitteen kautta.
Rakenna projekti niin, ettei ole SQL71501 ratkaisemattomia viitevirheitä .
Vaihe 4: Julkaise markkinointivarasto ja sitten myynti
Välttääksesi käyttöönotto-ongelmia:
-
Rakenna ja julkaise
Zava.Marketing.Warehouseensimmäinen:- Napsauta hiiren oikealla Projekti → Rakenna.
- Napsauta hiiren oikealla projektia → Julkaise → valitse
ZavaMarketingWarehouse.
- Kun
Marketingkäyttöönotto onnistuu, rakenna ja julkaiseZava.Sales.Warehouse:- Napsauta hiiren oikealla Projekti → Rakenna.
- Napsauta hiiren oikealla projektia → Julkaise → valitse
ZavaSalesWarehouse.
Tuloksena syntyvä käyttöönotto on:
Zava.Marketing.Warehouse (ei ulkoisia riippuvuuksia) → Zava.Sales.Warehouse (riippuu Marketing)
Nyt mikä tahansa T-SQL-kysely ZavaSalesWarehouse voi käyttää dbo.CustomerEngagementFact näkymää, joka lukee Marketing sisäisesti varastosta cross-warehouse T-SQL:n avulla.
Jatka oppimista
- Yhdistä tämä kaava version version hallintaan ja CI/CD-ohjeisiinkehityksessä ja käyttöönotossa sekä Fabric git -integraatiodokumentaatiossa.
- Laajenna Zava Analytics -skenaariota kattamaan Dev/Test/Prod-ympäristöt , käyttäen käyttöönottoputkia tai ulkoista CI/CD:tä julkaisutilausten järjestämiseen useiden varastojen välillä.