Jaa


Power BI:n toimintolokiin siirtyminen

Tässä artikkelissa on ohjeita Power BI -järjestelmänvalvojille, joiden on käytettävä ja analysoitava Power BI:n toimintolokista hankittuja tietoja. Se keskittyy Power BI -toimintojen ohjelmalliseen noutamiseen Käyttämällä Power BI Management -moduulin Get-PowerBIActivityEvent-cmdlet-komentoa . Käytettävissä on enintään 30 päivän historia. Tämä cmdlet-komento käyttää Power BI:n REST-ohjelmointirajapinnan Nouda toimintatapahtumat -toimintoa, joka on järjestelmänvalvojan ohjelmointirajapinta. PowerShellin cmdlet-komennot lisäävät abstraktiokerroksen pohjana olevien ohjelmointirajapintojen päälle. Tämän vuoksi PowerShellin cmdlet-komento yksinkertaistaa Power BI:n toimintolokin käyttöä.

Power BI -toimintojen noutamiseen on myös muita manuaalisia ja ohjelmallisia tapoja. Katso lisätietoja kohdasta Käyttäjän toiminnan tietojen käyttäminen.

Power BI:n toimintalokin analysointi on keskeistä ohjauksen ja vaatimustenmukaisuuden kannalta sekä käyttöönottotoimien seuraamiseksi. Lisätietoja Power BI:n toimintolokista on artikkelissa Käyttäjien toiminnan seuraaminen Power BI:ssä.

Vihje

Suosittelemme, että tarkistat vuokraajatason valvonnan artikkelin kokonaisuudessaan. Tässä artikkelissa käsitellään suunnittelua, keskeisiä päätöksiä, edellytyksiä ja tärkeitä ratkaisun kehitystoimia, jotka on otettava huomioon päästä päähän -valvontaratkaisua luotaessa.

Esimerkkejä käytettävissä

Tämän artikkelin tavoitteena on antaa esimerkkejä, joiden avulla pääset alkuun. Esimerkkejä ovat komentosarjat, jotka hakevat tietoja toimintolokista Power BI:n hallinnan PowerShell-moduulin avulla.

Varoitus

Komentosarjat eivät ole tuotantovalmiita, koska ne on tarkoitettu vain opetustarkoituksiin. Voit kuitenkin mukauttaa komentosarjoja tuotantotarkoituksiin lisäämällä logiikan kirjaamista, virheenkäsittelyä, hälytystä ja uudelleenmuodostusta varten koodin uudelleenkäyttöä ja modulaarisuutta varten.

Koska esimerkit on tarkoitettu oppimiseen, ne ovat yksinkertaisia, mutta silti todellisia. Suosittelemme, että tarkastelet kaikkia esimerkkejä, jotta ymmärrät, miten ne käyttävät hieman erilaisia tekniikoita. Kun olet tunnistanut tarvitsemasi toimintotiedot, voit yhdistää ja sovittaa tekniikoita tarpeitasi parhaiten vastaavan komentosarjan tuottamiseksi.

Tämä artikkeli sisältää seuraavat esimerkit.

Esimerkkinimi Toimintotietojen tyyppi
Todentaminen Power BI -palvelu avulla
Näytä kaikki käyttäjän toiminnot yhden päivän ajan Kaikki
Näytä N päivän aktiviteetti Jaa raportti (linkki tai suora käyttö)
Näytä N-päivien kolme toimintaa Luo sovellus, päivitä sovellus ja asenna sovellus
Näytä kaikki yhden päivän työtilan toiminnot Kaikki
Vie kaikki edellisen N päivän toiminnot Kaikki

Yksinkertaisuuden vuoksi useimmat esimerkit tulostavat tuloksensa näyttöön. Esimerkiksi Visual Studio Codessa tiedot tulostetaan päätepaneeliin, joka sisältää muistissa olevan puskurijoukon tietoja.

Useimmat esimerkit noutavat raakoja JSON-tietoja. Raaka-JSON-tietojen käsittelemisellä on monia etuja.

  • Palautetaan kaikki tiedot, jotka ovat käytettävissä kullekin toimintotapahtumalle. Siitä on hyötyä, kun opit, mitä tietoja on saatavilla. Muista, että ohjelmointirajapintavastauksen sisältö vaihtelee todellisen toimintotapahtuman mukaan. Esimerkiksi CreateApp-tapahtumalle saatavilla olevat tiedot eroavat ViewReport-tapahtumasta.
  • Koska toimintolokin käytettävissä olevat tiedot muuttuvat Power BI:n kehittyessä ajan mittaan, voit myös odottaa ohjelmointirajapintavastausten muuttuvan. Näin käyttöön otettuja uusia tietoja ei jää huomaamatta. Prosessisi on myös kestävämpi muutokselle ja vähemmän todennäköiseltä epäonnistua.
  • Ohjelmointirajapinnan vastauksen tiedot voivat olla erilaiset Power BI:n kaupallisessa pilvipalvelussa ja kansallisissa /alueellisissa pilvipalveluissa.
  • Jos sinulla on eri jäseniä (kuten tietoteknikoita), jotka osallistuvat tähän prosessiin, tietojen poimimisen yksinkertaistaminen yksinkertaistaa useiden tiimien yhteistyötä.

Vihje

Suosittelemme, että pidät kaikki tiedot poimivat komentosarjat mahdollisimman yksinkertaisina. Vältä siis toimintolokin tietojen jäsentämistä, suodatusta tai muotoilua sitä varten, miten ne poimitaan. Tässä lähestymistavassa käytetään ELT-menetelmää, jossa on erilliset vaiheet tietojen poimimiseen, lataamiseen ja muuntamiseen. Tässä artikkelissa keskitytään vain ensimmäiseen vaiheeseen, joka koskee tietojen purkamista.

Vaatimukset

Jos haluat käyttää esimerkkikomentosarjoja, sinun on täytettävä seuraavat vaatimukset.

  • PowerShell-asiakastyökalu: Käytä haluamaasi työkalua PowerShell-komentojen suorittamiseen. Kaikki esimerkit testattiin käyttämällä Visual Studio Coden PowerShell-laajennusta ja PowerShell 7:ää. Lisätietoja asiakastyökaluista ja PowerShell-versioista on artikkelissa Vuokraajatason valvonta.
  • Power BI -hallintamoduuli: Asenna kaikki Power BI:n PowerShell-moduulit. Jos olet asentanut ne aiemmin, suosittelemme päivittämään moduulit varmistaaksesi, että käytät uusinta julkaistua versiota.
  • Fabric-järjestelmänvalvojan rooli: Esimerkkikomentosarjat on suunniteltu käyttämään vuorovaikutteista todentamisen työnkulkua. Tämän vuoksi PowerShell-esimerkkikomentosarjoja suorittavan käyttäjän on kirjauduttava sisään Power BI REST -ohjelmointirajapintojen käyttämistä varten. Toimintolokitietojen noutamista varten todennuskäyttäjän on kuuluttava Power BI -järjestelmänvalvojan rooliin (koska toimintotapahtumien noutaminen tehdään järjestelmänvalvojan ohjelmointirajapinnalla). Palvelun päänimitodentaminen ei kuulu näihin oppimisesimerkkien piiriin.

Artikkelin loppuosa sisältää esimerkkikomentosarjoja, jotka näyttävät eri tapoja noutaa toimintolokin tiedot.

Esimerkki 1: Todentaminen Power BI -palvelu avulla

Kaikki Power BI:n REST-ohjelmointirajapinnan toiminnot edellyttävät kirjautumista. Todentamista (joka tekee pyynnön) ja valtuutusta (mitä käyttäjällä on oikeus tehdä) hallitsee Microsoftin käyttäjätietoympäristö. Seuraavassa esimerkissä käytetään power BI:n hallintamoduulin Näyttöyhteys-PowerBIServiceAccount-cmdlet-komentoa. Tämä cmdlet-komento tukee yksinkertaista kirjautumismenetelmää.

Mallipyyntö 1

Ensimmäinen komentosarja ohjaa sinut selaimeen kirjautumisprosessin viimeistelemiseksi. Käyttäjätilit, joissa on käytössä monimenetelmäinen todentaminen, voivat käyttää tätä vuorovaikutteista todennuksen työnkulkua kirjautumisessa.

Connect-PowerBIServiceAccount

Tärkeä

Käyttäjät, joilla ei ole Power BI -järjestelmänvalvojan oikeuksia, eivät voi suorittaa tässä artikkelissa olevia mallikomentosarjoja. Power BI -järjestelmänvalvojilla on oikeus hallita Power BI -palvelu ja hakea vuokraajan laajuisia metatietoja (kuten toimintolokitietoja). Vaikka palvelun päänimen todentaminen ei kuulu näihin esimerkkeihin, suosittelemme, että määrität palvelun päänimen sellaiselle tuotantovalmiille ja valvomattomalle komentosarjalle, joka suoritetaan aikataulun mukaisesti.

Muista kirjautua sisään ennen seuraavien komentosarjojen suorittamista.

Esimerkki 2: Käyttäjän kaikkien toimintojen tarkastelu yhden päivän ajan

Joskus sinun täytyy tarkistaa kaikki tietyn käyttäjän tiettynä päivänä suorittamat toimet.

Vihje

Kun poimit tietoja toimintolokista käyttämällä PowerShellin cmdlet-komentoa, kukin pyyntö voi poimia yhden päivän tiedot (enintään 24 tuntia). Tämän esimerkin tavoitteena on siis aloittaa vain tarkistamalla yksi käyttäjä yhdeksi päiväksi. Myöhemmin tässä artikkelissa on muita esimerkkejä, joissa näytetään, miten voit käyttää silmukkaa useiden päivien tietojen viemiseen.

Mallipyyntö 2

Tässä komentosarjassa esitellään kaksi PowerShell-muuttujaa komentosarjan uudelleenkäytön helpottamiseksi:

  • $UserEmailAddr: Sen käyttäjän sähköpostiosoite, josta olet kiinnostunut.
  • $ActivityDate: Päivämäärä, jolloin olet kiinnostunut. Muoto on VVVV-KK-PP (ISO 8601-muoto). Et voi pyytää päivämäärää, joka on aikaisempi kuin 30 päivää ennen nykyistä päivämäärää.
#Input values before running the script:
$UserEmailAddr = 'jordan@contoso.com'
$ActivityDate = '2023-03-15'
#----------------------------------------------------------------------
#View activity events:
Get-PowerBIActivityEvent `
    -StartDateTime ($ActivityDate + 'T00:00:00.000') `
    -EndDateTime ($ActivityDate + 'T23:59:59.999') `
    -User $UserEmailAddr

Muistiinpano

Saatat huomata (') -merkin PowerShell-komentosarjojen joidenkin rivien lopussa. PowerShellissä voit käyttää backtick-merkkiä esimerkiksi rivin jatkamismerkkinä. Sen avulla on parannettava komentosarjojen luettavuutta tässä artikkelissa.

Vihje

Komentosarjassa jokainen PowerShell-muuttuja korreloi pakolliseen tai valinnaiseen parametriarvoon Get-PowerBIActivityEvent-cmdlet-komennossa. Esimerkiksi muuttujalle $UserEmailAddr määrittämäsi arvo välitetään parametrille -User . PowerShell-muuttujien ilmoittaminen tällä tavalla on kevyt tapa välttää vaikeasti koodaavia arvoja, jotka voivat muuttua komentosarjassa. Se on hyvä tapa ottaa se käyttöön, ja siitä on hyötyä, kun komentosarjasi monimutkaistuvat. PowerShell-parametrit ovat tehokkaampia kuin muuttujat, mutta ne eivät kuulu tämän artikkelin aihealueisiin.

Mallivastaus 2

Tässä on esimerkki JSON-vastauksesta. Se sisältää kaksi käyttäjän suorittamaa aktiviteettia:

  • Ensimmäisessä toimessa näytetään, että käyttäjä on tarkastellut raporttia.
  • Toisessa toimessa näkyy, että järjestelmänvalvoja on vienyt tietoja Power BI:n toimintolokista.
[
  {
    "Id": "10af656b-b5a2-444c-bf67-509699896daf",
    "RecordType": 20,
    "CreationTime": "2023-03-15T15:18:30Z",
    "Operation": "ViewReport",
    "OrganizationId": "927c6607-8060-4f4a-a5f8-34964ac78d70",
    "UserType": 0,
    "UserKey": "100FFF92C7717B",
    "Workload": "PowerBI",
    "UserId": "jordan@contoso.com",
    "ClientIP": "192.168.1.1",
    "Activity": "ViewReport",
    "ItemName": "Gross Margin Analysis",
    "WorkSpaceName": "Sales Analytics",
    "DatasetName": "Sales Data",
    "ReportName": "Gross Margin Analysis",
    "WorkspaceId": "e380d1d0-1fa6-460b-9a90-1a5c6b02414c",
    "ObjectId": "Gross Margin Analysis",
    "DatasetId": "cfafbeb1-8037-4d0c-896e-a46fb27ff229",
    "ReportId": "94e57e92-Cee2-486d-8cc8-218c97200579",
    "ArtifactId": "94e57e92-Cee2-486d-8cc8-218c97200579",
    "ArtifactName": "Gross Margin Analysis",
    "IsSuccess": true,
    "ReportType": "PowerBIReport",
    "RequestId": "53451b83-932b-f0b0-5328-197133f46fa4",
    "ActivityId": "beb41a5d-45d4-99ee-0e1c-b99c451e9953",
    "DistributionMethod": "Workspace",
    "ConsumptionMethod": "Power BI Web",
    "SensitivityLabelId": "e3dd4e72-5a5d-4a95-b8b0-a0b52b827793",
    "ArtifactKind": "Report"
  },
  {
    "Id": "5c913f29-502b-4a1a-a089-232edaf176f7",
    "RecordType": 20,
    "CreationTime": "2023-03-15T17:22:00Z",
    "Operation": "ExportActivityEvents",
    "OrganizationId": "927c6607-8060-4f4a-a5f8-34964ac78d70",
    "UserType": 2,
    "UserKey": "100FFF92C7717B",
    "Workload": "PowerBI",
    "UserId": "jordan@contoso.com",
    "ClientIP": "192.168.1.1",
    "UserAgent": "MicrosoftPowerBIMgmt/1.2.1111.0",
    "Activity": "ExportActivityEvents",
    "IsSuccess": true,
    "RequestId": "2af6a22d-6f24-4dc4-a26a-5c234ab3afad",
    "ActivityId": "00000000-0000-0000-0000-000000000000",
    "ExportEventStartDateTimeParameter": "2023-03-17T00:00:00Z",
    "ExportEventEndDateTimeParameter": "2023-03-17T23:59:59.999Z"
  }
]

Vihje

Power BI:n toimintolokitietojen poimiminen on myös kirjattu toiminto, kuten edellisessä vastauksessa näytettiin. Kun analysoit käyttäjien toimia, haluat ehkä jättää järjestelmänvalvojan toimet pois tai analysoida ne erikseen.

Esimerkki 3: Näytä N päivän aktiviteetti

Joskus saatat haluta tutkia yhtä tiettyä aktiviteettityyppiä päivien ajan. Tässä esimerkissä näytetään, miten voit noutaa nimikkeittäiset raportin jakamistoiminnot . Se käyttää silmukkaa aktiviteettien noutamiseen edelliseltä seitsemältä päivältä.

Mallipyyntö 3

Komentosarja määrittää kaksi muuttujaa:

  • $ActivityType: Tutkittavan toiminnon toiminnon nimi .
  • $NbrOfDaysToCheck: Montako päivää olet kiinnostunut tarkistamaan. Se suorittaa silmukan, joka toimii taaksepäin nykyisestä päivästä. Suurin sallittu arvo on 30 päivää (koska aikaisin päivä, jonka voit noutaa, on 30 päivää ennen nykyistä päivää).
#Input values before running the script:
$ActivityType = 'ShareReport' 
$NbrOfDaysToCheck = 7 
#-----------------------------------------------------------------------

#Use today to start counting back the number of days to check:
$DayUTC = (([datetime]::Today.ToUniversalTime()).Date)

#Iteratively loop through each of the last N days to view events:
For($LoopNbr=0; $LoopNbr -le $NbrOfDaysToCheck; $LoopNbr++)
{
    $PeriodStart=$DayUTC.AddDays(-$LoopNbr)
    $ActivityDate=$PeriodStart.ToString("yyyy-MM-dd")
    Write-Verbose "Checking $ActivityDate" -Verbose 

    #Check activity events once per loop (once per day):
    Get-PowerBIActivityEvent `
        -StartDateTime ($ActivityDate + 'T00:00:00.000') `
        -EndDateTime ($ActivityDate + 'T23:59:59.999') `
        -ActivityType $ActivityType 
}

Vihje

Voit käyttää tätä silmukkatekniikkaa minkä tahansa toimintolokiin kirjatun toiminnon tarkistamiseen.

Mallivastaus 3

Tässä on esimerkki JSON-vastauksesta. Se sisältää kaksi käyttäjän suorittamaa aktiviteettia:

  • Ensimmäisessä toimessa näytetään, että on luotu käyttäjän jakamislinkki. Huomaa, että SharingAction-arvo vaihtelee sen mukaan, loiko käyttäjä linkin, muokkasiko hän linkkiä vai poistiko hän linkin. Lyhyyden vuoksi vastauksessa näytetään vain yksi jakamislinkin aktiviteettityyppi.
  • Toinen toiminto näyttää, että ryhmälle on luotu suora käyttöoikeuksien jakaminen. Huomaa, että SharingInformation-arvo vaihtelee toteutetun toiminnon mukaan. Lyhyyden vuoksi vastauksessa näytetään vain yksi suoran käytön jakamistoimintotyyppi.
[
  {
    "Id": "be7506e1-2bde-4a4a-a210-bc9b156142c0",
    "RecordType": 20,
    "CreationTime": "2023-03-15T19:52:42Z",
    "Operation": "ShareReport",
    "OrganizationId": "927c6607-8060-4f4a-a5f8-34964ac78d70",
    "UserType": 0,
    "UserKey": "900GGG12D2242A",
    "Workload": "PowerBI",
    "UserId": "morgan@contoso.com",
    "ClientIP": "192.168.1.1",
    "UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/110.0",
    "Activity": "ShareReport",
    "ItemName": "Call Center Stats",
    "WorkSpaceName": "Sales Analytics",
    "SharingInformation": [
      {
        "RecipientEmail": "ellis@contoso.com",
        "RecipientName": "Turner",
        "ObjectId": "fc9bbc6c-e39b-44cb-9c8a-d37d5665ec57",
        "ResharePermission": "ReadReshare",
        "UserPrincipalName": "ellis@contoso.com"
      }
    ],
    "WorkspaceId": "e380d1d0-1fa6-460b-9a90-1a5c6b02414c",
    "ObjectId": "Call Center Stats",
    "Datasets": [
      {
        "DatasetId": "fgagrwa3-9044-3e1e-228f-k24bf72gg995",
        "DatasetName": "Call Center Data"
      }
    ],
    "ArtifactId": "81g22w11-vyy3-281h-1mn3-822a99921541",
    "ArtifactName": "Call Center Stats",
    "IsSuccess": true,
    "RequestId": "7d55cdd3-ca3d-a911-5e2e-465ac84f7aa7",
    "ActivityId": "4b8b53f1-b1f1-4e08-acdf-65f7d3c1f240",
    "SharingAction": "CreateShareLink",
    "ShareLinkId": "J_5UZg-36m",
    "ArtifactKind": "Report",
    "SharingScope": "Specific People"
  },
  {
    "Id": "b4d567ac-7ec7-40e4-a048-25c98d9bc304",
    "RecordType": 20,
    "CreationTime": "2023-03-15T11:57:26Z",
    "Operation": "ShareReport",
    "OrganizationId": "927c6607-8060-4f4a-a5f8-34964ac78d70",
    "UserType": 0,
    "UserKey": "900GGG12D2242A",
    "Workload": "PowerBI",
    "UserId": "morgan@contoso.com",
    "ClientIP": "69.132.26.0",
    "UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0",
    "Activity": "ShareReport",
    "ItemName": "Gross Margin Analysis",
    "WorkSpaceName": "Sales Analytics",
    "SharingInformation": [
      {
        "RecipientName": "SalesAndMarketingGroup-NorthAmerica",
        "ObjectId": "ba21f28b-6226-4296-d341-f059257a06a7",
        "ResharePermission": "Read"
      }
    ],
    "CapacityId": "1DB44EEW-6505-4A45-B215-101HBDAE6A3F",
    "CapacityName": "Shared On Premium - Reserved",
    "WorkspaceId": "e380d1d0-1fa6-460b-9a90-1a5c6b02414c",
    "ObjectId": "Gross Margin Analysis",
    "Datasets": [
      {
        "DatasetId": "cfafbeb1-8037-4d0c-896e-a46fb27ff229",
        "DatasetName": "Sales Data"
      }
    ],
    "ArtifactId": "94e57e92-Cee2-486d-8cc8-218c97200579",
    "ArtifactName": "Gross Margin Analysis",
    "IsSuccess": true,
    "RequestId": "82219e60-6af0-0fa9-8599-c77ed44fff9c",
    "ActivityId": "1d21535a-257e-47b2-b9b2-4f875b19855e",
    "SensitivityLabelId": "16c065f5-ba91-425e-8693-261e40ccdbef",
    "SharingAction": "Direct",
    "ArtifactKind": "Report",
    "SharingScope": "Specific People"
  }
]

Muistiinpano

Tämä JSON-vastaus näyttää, että tietorakenne on erilainen tapahtuman tyypin mukaan. Jopa samantyyppisellä tapahtumalla voi olla eri ominaisuuksia, jotka tuottavat hieman erilaisen tuloksen. Kuten aiemmin tässä artikkelissa suositeltiin, sinun pitäisi tottua raakadatan noutamiseen.

Esimerkki 4: Näytä N-päivän kolme aktiviteettia

Joskus saatat haluta tutkia useita toisiinsa liittyviä toimia. Tässä esimerkissä näytetään, miten voit noutaa kolme tiettyä aktiviteettia seitsemältä edelliseltä päivältä. Siinä keskitytään Power BI -sovelluksiin liittyviin toimintoihin, kuten sovelluksen luomiseen, päivittämiseen ja sovelluksen asentamiseen.

Mallipyyntö 4

Komentosarja sisältää seuraavat muuttujat:

  • $NbrOfDaysToCheck: Montako päivää olet kiinnostunut tarkistamaan. Se suorittaa silmukan, joka toimii taaksepäin nykyisestä päivästä. Suurin sallittu arvo on 30 päivää (koska aikaisin päivä, jonka voit noutaa, on 30 päivää ennen nykyistä päivää).
  • $Activity1: Toiminnon nimi ensimmäiselle tutkivalle toiminnolle. Tässä esimerkissä haetaan Power BI -sovellusten luontitoimintoja.
  • $Activity2: Toisen toiminnon nimi. Tässä esimerkissä haetaan Power BI -sovelluksen päivitystoimintoja.
  • $Activity3: Kolmannen toiminnon nimi. Tässä esimerkissä haetaan Power BI -sovelluksen asennustoimia.

Voit noutaa toimintotapahtumia vain yhdelle aktiviteetille kerrallaan. Komentosarja etsii siis kutakin toimintoa erikseen. Se yhdistää hakutulokset muuttujaksi nimeltä $FullResults, jonka se sitten tulostaa näyttöön.

Varoitus

Useiden silmukoiden suorittaminen monta kertaa lisää merkittävästi ohjelmointirajapinnan rajoittamisen todennäköisyyttä. Rajoittamista voi tapahtua, kun ylität pyyntöjen määrän, jonka saat tehdä tietyllä ajanjaksolla. Hae toimintatapahtumat -toiminto on rajoitettu 200 pyyntöön tunnissa. Kun suunnittelet komentosarjoja, älä nouda alkuperäisiä tietoja enempää kuin tarvitset. Yleensä on parempi poimia kaikki raakatiedot kerran päivässä ja sitten tehdä kyselyjä, muuntaa, suodattaa tai muotoilla näitä tietoja erikseen.

Komentosarja näyttää senhetkisen päivän tulokset.

Muistiinpano

Jos haluat noutaa vain edellisen päivän tulokset – välttäen osittaisen päivän tulokset – katso esimerkki edellisten N päivän kaikkien toimintojen viemisestä.)

#Input values before running the script:
$NbrOfDaysToCheck = 7
$Activity1 = 'CreateApp'
$Activity2 = 'UpdateApp'
$Activity3 = 'InstallApp'
#-----------------------------------------------------------------------
#Initialize array which will contain the full resultset:
$FullResults = @() 

#Use today to start counting back the number of days to check:
$DayUTC = (([datetime]::Today.ToUniversalTime()).Date)

#Iteratively loop through each day (<Initilize> ; <Condition> ; <Repeat>)
#Append each type of activity to an array:
For($LoopNbr=0; $LoopNbr -le $NbrOfDaysToCheck; $LoopNbr++)
{
    $PeriodStart=$DayUTC.AddDays(-$LoopNbr)
    $ActivityDate=$PeriodStart.ToString("yyyy-MM-dd")
    Write-Verbose "Checking $ActivityDate" -Verbose 

    #Get activity 1 and append its results into the full resultset:
    $Activity1Results = @()
    $Activity1Results += Get-PowerBIActivityEvent `
        -StartDateTime ($ActivityDate+'T00:00:00.000') `
        -EndDateTime ($ActivityDate+'T23:59:59.999') `
        -ActivityType $Activity1 | ConvertFrom-Json
    If ($null -ne $Activity1Results) {$FullResults += $Activity1Results}
    
    #Get activity 2 and append its results into the full resultset:
    $Activity2Results = @()
    $Activity2Results += Get-PowerBIActivityEvent `
        -StartDateTime ($ActivityDate+'T00:00:00.000') `
        -EndDateTime ($ActivityDate+'T23:59:59.999') `
        -ActivityType $Activity2 | 
    ConvertFrom-Json
    If ($null -ne $Activity2Results) {$FullResults += $Activity2Results}  

    #Get activity 3 and append its results into the full resultset:
    $Activity3Results = @()
    $Activity3Results += Get-PowerBIActivityEvent `
        -StartDateTime ($ActivityDate+'T00:00:00.000') `
        -EndDateTime ($ActivityDate+'T23:59:59.999') `
        -ActivityType $Activity3 | 
    ConvertFrom-Json
    If ($null -ne $Activity3Results) {$FullResults += $Activity3Results}
    
}  
#Convert all of the results back to a well-formed JSON object:
$FullResults = $FullResults | ConvertTo-Json

#Display results on the screen:
$FullResults

Mallivastaus 4

Tässä on esimerkki JSON-vastauksesta. Se sisältää kolme käyttäjän suorittamaa toimintoa:

  • Ensimmäisessä toimessa näytetään, että Power BI -sovellus on luotu.
  • Toinen toiminto osoittaa, että Power BI -sovellus on päivitetty.
  • Kolmas toiminto osoittaa, että käyttäjä on asentanut Power BI -sovelluksen.

Varoitus

Vastaus sisältää vain muokattuja käyttäjän käyttöoikeuksia. On esimerkiksi mahdollista, että CreateApp-tapahtumassa on luotu kolme käyttäjäryhmää. Jos vain yksi käyttäjäryhmä muuttuisi UpdateApp-tapahtumassa, OrgAppPermission-tiedoissa näkyy vain yksi käyttäjäryhmä. Tästä syystä kaikkien sovelluksen käyttöoikeuksien seuranta UpdateApp-tapahtuman käyttäminen ei ole riittävää, koska toimintoloki näyttää vain muuttuneet tiedot.

Saat tilannevedoksen kaikista Power BI -sovelluksen käyttöoikeuksista käyttämällä sen sijaan Hae sovelluksen käyttäjät Hallinta -ohjelmointirajapinnan toimintoa.

[
  {
    "Id": "65a26480-981a-4905-b3aa-cbb3df11c7c2",
    "RecordType": 20,
    "CreationTime": "2023-03-15T18:42:13Z",
    "Operation": "CreateApp",
    "OrganizationId": "927c6607-8060-4f4a-a5f8-34964ac78d70",
    "UserType": 0,
    "UserKey": "100FFF92C7717B",
    "Workload": "PowerBI",
    "UserId": "jordan@contoso.com",
    "ClientIP": "192.168.1.1",
    "UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0",
    "Activity": "CreateApp",
    "ItemName": "Sales Reconciliations App",
    "WorkSpaceName": "Sales Reconciliations",
    "OrgAppPermission": {
      "recipients": "Sales Reconciliations App(Entire Organization)",
      "permissions": "Sales Reconciliations App(Read,CopyOnWrite)"
    },
    "WorkspaceId": "9325a31d-067e-4748-a592-626d832c8001",
    "ObjectId": "Sales Reconciliations App",
    "IsSuccess": true,
    "RequestId": "ab97a4f1-9f5e-4a6f-5d50-92c837635814",
    "ActivityId": "9bb54a9d-b688-4028-958e-4d7d21ca903a",
    "AppId": "42d60f97-0f69-470c-815f-60198956a7e2"
  },
  {
    "Id": "a1dc6d26-b006-4727-bac6-69c765b7978f",
    "RecordType": 20,
    "CreationTime": "2023-03-16T18:39:58Z",
    "Operation": "UpdateApp",
    "OrganizationId": "927c6607-8060-4f4a-a5f8-34964ac78d70",
    "UserType": 0,
    "UserKey": "100GGG12F9921B",
    "Workload": "PowerBI",
    "UserId": "morgan@contoso.com",
    "ClientIP": "192.168.1.1",
    "UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0",
    "Activity": "UpdateApp",
    "ItemName": "Sales Analytics",
    "WorkSpaceName": "Sales Analytics",
    "OrgAppPermission": {
      "recipients": "Sales Reps Audience(SalesAndMarketingGroup-NorthAmerica,SalesAndMarketingGroup-Europe)",
      "permissions": "Sales Reps Audience(Read,CopyOnWrite)"
    },
    "WorkspaceId": "c7bffcd8-8156-466a-a88f-0785de2c8b13",
    "ObjectId": "Sales Analytics",
    "IsSuccess": true,
    "RequestId": "e886d122-2c09-4189-e12a-ef998268b864",
    "ActivityId": "9bb54a9d-b688-4028-958e-4d7d21ca903a",
    "AppId": "c03530c0-db34-4b66-97c7-34dd2bd590af"
  },
  {
    "Id": "aa002302-313d-4786-900e-e68a6064df1a",
    "RecordType": 20,
    "CreationTime": "2023-03-17T18:35:22Z",
    "Operation": "InstallApp",
    "OrganizationId": "927c6607-8060-4f4a-a5f8-34964ac78d70",
    "UserType": 0,
    "UserKey": "100HHH12F4412A",
    "Workload": "PowerBI",
    "UserId": "ellis@contoso.com",
    "ClientIP": "192.168.1.1",
    "UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0",
    "Activity": "InstallApp",
    "ItemName": "Sales Reconciliations App",
    "ObjectId": "Sales Reconciliations App",
    "IsSuccess": true,
    "RequestId": "7b3cc968-883f-7e13-081d-88b13f6cfbd8",
    "ActivityId": "9bb54a9d-b688-4028-958e-4d7d21ca903a"
  }
]

Esimerkki 5: Näytä kaikki työtilan toiminnot yhden päivän ajan

Joskus saatat haluta tutkia tiettyyn työtilaan liittyviä toimintoja. Tämä esimerkki noutaa kaikkien käyttäjien kaikki toiminnot yhden päivän ajan. Sen jälkeen se suodattaa tulokset niin, että voit keskittyä yhden työtilan aktiviteettien analysointiin.

Mallipyyntö 5

Komentosarja määrittää kaksi muuttujaa:

  • $ActivityDate: Päivämäärä, jolloin olet kiinnostunut. Muoto on VVVV-KK-PP. Et voi pyytää päivämäärää, joka on aikaisempi kuin 30 päivää ennen nykyistä päivämäärää.
  • $WorkspaceName: Sen työtilan nimi, josta olet kiinnostunut.

Komentosarja tallentaa tulokset muuttujaan $Results . Sitten se muuntaa JSON-tiedot objektiksi, jotta tulokset voidaan jäsentää. Sen jälkeen se suodattaa tulokset noutaakseen viisi tiettyä saraketta. CreationTime-tietojen nimeksi annetaan ActivityDateTime. Tulokset suodatetaan työtilan nimen mukaan ja tulostetaan näyttöön.

Get-PowerBIActivityEvent-cmdlet-komennolle ei ole parametria, jonka avulla voit määrittää työtilan, kun tarkistat toimintolokia (tämän artikkelin aiemmissa esimerkeissä käytettiin PowerShell-parametreja määritetyn käyttäjän, päivämäärän tai toiminnon nimen määrittämiseen). Tässä esimerkissä komentosarja noutaa kaikki tiedot ja jäsentää sitten JSON-vastauksen suodattaakseen tietyn työtilan tulokset.

Varoitus

Jos olet suuressa organisaatiossa, jossa on satoja tai tuhansia toimintoja päivässä, tulosten suodattaminen niiden hakemisen jälkeen voi olla erittäin tehotonta. Muista, että Hae toimintatapahtumat - toiminto on rajoitettu 200 pyyntöön tunnissa.

Jos haluat välttää ohjelmointirajapinnan rajoittamisen (kun ylität pyyntöjen määrän, jonka saat tehdä tiettynä ajanjaksona), älä nouda alkuperäisiä tietoja enempää kuin sinun tarvitsee. Voit jatkaa suodatetun tuloksen käsittelemistä suorittamatta komentosarjaa tulosten noutamiseksi uudelleen. Jatkuvissa tarpeissa on parempi poimia kaikki tiedot kerran päivässä ja tehdä sitten kyselyjä useita kertoja.

#Input values before running the script:
$ActivityDate = '2023-03-22'
$WorkspaceName = 'Sales Analytics'
#----------------------------------------------------------------------
#Run cmdlet to check activity events and store intermediate results:
$Events = Get-PowerBIActivityEvent `
    -StartDateTime ($ActivityDate+'T00:00:00.000') `
    -EndDateTime ($ActivityDate+'T23:59:59.999')
    
#Convert from JSON so we can parse the data:
$ConvertedResults = $Events | ConvertFrom-Json

#Obtain specific attributes and save to a PowerShell object:
$FilteredResults = $ConvertedResults `
    | 
    Select-Object `
    @{Name="ActivityDateTime";Expression={$PSItem.CreationTime}}, ` #alias name
    Activity, `
    UserId, `
    ArtifactName, `
    WorkspaceName `
    | 
    #Filter the results:
    Where-Object {($PSItem.WorkspaceName -eq $WorkspaceName)}

#View the filtered results:
$FilteredResults 

#Optional - Save back to JSON format:
#$FilteredResults = $FilteredResults | ConvertTo-Json -Depth 10
#$FilteredResults

Mallivastaus 5

Tässä ovat suodatetut tulokset, jotka sisältävät pienen ominaisuuksien alijoukon. Tämä muoto on helpompi lukea ajoittaista analyysia varten. Suosittelemme kuitenkin, että muunnat sen takaisin JSON-muotoon, jos aiot tallentaa tulokset.

Muistiinpano

Kun JSON-tulokset on muunnettu PowerShell-objektiksi, aika-arvot muunnetaan paikalliseksi ajaksi. Alkuperäiset valvontatiedot tallennetaan aina UTC-ajassa (Coordinated Universal Time), joten suosittelemme, että totut käyttämään vain UTC-aikaa.

ActivityDateTime : 4/25/2023 3:18:30 PM
Activity         : ViewReport
UserId           : jordan@contoso.com
ArtifactName     : Gross Margin Analysis
WorkSpaceName    : Sales Analytics

CreationTime     : 4/25/2023 5:32:10 PM
Activity         : ShareReport
UserId           : ellis@contoso.com
ArtifactName     : Call Center Stats
WorkSpaceName    : Sales Analytics

CreationTime     : 4/25/2023 9:03:05 PM
Activity         : ViewReport
UserId           : morgan@contoso.com
ArtifactName     : Call Center Stats
WorkSpaceName    : Sales Analytics

Vihje

Tämän menetelmän avulla voit suodattaa tuloksia tulosten minkä tahansa ominaisuuden mukaan. Voit esimerkiksi käyttää tiettyä tapahtumaa RequestId vain yhden tietyn tapahtuman analysointiin.

Esimerkki 6: vie kaikki edellisten N-päivien toiminnot

Joskus saatat haluta viedä kaikki toimintotiedot tiedostoon, jotta voit käsitellä tietoja PowerShellin ulkopuolella. Tämä esimerkki noutaa kaikkien käyttäjien kaikki toiminnot enintään 30 päivän ajan. Se vie tiedot yhteen JSON-tiedostoon päivässä.

Tärkeä

Toimintolokin tiedot ovat käytettävissä enintään 30 päivän ajan. On tärkeää, että viet tiedot ja säilytät ne, jotta voit tehdä historiallisia analyyseja. Jos et tällä hetkellä vie ja tallenna toimintolokin tietoja, suosittelemme priorisoimaan sen.

Mallipyyntö 6

Komentosarja noutaa kaikki toiminnot päivien sarjalta. Se määrittää kolme muuttujaa:

  • $NbrDaysDaysToExtract: Kuinka monta päivää olet kiinnostunut viennistä. Se suorittaa silmukan, joka toimii taaksepäin edellisestä päivästä. Suurin sallittu arvo on 30 päivää (koska aikaisin päivä, jonka voit noutaa, on 30 päivää ennen nykyistä päivää).
  • $ExportFileLocation: Kansiopolku, johon haluat tallentaa tiedostot. Kansion on oltava olemassa ennen komentosarjan suorittamista. Älä lisää kenoviivaa (\) kansiopolun loppuun (koska se lisätään automaattisesti suorituksen aikana). Suosittelemme, että käytät erillistä kansiota raakadatatiedostojen tallentamiseen.
  • $ExportFileName: Jokaisen tiedostonimen etuliite. Koska yksi tiedosto päivässä on tallennettu, komentosarja lisää jälkiliitteet, joista ilmenee tiedoston sisältämät tiedot sekä päivämäärä ja kellonaika, jolloin tiedot noudettiin. Jos esimerkiksi suoritit komentosarjan 25.4.2023 klo 9.00 (UTC) ja poimit toimintatiedot 23.4.2023, tiedostonimi on: PBIActivityEvents-20230423-202304250900. Vaikka kansiorakenteesta, johon se on tallennettu, on hyötyä, jokaisen tiedostonimen tulee olla täysin kuvaava.

Suosittelemme, että poimit tiedot, jotka ovat vähintään päivää ennen nykyistä päivää. Näin voit välttää osittaisen päivän tapahtumien noutamisen ja voit olla varma siitä, että jokainen vientitiedosto sisältää täydet 24 tunnin tiedot.

Komentosarja kerää enintään 30 päivän tiedot edelliseen päivään asti. Valvotun tapahtuman aikaleimat ovat aina UTC-käytössä. Suosittelemme, että luot kaikki valvontaprosessit UTC-ajan, ei paikallisen ajan, perusteella.

Komentosarja tuottaa yhden JSON-tiedoston päivässä. Tiedostonimen jälkiliite sisältää poimittujen tietojen aikaleiman (UTC-muodossa). Jos poimit saman tietopäivän useammin kuin kerran, tiedostonimisen jälkiliitteen avulla voit tunnistaa uudemman tiedoston.

#Input values before running the script:
$NbrDaysDaysToExtract = 7
$ExportFileLocation = 'C:\Power-BI-Raw-Data\Activity-Log'
$ExportFileName = 'PBIActivityEvents'
#--------------------------------------------

#Start with yesterday for counting back to ensure full day results are obtained:
[datetime]$DayUTC = (([datetime]::Today.ToUniversalTime()).Date).AddDays(-1) 

#Suffix for file name so we know when it was written:
[string]$DateTimeFileWrittenUTCLabel = ([datetime]::Now.ToUniversalTime()).ToString("yyyyMMddHHmm")

#Loop through each of the days to be extracted (<Initilize> ; <Condition> ; <Repeat>)
For($LoopNbr=0 ; $LoopNbr -lt $NbrDaysDaysToExtract ; $LoopNbr++)
{
    [datetime]$DateToExtractUTC=$DayUTC.AddDays(-$LoopNbr).ToString("yyyy-MM-dd")

    [string]$DateToExtractLabel=$DateToExtractUTC.ToString("yyyy-MM-dd")
    
    #Create full file name:
    [string]$FullExportFileName = $ExportFileName `
    + '-' + ($DateToExtractLabel -replace '-', '') `
    + '-' + $DateTimeFileWrittenUTCLabel `
    + '.json' 

    #Obtain activity events and store intermediary results:
    [psobject]$Events=Get-PowerBIActivityEvent `
        -StartDateTime ($DateToExtractLabel+'T00:00:00.000') `
        -EndDateTime ($DateToExtractLabel+'T23:59:59.999')

    #Write one file per day:
    $Events | Out-File "$ExportFileLocation\$FullExportFileName"

    Write-Verbose "File written: $FullExportFileName" -Verbose 
}
Write-Verbose "Extract of Power BI activity events is complete." -Verbose

Get-PowerBIActivityEvent PowerShell -cmdlet-komennon käyttämisellä on useita etuja Hae toimintatapahtumat REST -ohjelmointirajapinnan toiminnon sijaan.

  • Cmdlet-komennon avulla voit pyytää yhden päivän aktiviteetin joka kerta, kun teet kutsun cmdlet-komennon avulla. Kun olet suoraan yhteydessä ohjelmointirajapintaan, voit pyytää vain tunnin API-pyyntöä kohden.
  • Cmdlet käsittelee jatkumistunnukset puolestasi. Jos käytät ohjelmointirajapintaa suoraan, tarkista jatkumistunnus ja selvitä, onko tulos tulossa. Joidenkin ohjelmointirajapintojen on käytettävä sivutusta ja jatkumistunnuksia suorituskykysyistä, kun ne palauttavat suuren tietomäärän. Ne palauttavat ensimmäisen tietuejoukon, ja jatkumistunnuksella voit tehdä seuraavan ohjelmointirajapintakutsun seuraavan tietuejoukon noutamiseksi. Jatkat ohjelmointirajapinnan kutsumista, kunnes jatkumistunnusta ei palauteta. Jatkumistunnuksen avulla voit koota yhteen useita ohjelmointirajapintapyyntöjä, jotta voit koota yhteen loogisen tulosjoukon. Lisätietoja jatkumistunnuksen käyttämisestä on kohdassa Toimintatapahtumat REST-ohjelmointirajapinta.
  • Cmdlet-komento käsittelee Microsoft Entra -tunnuksen (aiemmin azure Active Directory) käyttöoikeustietueen vanhentumiset puolestasi. Todennuksen jälkeen käyttöoikeustietue vanhenee tunnin (oletusarvoisesti) jälkeen. Tässä tapauksessa cmdlet-komento pyytää automaattisesti päivitystunnusta puolestasi. Jos olet yhteydessä ohjelmointirajapintaan suoraan, sinun on pyydettävä päivitystunnusta.

Lisätietoja on kohdassa Ohjelmointirajapintojen tai PowerShellin cmdlet-komentojen valitseminen.

Muistiinpano

Mallivastaus jätetään pois, koska se on tuloste, joka on samanlainen kuin edellisissä esimerkeissä näytetyt vastaukset.

Saat lisätietoja tähän artikkeliin liittyen tutustumalla seuraaviin resursseihin: