Giggabytes

Luku 4 · Alusta

Kiinnitetystä julkisesta tiedostosta testattuihin Gold-tauluihin

Haku, Bronze, Silver, Gold ja vienti Databricksissä: laatuportit pysäyttävät ajon, hylätyt rivit siirtyvät karanteeniin eikä niitä pudoteta hiljaa, ja infrastruktuuri on koodina.

  • 1 067 371laskuriviä lähteessäkaksi välilehteä, joulukuu 2009 – joulukuu 2011
  • SHA-256kiinnitetty lähdearkistomuuttunut lähdetiedosto keskeyttää haun
  • 3vaihetta ajetaan CI:ssä uudelleen idempotenssin todistamiseksiBronze, Silver, asiakashistoria
  • 4kerrosta laatuporttejahylätyt rivit karanteeniin raakatietueen kanssa

Päästä päähän

Yksi Databricks-ajo käsittelee kerrokset järjestyksessä, ja kalenteri, asiakashistoria ja simuloidut kampanjat rakennetaan rinnakkain Silver-kerroksesta. Jokainen vaihe kirjaa ajonsa tauluun ops.pipeline_runs ja tarkistuksensa tauluun ops.dq_results.

Kiinnitetystä julkisesta tiedostosta testattuihin Gold-tauluihindatabricks.yml, ajo rdi-pipeline · samat vaiheet ajetaan CI:ssä oikealla datalla

Haku lataa julkisen arkiston ja tarkistaa sen koon ja SHA-256-tarkistussumman. Bronze tallentaa jokaisen sarakkeen tekstinä alkuperätietoineen, kerran tiedostoa kohden. Silver soveltaa kanonista mallia yhdellä atomisella MERGE-operaatiolla entiteettiä kohden error-tason laatuporttien takana ja siirtää hylätyt rivit karanteeniin. Gold rakennetaan dbt:llä, mukaan lukien kalenteri-, asiakashistoria- ja kampanjataulut, ja se testataan Silveriä vasten. Vienti kirjoittaa Parquet-tiedostot ja täsmäytyssummat BI-käyttöön.

  1. HakuKiinnitetty latausKoko ja SHA-256 tarkistetaan, kolme uudelleenyritystä, atominen manifesti.
    • landing/
  2. BronzeSellaisenaanJokainen sarake tekstinä alkuperätietoineen; jo sisäänluettu tiedosto ohitetaan.
    • bronze.*
  3. SilverKanoninen malliYksi atominen MERGE entiteettiä kohden, porttien takana ennen kirjoitusta ja sen jälkeen.
    • transaction_line
    • customer
    • product
    • quarantine
  4. GoldFaktat, dimensiot, martitdbt-mallit ja -testit sekä kalenteri-, asiakas- ja kampanjataulut.
    • fct_transaction_line
    • dim_date
    • mart_*
  5. VientiPower BI:lleParquet sekä summat, jotka Power BI:n semanttisen mallin on toistettava täsmälleen.
    • *.parquet
    • reconciliation.json

Data

UCI Online Retail II: brittiläinen verkkokauppias, joka myy lahjatavaroita ja jonka asiakkaista monet ovat tukkuostajia. Kaksi välilehteä, joissa on 525 461 ja 541 910 riviä, kattavat ajan 1.12.2009–9.12.2011. Ne ovat päällekkäin yhdeksän päivän ajalta, joten 22 523 riviä esiintyy molemmissa. Kunkin rivin toinen esiintymä poistetaan kaksoiskappaleena, jotta riviä ei lasketa kahdesti. Viidesosasta neljäsosaan riveistä puuttuu asiakastunnus: nämä rivit lasketaan silti myyntiin mutta eivät asiakasmittareihin.

Laatuportit

Kaksi vakavuustasoa ja yksi sääntö: error pysäyttää dataputken, warn kirjataan ja ajo jatkuu. Validoinnissa hylättyjä rivejä ei pudoteta hiljaa: ne siirtyvät tauluun silver.quarantine raakatietueen kanssa, joten jokainen aukko voidaan selittää.

Mitä kukin kerros ei päästä läpibronze.py · silver.py · uci_online_retail_ii.py · dbt-testit

Bronze tarkistaa, että rivimäärät vastaavat ladattua tiedostoa ja lähderivit ovat yksilöllisiä, ja varoittaa täsmälleen samoista riveistä. Silver tarkistaa ennen kirjoitusta, että avaimet ovat yksilöllisiä, pakolliset kentät ovat mukana, rivityypit ovat kelvollisia, summa on määrä kertaa hinta ja myyntimäärät ovat positiivisia; kirjoituksen jälkeen se tarkistaa, että viittaukset ovat olemassa ja ettei Silverissä ole minkään tiedoston osalta enempää rivejä kuin Bronzessa. Rivit, joilta puuttuu tunniste tai joiden arvoja ei voi jäsentää, siirtyvät karanteeniin. Goldin dbt-testit täsmäyttävät nettomyynnin ja rivimäärät Silveriin.

Käyttöönotto ja CI

Alusta on määritelty koodina. Terraform luo tallennustilan, Databricks-työtilan ja Unity Catalogin skeemoineen ja käyttöoikeuksineen. Databricks Asset Bundle määrittelee ajon kehitys- ja tuotantoympäristöön; tuotannossa se ajetaan palvelutunnuksella (service principal). Jokainen muutos käynnistää kolme CI-työtä, joista viimeinen ajaa koko dataputken oikealla aineistolla.

Mitä jokaisessa muutoksessa ajetaan.github/workflows/ci.yml · terraform/ · databricks.yml

Jokaisessa muutoksessa ajetaan kolme CI-työtä. Python-tarkistukset: lint, muotoilu, testit ja clean room -skannaus. Infrastruktuuri ja tietoturva: salaisuuksien skannaus koko historiasta, Terraformin muotoilu ja validointi sekä bundlen skeemavalidointi. Dataputki oikealla datalla: jokainen vaihe hausta vientiin, ja Bronze, Silver ja asiakashistoria ajetaan uudelleen idempotenssin todistamiseksi. Käyttöönotossa on Terraform-moduulit tallennustilalle, Databricks-työtilalle ja Unity Catalogille sekä Databricks Asset Bundle, jossa on dev- ja prod-kohteet.