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

  • Siirry Microsoft Fabricin datatieteen 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 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 yrityksen markkinointimateriaaleihin ja sisältää tietoja tuotteista, asiakkaista ja eri liiketoimintayksiköiden vastaavista tuotoista.

  1. Avaa työtilasi 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. Käytät tätä semanttista mallia tämän artikkelin vaiheissa.

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 olevista semanttisista malleista ja suorittaa niille kyselyitä.

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 koodissa on määritetty SemPy-työtila 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
    

    Nyt olemme määrittäneet, 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

  5. Arvioi Kokonaistuotto-mittari asiakkaan tilaa ja päivämäärää kohden.

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

    Muistiinpano

  6. Voit lisätä suodattimia mittarin laskentaan määrittämällä luettelon arvoista, jotka voivat olla tietyssä sarakkeessa.

    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 Kokonaistuotto-mittarin asiakkaan tilaa 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 ne edellyttävät vähintään XMLA:n vain luku -käyttöä.
    • Microsoft Azure Analysis Servicesissä ja Spark-ohjainsolmussa käytettävissä olevan muistin määrä rajoittaa noudettavien tietojen määrää (katso solmun koko).
    • Kaikissa pyynnöissä käytetään matalaa prioriteettia sen minimoimiseksi, mikä vaikuttaa Analysis Servicesin suorituskykyyn, ja niitä laskutetaan vuorovaikutteisena pyyntönä.
  8. Voit arvioida saman DAX-kyselyn ilman tarvetta tuoda kirjastoa käyttämällä solun %%dax taikuutta. Suoritetaan alla oleva solu, niin solun taikuutta ladataan %%dax .

    %load_ext sempy
    

    Työtila-parametri on valinnainen, ja se noudattaa samoja sääntöjä kuin funktion evaluate_dax työtilaparametri. Solun taika tukee myös Python-muuttujien käyttämistä syntaksin {variable_name} avulla. Jos haluat käyttää aaltosulkeita DAX-kyselyssä, voit välttää sen toisella aaltosulkeella (esimerkiksi 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 käytettävissä -muuttujan _ kautta, joka tallentaa viimeisen suoritetun solun tuloksen.

    df_dax = _
    
    df_dax.head()
    
  9. Vaihtoehtoisesti voit lisätä mittareita ulkoisista lähteistä noudettuihin tietoihin. Tämä lähestymistapa yhdistää kolme tehtävää: se ratkaisee sarakenimet Power BI -dimensioihin, määrittää ryhmittelyn sarakkeiden mukaan ja suodattaa mittarin. Kaikki sarakkeiden nimet, joita ei voida ratkaista annetun semanttisen mallin sisällä, ohitetaan (katso tuettu DAX-syntaksi).

    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: Jos arvo on "True", menetelmät palauttavat sarakkeiden nimet lomakkeessa TableName[ColumnName].
  • num_rows: Tuloksessa tulostettavien rivien määrä.
  • pandas_convert_dtypes: Jos arvo on "True", tuloksena saatavat DataFramen sarakkeet valetaan parhaan mahdollisen dtype-tyyppiin pandas convert_dtypes avulla. Jos tämä parametri on poistettu käytöstä, tyypin yhteensopivuusongelmat voivat johtua liittyvien taulukoiden sarakkeista, joita Ei ehkä ole havaittu Power BI -mallissa DAXin implisiittisen tyypin muunnoksen vuoksi.

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

  • multiindex_hierarchies: Jos arvo on tosi, 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ä 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")

Käyttämällä Power BI: tä ForecastTable-taulukko voidaan lisätä yhdistelmäseemanttiseen malliin Lakehousen semanttisen mallin avulla.