Jaa


Lue semanttisista malleista ja kirjoita tietoja, joita Power BI voi käyttää Pythonilla

Tässä artikkelissa kerrotaan, miten voit lukea tietoja ja metatietoja ja arvioida semanttisten mallien mittareita Microsoft Fabricin SemPy python -kirjaston avulla. Opit myös kirjoittamaan tietoja, joita semanttiset mallit voivat käyttää.

Edellytykset

  • Tutustu Microsoft Fabricin datatieteen kokemukseen.
  • Uuden muistikirjan luominen koodin kopioimiseksi ja liittämiseksi 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 semanttinen Customer Profitability Sample.pbix -malli kangasmallisäilön tietojoukkokansiosta ja tallenna semanttinen malli paikallisesti.

Semanttisen mallin lataaminen työtilaan

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

  1. Työtilan avaaminen Fabric Data Science -toiminnossa
  2. Valitse Lataa > selaus ja valitse asiakkaan tuottavuuden malli.pbix semanttinen malli.

Näyttökuva, jossa näkyy semanttisen mallin työtilaan lataamisen käyttöliittymä.

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

Näyttökuva, jossa näkyvät työtilaan ladatun Power BI -tiedoston kohteet.

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

Tietojen lukeminen semanttisista malleista:

  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. Tämä edellyttää, että käytössä on vähintään XMLA:n vain luku -tila.
    • Noudettavien tietojen määrää rajoittaa - enimmäismuisti per kysely kapasiteetti-SKU: lle, joka isännöi semanttista mallia - Spark-ohjainsolmu (katso lisätietoja solmun koosta ), joka suorittaa muistikirjan
    • Kaikissa pyynnöissä pienen prioriteetin avulla voidaan minimoida vaikutus Microsoft Azure Analysis Services suorituskykyyn, ja niitä laskutetaan vuorovaikutteisena pyyntönä.
  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 ne eivät vaadi XMLA:n vain luku -käyttöä.
    • Power BI -taustarajoitukset eivät koske tietoja.
    • Noudettavien tietojen määrää rajoittaa - enimmäismuisti kapasiteetti-SKU:n kyselyä kohden, joka isännöi semanttista mallia - Spark-ohjainsolmu (katso lisätietoja solmuko'ista ), joka suorittaa muistikirjan
    • Kaikkia pyyntöjä laskutetaan vuorovaikutteisena pyyntönä
  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. Voit myös arvioida Total Revenue -mittarin asiakkaan tilaa ja päivämäärää kohden DAX-kyselyllä.

    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:

  • fully_qualified_columns: "Tosi"-arvolle menetelmät palauttavat sarakkeiden nimet lomakkeessa TableName[ColumnName]
  • num_rows: Tuloksessa tulostettavien rivien määrä
  • pandas_convert_dtypes: Pandas-arvoksi pandas heittää tulokseksi saatavat DataFrame-sarakkeet parhaan mahdollisen dtype-convert_dtypes. Jos tämä parametri on poistettu käytöstä, tyypin yhteensopivuusongelmat liittyvien taulukoiden sarakkeiden välillä voivat aiheuttaa ongelmia. Power BI -malli ei välttämättä tunnista näitä ongelmia IMPlisiittisen DAX-tyypin muunnoksen vuoksi

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

  • multiindex_hierarchies: Jos "tosi", Power BI -hierarkiat muunnetaan 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ä esimerkissä näytetään, miten voit kirjoittaa tietoja liitettyyn Lakehouse-järjestelmään. FabricDataFrame hyväksyy samat syötetiedot kuin Pandas-tietokehykset.

from sempy.fabric import FabricDataFrame

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

df_forecast.to_lakehouse_table("ForecastTable")

Power BI:llä ForecastTable-taulukko voidaan lisätä yhdistelmäsemanttiseen malliin Lakehousen semanttisella mallilla.