Jaa kautta


Lukeminen semanttisista malleista ja Power BI:n kuluttamien tietojen kirjoittaminen Pythonin avulla

Tässä artikkelissa opit lukemaan tietoja, metatietoja ja arvioimaan mittareita semanttisissa malleissa Microsoft Fabricin SemPy Python -kirjaston avulla. Opit myös kirjoittamaan tietoja, joita semanttiset mallit voivat käyttää.

Edellytykset

  • Siirry Microsoft Fabricin Data Science -kokemukseen.
  • Luo uusi muistikirja, jonka avulla voit kopioida ja liittää koodia soluihin.
  • Spark 3.4:ssä ja tätä uudemmat versioissa semanttinen linkki on käytettävissä oletusarvoisessa suorituspalvelussa Fabricia käytettäessä, eikä sitä tarvitse asentaa. Jos käytät Spark 3.3:a tai uudempaa versiota tai haluat päivittää semanttisen linkin uusimpaan versioon, voit suorittaa komennon: python %pip install -U semantic-link
  • Lisää Lakehouse muistikirjaasi
  • Lataa Customer Profitability Sample.pbix semanttinen malli fabric-sample-säilön tietojoukot-kansiosta ja tallenna se paikallisesti.

Semanttisen mallin lataaminen työtilaan

Tässä artikkelissa käytetään asiakkaan tuottavuuden malli.pbix-semanttista mallia. Semanttinen malli viittaa markkinointimateriaaleja valmistavaan yritykseen. Se sisältää eri liiketoimintayksiköiden tuote-, asiakas- ja tuottotiedot.

  1. Avaa työtilasi Fabric Data Sciencessa.
  2. Valitse Tuo > raportti, Sivutettu raportti tai Työkirja > tästä tietokoneesta ja valitse semanttinen malli Asiakkaan kannattavuus Sample.pbix .

Kuvakaappaus käyttöliittymästä, jolla semanttinen malli ladataan työtilaan.

Kun lataus on valmis, työtilassasi on kolme uutta artefaktia: Power BI -raportti, koontinäyttö ja semanttinen malli nimeltä Asiakkaan kannattavuusmalli. Tämän artikkelin vaiheet perustuvat tähän semanttiseen malliin.

Näyttökuva työtilaan ladatun Power BI -tiedoston kohteista.

Semanttisten mallien tietojen lukeminen Pythonilla

SemPy Python -ohjelmointirajapinta voi noutaa tietoja ja metatietoja Microsoft Fabric -työtilassa sijaitsevista semanttisista malleista. Ohjelmointirajapinta voi myös suorittaa kyselyitä niille.

Muistikirja, Power BI -tietojoukon semanttinen malli ja Lakehouse voivat sijaita samassa työtilassa tai eri työtiloissa. SemPy yrittää oletusarvoisesti käyttää semanttista malliasi seuraavasti:

  • Lakehousen työtila, jos kiinnitit muistikirjaasi lakehousen.
  • Muistikirjasi työtila, jos siihen ei ole kiinnitetty mitään.

Jos semanttinen mallisi ei sijaitse kummassakaan näistä työtiloista, sinun on määritettävä semanttisen mallin työtila, kun kutsut SemPy-menetelmää.

Voit lukea tietoja semanttisista malleista seuraavasti:

  1. Luettele työtilassa käytettävissä olevat semanttiset mallit.

    import sempy.fabric as fabric
    
    df_datasets = fabric.list_datasets()
    df_datasets
    
  2. Luettele asiakkaan tuottavuuden mallin semanttisessa mallissa käytettävissä olevat taulukot.

    df_tables = fabric.list_tables("Customer Profitability Sample", include_columns=True)
    df_tables
    
  3. Luettele asiakkaan tuottavuuden mallissa määritetyt mittarit semanttisessa mallissa.

    Vihje

    Seuraavassa koodiesimerkissä määritimme SemPy:lle työtilan, jota käytetään semanttisen mallin käyttämiseen. Voit korvata sen <Your Workspace> työtilan nimellä, johon latasit semanttisen mallin (kohdasta Semanttisen mallin lataaminen työtilaan ).

    df_measures = fabric.list_measures("Customer Profitability Sample", workspace="<Your Workspace>")
    df_measures
    

    Tässä määritettiin, että Customer-taulukko on kiinnostava taulukko.

  4. Lue Asiakas-taulukko Asiakkaan tuottavuuden mallin semanttisesta mallista.

    df_table = fabric.read_table("Customer Profitability Sample", "Customer")
    df_table
    

    Muistiinpano

    • Tiedot noudetaan XMLA:n avulla, joka edellyttää vähintään XMLA:n vain luku -muotoa .
    • Noudettavien tietojen määrää rajoittavat seuraavat: - Semanttista mallia isännöivän kapasiteetti-SKU:n kyselykohtainen enimmäismuisti. - Spark-ohjainsolmu (katso lisätietoja kohdasta Solmujen koot ), joka suorittaa muistikirjan.
    • Kaikki pyynnöt käyttävät matalaa prioriteettia Microsoft Azure Analysis Servicesin suorituskykyyn kohdistuvien vaikutusten minimoimiseksi, ja ne laskutetaan vuorovaikutteisina pyyntöinä.
  5. Arvioi jokaisen asiakkaan tilan ja päivämäärän Kokonaistuotto-mittari.

    df_measure = fabric.evaluate_measure(
        "Customer Profitability Sample",
        "Total Revenue",
        ["'Customer'[State]", "Calendar[Date]"])
    df_measure
    

    Muistiinpano

    • Oletusarvoisesti tietoja ei noudeta XMLA:n avulla, joten vain luku -muotoista XMLA:ta ei tarvitse ottaa käyttöön.
    • Tietoihin ei sovelleta Power BI:n taustarajoituksia.
    • Noudettavien tietojen määrää rajoittavat seuraavat: - Semanttista mallia isännöivän kapasiteetin SKU:n enimmäismuisti kyselyä kohden . - Spark-ohjainsolmu (katso lisätietoja kohdasta Solmujen koot ), joka suorittaa muistikirjan.
    • Kaikki pyynnöt laskutetaan vuorovaikutteisina pyyntöinä.
    • Funktio evaluate_dax ei päivitä semanttista mallia automaattisesti. Katso lisätietoja tämän sivun .
  6. Jos haluat lisätä suodattimia mittayksikön laskentaan, määritä tietyn sarakkeen sallittujen arvojen luettelo.

    filters = {
        "State[Region]": ["East", "Central"],
        "State[State]": ["FLORIDA", "NEW YORK"]
    }
    df_measure = fabric.evaluate_measure(
        "Customer Profitability Sample",
        "Total Revenue",
        ["Customer[State]", "Calendar[Date]"],
        filters=filters)
    df_measure
    
  7. Arvioi Total Revenue -mittari asiakkaan osavaltiota ja päivämäärää kohden DAX-kyselyn avulla.

    df_dax = fabric.evaluate_dax(
        "Customer Profitability Sample",
        """
        EVALUATE SUMMARIZECOLUMNS(
            'State'[Region],
            'Calendar'[Date].[Year],
            'Calendar'[Date].[Month],
            "Total Revenue",
            CALCULATE([Total Revenue]))
        """)
    

    Muistiinpano

    • Tiedot noudetaan XMLA:n avulla, joten niiden käyttöön lisääminen edellyttää vähintään XMLA:n vain luku -käyttöä.
    • Microsoft Azure Analysis Services- ja Spark-ohjainsolmujen käytettävissä oleva muisti rajoittaa noudettavien tietojen määrää (lisätietoja on solmukokojen luona)
    • Kaikissa pyynnöissä käytetään matalaa prioriteettia sen minimoimiseksi, mikä vaikuttaa Analysis Services -suorituskykyyn, ja niitä laskutetaan vuorovaikutteisena pyyntönä
  8. Käytä solun %%dax taikaa saman DAX-kyselyn arvioimiseen ilman tarvetta tuoda kirjastoa. Lataa solun taika suorittamalla %%dax tämä solu:

    %load_ext sempy
    

    Työtilaparametri on valinnainen. Se noudattaa samoja sääntöjä kuin funktion evaluate_dax työtilaparametri.

    Solun taika tukee myös Python-muuttujien käyttöä syntaksin {variable_name} avulla. Jos haluat käyttää aaltosulkeita DAX-kyselyssä, voit välttää sen toisella aaltosulkeella (esimerkki: EVALUATE {{1}}).

    %%dax "Customer Profitability Sample" -w "<Your Workspace>"
    EVALUATE SUMMARIZECOLUMNS(
        'State'[Region],
        'Calendar'[Date].[Year],
        'Calendar'[Date].[Month],
        "Total Revenue",
        CALCULATE([Total Revenue]))
    

    Tulokseksi saatava FabricDataFrame on saatavilla -muuttujan _ kautta. Tämä muuttuja tallentaa viimeisen suoritetun solun tuloksen.

    df_dax = _
    
    df_dax.head()
    
  9. Voit lisätä mittareita ulkoisista lähteistä noudettuihin tietoihin. Tämä lähestymistapa yhdistää kolme tehtävää:

    • Se ratkaisee sarakkeiden nimet Power BI -dimensioihin
    • Se määrittää ryhmittelyn sarakkeiden mukaan
    • Se suodattaa mittarin Kaikki sarakkeiden nimet, joita ei voi ratkaista tietyssä semanttisessa mallissa, ohitetaan (lisätietoja on tuetussa DAX-syntaksiresurssissa ).
    from sempy.fabric import FabricDataFrame
    
    df = FabricDataFrame({
            "Sales Agent": ["Agent 1", "Agent 1", "Agent 2"],
            "Customer[Country/Region]": ["US", "GB", "US"],
            "Industry[Industry]": ["Services", "CPG", "Manufacturing"],
        }
    )
    
    joined_df = df.add_measure("Total Revenue", dataset="Customer Profitability Sample")
    joined_df
    

Erityiset parametrit

SemPy-parametrilla read_table ja evaluate_measure -menetelmillä on enemmän parametreja, joista on hyötyä tuloksen muokkaamisessa. Näitä parametreja ovat esimerkiksi seuraavat:

  • pandas_convert_dtypes: Jos asetuksena on , Truepandas luopuu tuloksena olevat DataFrame-sarakkeet parhaaseen mahdolliseen dtypeen. Lue lisää convert_dtypes. Jos tämä parametri on poistettu käytöstä, liittyvien taulukoiden sarakkeiden välillä saattaa ilmetä tyypin yhteensopimattomuusongelmia. Power BI -malli ei ehkä havaitse näitä ongelmia DAX:n implisiittisen tyyppimuunnoksen vuoksi.

SemPy read_table käyttää myös Power BI:n tarjoamia mallitietoja.

  • multiindex_hierarchies: Jos asetuksena Trueon , se muuntaa Power BI -hierarkiat pandas MultiIndex -rakenteeksi.

Semanttisten mallien kuluttamien tietojen kirjoittaminen

Lakehouse-järjestelmään lisätyt Spark-taulukot lisätään automaattisesti vastaavaan semanttiseen oletusmalliin. Tässä artikkelissa kerrotaan, miten tietoja kirjoitetaan liitettyyn Lakehouseen. Hyväksyy FabricDataFrame samat syöttötiedot kuin Pandas-tietokehykset.

from sempy.fabric import FabricDataFrame

df_forecast = FabricDataFrame({'ForecastedRevenue': [1, 2, 3]})

df_forecast.to_lakehouse_table("ForecastTable")

Power BI:n avulla ForecastTable-taulukko voidaan lisätä semanttiseen yhdistelmämalliin, joka sisältää Lakehousen semanttisen mallin.