Optimoi Lakehouse-taulukot terveystarkastusten perusteella

Soveltaa:✅ SQL-analytiikkapäätepiste Microsoft Fabric

Tässä opetusohjelmassa opit, miten rakentaa Microsoft Fabric Pipeline älykästä taulukkoylläpitoa varten.

Tämä ratkaisu kutsuu Lakehousen SQL-analytiikkapäätepisteessä olevan sys.sp_get_table_health_metrics T-SQL-tallennetun proseduurin, arvioi tuloksen ja suorittaa OPTIMIZE vain, kun taulu tarvitsee ylläpitoa. Tämä "tarkista ja toimi" -malli estää tarpeettomat laskentakulut terveille tauluille ja varmistaa, että heikentyneet taulukot säilyvät automaattisesti.

Miksi ylläpito on välttämätöntä

Lakehouse-taulukot voivat ajan myötä kerätä liikaa pieniä Parquet-tiedostoja, mikä heikentää kyselyjen suorituskykyä SQL-analytiikan päätepisteessä.

Sen sijaan, että tämä putki toimisi OPTIMIZE kiinteällä aikataululla riippumatta taulun tilasta, se tekee tietoon perustuvan päätöksen: se tarkistaa ensin taulun kunnon ja käynnistää optimoinnin vain, kun poikkeama havaitaan.

Edellytykset

Ennen kuin aloitat, varmista, että sinulla on:

Ratkaisurakenne

Valmiin putkiston rakenne on seuraava:

  1. Skriptitoiminta: Suoritetaan sp_get_table_health_metrics kohdetaulua vastaan ja palauttaa taulukon terveysmittarit rakenteellisina tuotoksina.
  2. If Condition -aktiviteetti: Lukee PotentialAnomalyType suoraan Skriptin tulosteesta ja tarkistaa, onko se suurempi kuin nolla. Lisätietoja PotentialAnomalyType, katso Mahdolliset anomaliatyyppikoodit.
  3. Muistikirjan toiminta ( True-haaran sisällä): Toimii OPTIMIZE pöydällä Spark-muistikirjasta.

Tämän tutoriaalin lopussa sinulla on muistikirja, joka ottaa parametreja putkesta ja optimoi taulukon, kun se aktivoituu.

Vaihe 1: Luo optimointivihko

Muistikirja hyväksyy kohde-Lakehousen, skeeman ja taulun nimen parametreina putkesta ja suorittaa OPTIMIZE sitten Spark SQL:llä.

  1. Valitse Fabric-työtilassasi + Uusi esine>Notebook.
  2. Nimeä muistikirja Optimize-Table.
  3. Sijainnista valitse Lakehouse, jossa tarkistamasi taulukot säilytetään. Tässä harjoituksessa käytetään Lakehousea nimeltä SalesDataLakehouse.
  4. Valitse Luo.

Lisää parametrisolu

Ensimmäinen solu määrittää muuttujat, jotka putki ohittaa ajonaikaisesti.

  1. Ensimmäiseen soluun syötä seuraavat parametrit. Arvot eivät ole tärkeitä, ja putki ohittaa ne ajonaikaisesti.

    # Parameters 
    lakehouse_name = "<LakehouseName>"
    schema_name    = "<SchemaName>"
    table_name     = "<TableName>"
    

    Tärkeää

    Miten parametrisointi toimii Fabric-muistikirjoissa: Ajonaikaisesti Fabric injektoi uuden solun heti parametrisolun jälkeen, joka uudelleenmäärittää nämä muuttujat putkiston välittämillä arvoilla. Tässä asettamasi arvot vain alusttavat muuttujat ja parantavat luettavuutta.

  2. Valitse soluvalikko (...) >Vaihda parametrisolu merkitsemään tämä solu parametrisoluksi.

Lisää OPTIMAL-solu

Komento OPTIMIZE on Spark SQL -komento, ei T-SQL-komento. Sinun täytyy ajaa se Spark-ympäristöissä, kuten muistikirjoissa, Spark-tehtävämäärittelyissä tai Lakehouse Maintenance -käyttöliittymässä. SQL-analytiikan päätepiste ja Warehouse SQL -kyselyeditori eivät tue tätä komentoa suoraan.

  1. Toisessa solussa syötetään:

    full_name = f"{lakehouse_name}.{schema_name}.{table_name}"
    print(f"Optimizing {full_name} ...")
    
    result = spark.sql(f"OPTIMIZE {full_name}")
    result.show(truncate=False)
    
  2. Lisää Markdown-soluja tarpeen mukaan, jotta muistikirja dokumentoidaan oikein muille käyttäjille. Lopullisen muistikirjasi tulisi näyttää suunnilleen seuraavalta:

    Kuvakaappaus Fabric-muistikirjasta, jonka otsikko on 'Optimize a Lakehouse table when health checks show it needed', jossa on kaksi PySpark-solua: toinen asettaa pipeline-mukanaan Lakehouse-, skeema- ja tauluparametrit, ja toinen suorittaa OPTIMAL-komennon valitulle Lakehouse-taululle.

Muistio

Tässä esimerkissä tarkastellaan Lakehousea, jossa skeemat ovat käytössä. Säädä kolmiosaista nimeä full_name sen mukaan, jos et käytä Lakehouse-skeemoja.

Vaihe 2: Luo putki

  1. Fabric-työtilassasi valitse + New item>Pipeline.

  2. Nimeä putkiston tarkistus- ja optimointitaulukko.

  3. Valitse putkiston kankaan tausta ja avaa sitten parametrit-välilehti. Lisää kolme parametria:

    Nimi Tyyppi Oletusarvo
    lakehouse_name Merkkijono SalesDataLakehouse
    schema_name Merkkijono dbo
    table_name Merkkijono FactSales

Vaihe 3: Lisää skriptitoiminto

Skriptitoiminto toimii sys.sp_get_table_health_metrics SQL-analytiikkapäätepisteellä ja tallentaa tuloksen.

Tärkeää

Käytä Script-toimintoa , älä Stored procedure -toimintoa. Vain Skripti-toiminto paljastaa tulosjoukon rakenteelliseksi JSON-tuotokseksi, jonka myöhemmät toiminnot voivat jäsentää.

  1. Toiminnot-välilehdeltä valitse Skripti lisätäksesi sen kankaalle.
  2. Nimeä se Check Table Health.
  3. Asetukset-välilehdellä:
    • Yhteys: Valitse SQL-analytiikkapäätepiste Lakehousellesi. Jos sitä ei ole listalla, valitse Selaa kaikki alareunasta ja etsi sitten Lakehousesi SQL-analytiikan päätepiste.

    • Skriptityyppi: Valitse Kysely.

    • Skripti: Valitse Lisää dynaamista sisältöä ja syötä seuraava lauseke:

      @concat('EXEC sys.sp_get_table_health_metrics ''',
              pipeline().parameters.schema_name, '.',
              pipeline().parameters.table_name, '''')
      

Tämä lauseke tuottaa SQL-komennon, joka suorittaa tallennetun proseduurin kohdetaulua vastaan, esimerkiksi: EXEC sys.sp_get_table_health_metrics 'dbo.FactSales'.

Varmista skriptin tulos

Suorita putki kerran ja tarkista Script-aktiviteetti -tulos. Näet JSON-objektin, joka on samankaltainen:

{
  "resultSetCount": 1,
  "resultSets": [
    {
      "rowCount": 1,
      "rows": [
        {
          "PotentialAnomalyType": 3,
          "PotentialAnomalyDescription": "Too many small files...",
          "FileCount": 2688,
          "...": "..."
        }
      ]
    }
  ]
}

Tärkeää

Todellinen tuloksesi voi vaihdella pöytäsi tilan mukaan. Avain on, että se palauttaa sarakkeet, jotka on paljastettu sys.sp_get_table_health_metrics.

Vaihe 4: Lisää If Condition -aktiviteetti

If-ehto-toiminto lukee PotentialAnomalyType suoraan Script-toiminnon tuloksesta ja tekee päätöksen tuloksensa perusteella. Toimi seuraavasti:

  1. Toiminnot-välilehdeltä valitse If Condition lisätäksesi aktiviteetin kankaalle.

  2. Nimeä se Tarkista anomalia.

  3. Piirrä onnistumisen (vihreä) nuoli Check Table Health -toiminnosta tarkistaaksesi poikkeaman.

  4. If Condition -toiminnon Toiminnot-välilehdellä aseta lauseke muotoon:

    @greater(int(activity('Check Table Health').output.resultSets[0].rows[0]['PotentialAnomalyType']), 0)
    

Tämä lauseke lukee ensimmäisen rivin, joka palautuu sys.sp_get_table_health_metrics, loitsee PotentialAnomalyType kokonaisluvuksi ja true arvioi, kun arvo on suurempi kuin nolla, mikä osoittaa kohdetaulukossa havaitun poikkeaman.

Vaihe 5: Lisää muistikirja-toiminto (True branch)

Kun If Condition -aktiviteetti on valittuna, valitse Muokkaa (kynäkuvake) True-kohdan vierestä. Kangas vaihtuu alikankaaksi, joka on sijoitettu True-haaraan .

  1. Raahaa muistikirja-aktiviteetti True-alakankaalle.

  2. Nimeä se Suorita OPTIMOI.

  3. Asetukset-välilehdessä:

    • Muistikirja: Valitse Optimize-Table -muistikirja, jonka loit Step 1:ssä.

    • Laajenna perusparametrit ja lisää kolme riviä:

      Nimi Tyyppi Arvo
      lakehouse_name Merkkijono @pipeline().parameters.lakehouse_name
      schema_name Merkkijono @pipeline().parameters.schema_name
      table_name Merkkijono @pipeline().parameters.table_name

Kolmen nimisarakkeen arvon on täsmälleen vastattava muistikirjan parametrisolun muuttujien nimiä.

Muistio

Voit jättää väärät toiminnot tyhjiksi. If Condition -toiminto käsittelee tyhjää Väärää haaraa no-op ja raportoi putken onnistuneeksi.

Valmiin putkistosi tulisi näyttää seuraavalta:

Kuvakaappaus Fabric-dataputkesta, jossa Check Table Health -skriptitoiminto liittyy Check Anomaly -ehdolliseen toimintaan. Todellinen haara suorittaa OPTIMO-muistikirjan toiminnon, kun taas väärä haara ei sisällä toimintoja.

Vaihe 6: Vahvista ja aja

  1. Valitse putkityökalupalkista Validoi tarkistaaksesi konfiguraatiovirheet.

  2. Valitse Suorita putki manuaalisesti.

  3. Seuraa juoksua ja varmista:

    1. Tarkista taulukon kunto: tarkista tämän toiminnon Output kun se käynnistyy. Sinun pitäisi nähdä tallennetun proseduurin tulos sys.sp_get_table_health_metrics JSON-muodossa.
    2. Tarkista anomalia: arvioi oikein lukemalla PotentialAnomalyType suoraan Skriptin tuloksesta.
    3. Suorita OPTIMIZE (vain jos): PotentialAnomalyType > 0jos Check Anomalya -toiminto arvioi True:n, tarkista Run OPTIMIZE -toiminnon syöte varmistaaksesi, että se käyttää oikeita parametreja (Lakehousen nimi, skeema ja taulun nimi) ja tarkista tulos tarkistaaksesi operaation viestit OPTIMIZE .

Resurssien puhdistaminen

Jos loit resursseja vain tätä opetusta varten etkä enää tarvitse niitä, poista seuraavat kohteet työtilastasi:

  • Check-and-Optimize-Table -putki.
  • Optimize-Table -muistikirja.