Kehitä ja ottaa käyttöön varastoinvälisiä riippuvuuksia

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ä tietokantaviitteitä.

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.
  • Luo tai poimi tietokantaprojekti jokaiselle varastolle 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:

    • ZavaSalesWarehouse
    • ZavaMarketingWarehouse
  • tietokantaprojekti vuonna Visual Studio Code:

    • Zava.Sales.Warehouse
    • Zava.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:

  • Sales vaatii asiakaskohtaista markkinointivuorovaikutusta.
  • Marketing Tarvitsee 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:

  • Sales Riippuu Marketing sitoutumisdatasta.
  • Marketing ei riipu Sales mistään käyttöönoton aikana tarvittavista objekteista.

Käytännössä:

Zava.Sales.Warehouseon tietokantaviittaus .Zava.Marketing.Warehouse

  • T-SQL varastossa Sales voi käyttää kolmiosaisia nimiä, kuten:
    SELECT * FROM ZavaMarketingWarehouse.Marketing.CampaignEngagement
    
  • Zava.Marketing.Warehouse ei viittaa Sales objekteihin, jotka pakottaisivat riippuvuussyklin käyttöönoton aikana.

Vihje

Jokaiselle varastoparille piirretään yksinkertainen nuolikaavio (SalesMarketing). 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.CustomerRollup nä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.CampaignAttribution nä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:

  • CustomerRollup Myynnissä riippuu CustomerEngagementmarkkinoinnista.
  • CampaignAttribution Markkinoinnissa riippuu CustomerRollupmyynnistä.

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 alavirran semanttiseen malliin tai raporttiin , joka yhdistää nämä kaksi varastoa hakuvaiheessa.

Suorat ristiinvarastoviittaukset tietokantaviitteiden kautta

Tässä mallissa mallinnat yksisuuntaisia riippuvuuksia suoraan tietokantaprojekteissa käyttäen Database Referencesia.

Vaihe 1: Aloita kahdesta olemassa olevasta varastoprojektista

Sinun pitäisi jo tietää:

  • Zava.Sales.Warehouse → lähetetty ZavaSalesWarehouse
  • Zava.Marketing.Warehouse → lähetetty ZavaMarketingWarehouse

Jokainen projekti luotiin tai poimittiin Develop varastoprojektien Visual Studio Code vaiheilla.

Vaihe 2: Lisää tietokantaviite myynnistä markkinointiin

  • Vuonna Visual Studio Code avaa Database Projects -näkymä.
  • Napsauta Zava.Sales.Warehouse projektia oikealla.
  • Valitse Lisää tietokantaviite....
  • Valitse jompi:
    • tietokantaprojekti nykyisessä työtilassa (Tällä tavalla viitattu tietokantaprojekti on myös avattava Visual Studio Code), tai
    • Datatier-sovellus (.dacpac) (Oletetaan, että olet rakentanut, jos sinulla on varastolle rakennettu .dacpacMarketing ).
  • 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

SQLCMD-muuttujan käyttäminen etävaraston nimeksi antaa mahdollisuuden käyttää samaa projektia uudelleen kaikissa ympäristöissä, kuten Dev/Test/Prod, joissa varastojen nimet voivat vaihdella.

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 julkaiseZava.Marketing.Warehouse ensimmäinen:
    • Napsauta hiiren oikealla Projekti → Rakenna.
    • Napsauta hiiren oikealla projektia → Julkaise → valitse ZavaMarketingWarehouse.
  • Kun Marketing kä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ä.