Suivre les activités utilisateur dans Power BI

Il est important de savoir qui effectue une action sur un élément donné dans Power BI, afin de permettre à votre entreprise de répondre à ses exigences, notamment en matière de conformité réglementaire et de gestion des enregistrements. Cet article décrit le journal d’activité Power BI, lequel est basé sur les API REST Power BI.

Vous pouvez suivre les activités des utilisateurs de Microsoft Fabric, notamment les opérations Power BI, à l’aide du journal d’audit.

Prérequis

  • Vous devez être administrateur général ou administrateur Power BI.

  • Installez les applets de commande de gestion Power BI localement ou utilisez les applets de commande de gestion Power BI dans Azure Cloud Shell.

Journal d’activité

Le journal d’activité Power BI contient une copie complète des activités Power BI dans un tableau JSON. Vous trouverez la liste de toutes les activités Power BI dans la liste des opérations Fabric.

API REST ActivityEvents

Vous pouvez utiliser une application d’administration basée sur les API REST de Power BI pour exporter des événements d’activité vers un magasin d’objets blob ou une base de données SQL. Vous pouvez ensuite créer un rapport d’utilisation personnalisé à partir des données exportées. Dans l’appel de l’API REST ActivityEvents, vous devez spécifier une date de début et une date de fin, et éventuellement un filtre pour sélectionner des activités par type d’activité ou ID d’utilisateur. Du fait que le journal d’activité est susceptible de contenir une grande quantité de données, l’API ActivityEvents limite le téléchargement à un seul jour de données par requête. En d’autres termes, les dates de début et de fin doivent spécifier le même jour, comme dans l’exemple suivant. Veillez à spécifier les valeurs DateTime au format UTC (Temps universel coordonné).

https://api.powerbi.com/v1.0/myorg/admin/activityevents?startDateTime='2019-08-31T00:00:00'&endDateTime='2019-08-31T23:59:59'

Si le nombre d’entrées est élevé, l’API ActivityEvents retourne seulement environ 5 000 à 10 000 entrées ainsi qu’un jeton de continuation. Rappelez l’API ActivityEvents avec le jeton de continuation pour obtenir le lot d’entrées suivant, en répétant cette opération jusqu’à ce que vous ayez obtenu toutes les entrées et que vous ne receviez plus de jeton de continuation. L’exemple suivant montre comment utiliser le jeton de continuation :

https://api.powerbi.com/v1.0/myorg/admin/activityevents?continuationToken='%2BRID%3ARthsAIwfWGcVAAAAAAAAAA%3D%3D%23RT%3A4%23TRC%3A20%23FPC%3AARUAAAAAAAAAFwAAAAAAAAA%3D'

Si un jeton de continuation est retourné dans les résultats, continuez à appeler l’API à l’aide de ce jeton pour obtenir les données restantes jusqu’à ce qu’aucun jeton de continuation ne soit retourné. Il est possible qu’un appel retourne un jeton de continuation sans aucune entrée d’événement. L’exemple suivant montre comment effectuer une boucle avec un jeton de continuation retourné dans la réponse :

while(response.ContinuationToken != null)
{
   // Store the activity event results in a list for example
    completeListOfActivityEvents.AddRange(response.ActivityEventEntities);

    // Make another call to the API with continuation token
    response = GetPowerBIActivityEvents(response.ContinuationToken)
}
completeListOfActivityEvents.AddRange(response.ActivityEventEntities);

Si l’intervalle de temps entre startDateTime et endDateTime est supérieur à 1 heure, plusieurs requêtes sont nécessaires pour télécharger des données par le biais de continuationUri.

L’exemple suivant montre comment télécharger des données couvrant 1 heure et 5 minutes :

GET https://wabi-staging-us-east-redirect.analysis.windows.net/v1.0/myorg/admin/activityevents?startDateTime='2020-08-13T07:55:00Z'&endDateTime='2020-08-13T09:00:00Z'
{
  "activityEventEntities": […],
  "continuationUri": https://wabi-staging-us-east-redirect.analysis.windows.net/v1.0/myorg/admin/activityevents?continuationToken='LDIwMjAtMDgtMTNUMDc6NTU6MDBaLDIwMjAtMDgtMTNUMDk6MDA6MDBaLDEsLA%3D%3D',
  "continuationToken": "LDIwMjAtMDgtMTNUMDc6NTU6MDBaLDIwMjAtMDgtMTNUMDk6MDA6MDBaLDEsLA%3D%3D",
  "lastResultSet": false
}

GET https://wabi-staging-us-east-redirect.analysis.windows.net/v1.0/myorg/admin/activityevents?continuationToken='LDIwMjAtMDgtMTNUMDc6NTU6MDBaLDIwMjAtMDgtMTNUMDk6MDA6MDBaLDEsLA%3D%3D'
{
  "activityEventEntities": [],
  "continuationUri": null,
  "continuationToken": null,
  "lastResultSet": false
}

Pour en savoir plus sur l’utilisation de l’API REST Power BI, notamment des exemples pour obtenir des événements d’activité d’audit, consultez Admin - Obtenir des événements d’activité dans la documentation de référence de l’API REST Power BI.

Applet de commande Get-PowerBIActivityEvent

Téléchargez les événements d’activité à l’aide des applets de commande de gestion Power BI pour PowerShell. L’applet de commande Get-PowerBIActivityEvent traite automatiquement le jeton de continuation pour vous. La cmdlet Get-PowerBIActivityEvent utilise un paramètre StartDateTime et un paramètre EndDateTime avec les mêmes restrictions que l’API REST ActivityEvents. Autrement dit, les dates de début et de fin doivent faire référence à la même valeur de date, car vous pouvez récupérer les données d’activité d’un seul jour à la fois.

Le script suivant montre comment télécharger toutes les activités Power BI. La commande convertit les résultats au format JSON en objets .NET pour pouvoir accéder directement aux propriétés de chaque activité. Ces exemples montrent le plus petit et le plus grand horodatages possibles pour une journée, afin de garantir qu’aucun événement n’est manqué :

Login-PowerBI

$activities = Get-PowerBIActivityEvent -StartDateTime '2019-08-31T00:00:00' -EndDateTime '2019-08-31T23:59:59' | ConvertFrom-Json

$activities.Count
$activities[0]

Filtrer les données d’activité

Vous pouvez filtrer les événements d’activité par type d’activité et ID d’utilisateur. Le script suivant montre comment télécharger seulement les données d’événement correspondant à l’activité ViewDashboard. Pour plus d’informations sur les paramètres pris en charge, utilisez la commande Get-Help Get-PowerBIActivityEvent.

Login-PowerBI

$activities = Get-PowerBIActivityEvent -StartDateTime '2019-08-31T00:00:00' -EndDateTime '2019-08-31T23:59:59' -ActivityType 'ViewDashboard' | ConvertFrom-Json

$activities.Count
$activities[0]

Notes

Un exemple PowerShell est disponible pour vous permettre d’apprendre à filtrer et à récupérer des événements du journal d’activité Power BI. Pour plus d’informations, consultez Accéder au journal d’activité de Power BI.