Eventos
Campeonato mundial de DataViz de Power BI
14 feb, 16 - 31 mar, 16
Con 4 posibilidades de entrar, podrías ganar un paquete de conferencia y convertirlo en el Live Grand Finale en Las Vegas
Saber másEste explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
Este artículo está dirigido a los administradores de Fabric que necesitan acceder y analizar datos provenientes del registro de actividad de Power BI de . Se centra en la recuperación mediante programación de actividades de Power BI mediante el cmdlet Get-PowerBIActivityEvent del módulo de administración de Power BI. Hay hasta cuatro semanas de historial disponible. Este cmdlet usa la operación Obtener eventos de actividad de la API REST de Power BI, que es una API de administración. Los cmdlets de PowerShell agregan una capa de abstracción sobre las API subyacentes. Por lo tanto, el cmdlet de PowerShell simplifica el acceso al registro de actividad de Power BI.
Hay otras formas, tanto manuales como mediante programación, de recuperar actividades de Power BI. Para obtener más información, consulte Acceso a los datos de actividad del usuario.
El análisis del registro de actividad de Power BI es fundamental para la gobernanza, el cumplimiento y realizar un seguimiento de los esfuerzos de adopción . Para obtener más información sobre el registro de actividad de Power BI, consulte Seguimiento de actividades de usuario en Power BI.
Sugerencia
Le recomendamos que revise completamente el artículo Auditoría de nivel de inquilino . En este artículo se tratan las actividades de planeamiento, decisiones clave, requisitos previos y desarrollo de soluciones clave que se deben tener en cuenta al crear una solución de auditoría de un extremo a otro.
El objetivo de este artículo es proporcionarle ejemplos para ayudarle a empezar. Los ejemplos incluyen scripts que recuperan datos del registro de actividad mediante el módulo PowerShell de administración de Power BI.
Advertencia
Los scripts no están listos para producción porque solo están diseñados para fines educativos. Sin embargo, puede adaptar los scripts con fines de producción mediante la adición de lógica para el registro, el control de errores, las alertas y la refactorización para la reutilización y la modularización del código.
Dado que están pensados para aprender, los ejemplos son simplistas, pero son reales. Le recomendamos que revise todos los ejemplos para comprender cómo aplican técnicas ligeramente diferentes. Una vez que identifique el tipo de datos de actividad que necesita, puede mezclar y hacer coincidir las técnicas para generar un script que se adapte mejor a sus requisitos.
En este artículo se incluyen los ejemplos siguientes.
Nombre de ejemplo | Tipo de datos de actividad |
---|---|
Autenticación con el servicio Power BI | N/A |
Ver todas las actividades de un usuario durante un día | All |
Ver una actividad durante N días | Compartir informe (vínculo o acceso directo) |
Ver tres actividades durante N días | Creación, actualización e instalación de una aplicación |
Ver todas las actividades de un área de trabajo durante un día | All |
Exportar todas las actividades de los N días anteriores | All |
Para simplificar, la mayoría de los ejemplos generan el resultado en la pantalla. Por ejemplo, en Visual Studio Code, los datos se generan en el panel de terminal, que contiene un conjunto de datos en memoria de búfer.
La mayoría de los ejemplos recuperan datos JSON sin procesar. Trabajar con los datos JSON sin procesar tiene muchas ventajas.
Sugerencia
Le recomendamos que mantenga los scripts que extraigan los datos lo más sencillos posible. Por lo tanto, evite analizar, filtrar o dar formato a los datos del registro de actividad a medida que se extraiga. Este enfoque usa una metodología ELT, que tiene pasos independientes para extraer, cargar y transformar datos. Este artículo solo se centra en el primer paso, que se refiere a la extracción de los datos.
Para usar los scripts de ejemplo, debe cumplir los siguientes requisitos.
En el resto de este artículo se incluyen scripts de ejemplo que muestran diferentes formas de recuperar los datos del registro de actividad.
Todas las operaciones de la API REST de Power BI requieren que inicie sesión. La autenticación (quién realiza la solicitud) y la autorización (lo que el usuario tiene permiso para hacer) se administran mediante la Plataforma de identidad de Microsoft. En el ejemplo siguiente se usa el cmdlet Connect-PowerBIServiceAccount del módulo de administración de Power BI. Este cmdlet admite un método sencillo para iniciar sesión.
El primer script le redirige a un explorador para completar el proceso de inicio de sesión. Las cuentas de usuario que tienen habilitada la autenticación multifactor (MFA) pueden usar este flujo de autenticación interactiva para iniciar sesión.
Connect-PowerBIServiceAccount
Importante
Los usuarios sin privilegios de administrador de Fabric no pueden ejecutar ninguno de los scripts de ejemplo siguientes en este artículo. Los administradores de Fabric tienen permiso para gestionar el servicio de Power BI y obtener metadatos de toda la entidad (como los datos del registro de actividad). Aunque el uso de la autenticación de entidad de servicio está fuera del ámbito de estos ejemplos, se recomienda encarecidamente configurar una entidad de servicio para scripts desatendidos listos para producción que se ejecutarán según una programación.
Asegúrese de iniciar sesión antes de ejecutar cualquiera de los siguientes scripts.
A veces es necesario comprobar todas las actividades que ha realizado un usuario específico en un día específico.
Sugerencia
Al extraer datos del registro de actividad mediante el cmdlet de PowerShell, cada solicitud puede extraer datos durante un día (un máximo de 24 horas). Por lo tanto, el objetivo de este ejemplo es empezar simplemente comprobando un usuario durante un día. Hay otros ejemplos más adelante en este artículo que muestran cómo usar un bucle para exportar datos durante varios días.
Este script declara dos variables de PowerShell para facilitar la reutilización del script:
$UserEmailAddr
: la dirección de correo electrónico del usuario que le interesa.$ActivityDate
: la fecha en la que está interesado. El formato es AAAA-MM-DD (formato ISO 8601). No se puede solicitar una fecha anterior a 28 días antes de la fecha actual.#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
Nota
Es posible que observe un carácter de verso (') al final de algunas de las líneas de los scripts de PowerShell. En PowerShell, una manera de usar el carácter de verso es como un carácter de continuación de línea. Lo hemos usado para mejorar la legibilidad de los scripts de este artículo.
Sugerencia
En el script, cada una de las variables de PowerShell se correlaciona con un valor de parámetro obligatorio o opcional en el cmdlet Get-PowerBIActivityEvent . Por ejemplo, el valor que se asigna a la variable $UserEmailAddr
se pasa al parámetro -User
. Declarar variables de PowerShell de esta manera es un enfoque ligero para evitar valores de codificación rígida que podrían cambiar en el script. Ese es un buen hábito de adoptar y será útil a medida que los scripts se vuelven más complejos. Los parámetros de PowerShell son más sólidos que las variables, pero están fuera del ámbito de este artículo.
Aquí se muestra una respuesta JSON de ejemplo. Incluye dos actividades que realizó el usuario:
[
{
"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"
}
]
Sugerencia
Extraer los datos del registro de actividad de Power BI también es una operación registrada, como se muestra en la respuesta anterior. Al analizar las actividades del usuario, es posible que quiera omitir las actividades de administrador, o analizarlas por separado.
A veces, es posible que desee investigar un tipo específico de actividad durante una serie de días. En este ejemplo se muestra cómo recuperar actividades de uso compartido de informes por elemento . Usa un bucle para recuperar actividades de los siete días anteriores.
El script declara dos variables:
$ActivityType
: nombre de la operación de la actividad que está investigando.$NbrOfDaysToCheck
: cuántos días le interesa comprobar. Realiza un bucle trabajando hacia atrás desde el día actual. El valor máximo permitido es de 28 días (ya que la fecha más antigua que se puede recuperar es de 28 días antes del día actual).#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
}
Sugerencia
Puede usar esta técnica de bucle para comprobar cualquiera de las operaciones registradas en el registro de actividad.
Aquí se muestra una respuesta JSON de ejemplo. Incluye dos actividades que realizó el usuario:
[
{
"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"
}
]
Nota
Esta respuesta JSON muestra que la estructura de datos es diferente en función del tipo de evento. Incluso el mismo tipo de evento puede tener características diferentes que producen una salida ligeramente diferente. Como se recomienda anteriormente en este artículo, debería acostumbrarse a recuperar los datos sin procesar.
A veces, es posible que quiera investigar varias actividades relacionadas. En este ejemplo se muestra cómo recuperar tres actividades específicas para los siete días anteriores. Se centra en las actividades relacionadas con las aplicaciones de Power BI, incluida la creación de una aplicación, la actualización de una aplicación y la instalación de una aplicación.
El script declara las siguientes variables:
$NbrOfDaysToCheck
: cuántos días le interesa comprobar. Realiza un bucle que trabaje hacia atrás desde el día actual. El valor máximo permitido es de 28 días (ya que la fecha más antigua que se puede recuperar es de 28 días antes del día actual).$Activity1
: nombre de la operación de la primera actividad que está investigando. En este ejemplo, se buscan actividades de creación de aplicaciones de Power BI.$Activity2
: el nombre de la segunda operación. En este ejemplo, se buscan actividades de actualización de aplicaciones de Power BI.$Activity3
: el nombre de la tercera operación. En este ejemplo, se buscan actividades de instalación de aplicaciones de Power BI.Solo puede recuperar eventos de actividad para una actividad a la vez. Por lo tanto, el script busca cada operación por separado. Combina los resultados de búsqueda en una variable denominada $FullResults
, que luego genera en la pantalla.
Precaución
La ejecución de muchos bucles muchas veces aumenta considerablemente la probabilidad de limitación de API. La limitación puede producirse cuando se supera el número de solicitudes que puede realizar en un período de tiempo determinado. La operación Obtener eventos de actividad está limitada a 200 solicitudes por hora. Al diseñar los scripts, tenga cuidado de no recuperar los datos originales más veces de lo que necesita. Por lo general, es recomendable extraer todos los datos sin procesar una vez al día y, a continuación, consultar, transformar, filtrar o dar formato a esos datos por separado.
El script muestra los resultados del día actual.
Nota
Para recuperar resultados solo para el día anterior (evitar resultados parciales del día), consulte el ejemplo Exportar todas las actividades de los N días anteriores).
#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
Aquí se muestra una respuesta JSON de ejemplo. Incluye tres actividades que realizó el usuario:
Advertencia
La respuesta solo incluye los permisos de usuario que se modificaron. Por ejemplo, es posible que se hayan creado tres audiencias en un evento CreateApp. En el evento UpdateApp, si solo ha cambiado una audiencia, solo aparecerá una audiencia en los datos de OrgAppPermission. Por ese motivo, confiar en el evento UpdateApp para realizar el seguimiento de todos los permisos de la aplicación está incompleto porque el registro de actividad solo muestra lo que ha cambiado.
Para obtener una instantánea de todos los permisos de aplicación de Power BI, use la operación Obtener usuarios de la aplicación como Administración de API en su lugar.
[
{
"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"
}
]
A veces, es posible que quiera investigar actividades relacionadas con un área de trabajo específica. En este ejemplo se recuperan todas las actividades de todos los usuarios durante un día. A continuación, filtra los resultados para que pueda centrarse en el análisis de actividades de un área de trabajo.
El script declara dos variables:
$ActivityDate
: la fecha en la que está interesado. El formato es AAAA-MM-DD. No se puede solicitar una fecha anterior a 28 días antes de la fecha actual.$WorkspaceName
: el nombre del área de trabajo que le interesa.Almacena los resultados en la variable $Results
. A continuación, convierte los datos JSON en un objeto para que se puedan analizar los resultados. A continuación, filtra los resultados para recuperar cinco columnas específicas. Se cambia el nombre de los datos CreationTime como ActivityDateTime. Los resultados se filtran por el nombre del área de trabajo y, a continuación, se envían a la pantalla.
No hay ningún parámetro para el cmdlet Get-PowerBIActivityEvent que le permite especificar un área de trabajo al comprobar el registro de actividad (en los ejemplos anteriores de este artículo se usaban parámetros de PowerShell para establecer un nombre de usuario, fecha o actividad específico). En este ejemplo, el script recupera todos los datos y, a continuación, analiza la respuesta JSON para filtrar los resultados de un área de trabajo específica.
Precaución
Si se encuentra en una organización grande que tiene cientos o miles de actividades al día, el filtrado de los resultados después de que se hayan recuperado puede ser muy ineficaz. Tenga en cuenta que la operación Obtener eventos de actividad está limitada a 200 solicitudes por hora.
Para evitar la limitación de API (cuando se supera el número de solicitudes que se le permite realizar en un período de tiempo determinado), no recupere los datos originales más de lo que necesita. Puede seguir trabajando con los resultados filtrados sin ejecutar el script para recuperar los resultados de nuevo. En el caso de las necesidades continuas, se recomienda extraer todos los datos una vez al día y, a continuación, consultarlos muchas veces.
#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
Estos son los resultados filtrados, que incluyen un pequeño subconjunto de propiedades. El formato es más fácil de leer para análisis ocasionales. Sin embargo, se recomienda volver a convertirla en formato JSON si tiene previsto almacenar los resultados.
Nota
Después de convertir los resultados JSON en un objeto de PowerShell, los valores de hora se convierten en hora local. Los datos de auditoría originales siempre se registran en hora universal coordinada (UTC), por lo que se recomienda que esté acostumbrado a usar solo la hora UTC.
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
Sugerencia
Puede usar esta técnica para filtrar los resultados por cualquier propiedad de los resultados. Por ejemplo, puede usar un evento RequestId
específico para analizar solo un evento específico.
A veces, es posible que desee exportar todos los datos de actividad a un archivo para que pueda trabajar con los datos fuera de PowerShell. En este ejemplo se recuperan todas las actividades de todos los usuarios durante un máximo de 28 días. Exporta los datos a un archivo JSON al día.
Importante
Los datos del registro de actividad están disponibles durante un máximo de 28 días. Es importante que exporte y conserve los datos para poder realizar análisis históricos. Si actualmente no exporta y almacena los datos del registro de actividad, se recomienda encarecidamente priorizarlo.
El script recupera todas las actividades de una serie de días. Declara tres variables:
$NbrDaysDaysToExtract
: cuántos días le interesa exportar. Realiza un bucle trabajando hacia atrás desde el día anterior. El valor máximo permitido es de 28 días (ya que la fecha más antigua que se puede recuperar es de 28 días antes del día actual).$ExportFileLocation
: ruta de acceso de carpeta donde desea guardar los archivos. La carpeta debe existir antes de ejecutar el script. No incluya un carácter de barra diagonal inversa (\) al final de la ruta de acceso de la carpeta (porque se agrega automáticamente en tiempo de ejecución). Se recomienda usar una carpeta independiente para almacenar archivos de datos sin procesar.$ExportFileName
: el prefijo de cada nombre de archivo. Dado que se guarda un archivo al día, el script agrega un sufijo para indicar los datos contenidos en el archivo y la fecha y hora en que se recuperaron los datos. Por ejemplo, si ejecutó un script a las 9:00 (UTC) el 25 de abril de 2023 para extraer datos de actividad para el 23 de abril de 2023, el nombre de archivo sería: PBIActivityEvents-20230423-202304250900. Aunque la estructura de carpetas en la que se almacena es útil, cada nombre de archivo debe ser totalmente autodescriptivo.Se recomienda extraer datos que son al menos un día antes del día actual. De este modo, evita recuperar eventos de día parciales y puede estar seguro de que cada archivo de exportación contiene las 24 horas completas de datos.
El script recopila hasta 28 días de datos hasta el día anterior. Las marcas de tiempo de los eventos auditados siempre están en UTC. Le recomendamos que compile todos los procesos de auditoría en función de la hora UTC en lugar de la hora local.
El script genera un archivo JSON al día. El sufijo del nombre de archivo incluye la marca de tiempo (en formato UTC) de los datos extraídos. Si extrae el mismo día de datos más de una vez, el sufijo en el nombre de archivo le ayuda a identificar el archivo más reciente.
#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
Hay varias ventajas para usar el cmdlet Get-PowerBIActivityEvent de PowerShell en lugar de la operación Obtener eventos de actividad de API de REST.
Para obtener más información, consulte Elegir API o cmdlets de PowerShell.
Nota
Se omite una respuesta de ejemplo porque es una salida similar a las respuestas que se muestran en los ejemplos anteriores.
Para obtener más información sobre este artículo, consulte los recursos siguientes:
Eventos
Campeonato mundial de DataViz de Power BI
14 feb, 16 - 31 mar, 16
Con 4 posibilidades de entrar, podrías ganar un paquete de conferencia y convertirlo en el Live Grand Finale en Las Vegas
Saber másCursos
Ruta de aprendizaje
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
Documentación
Seguimiento de actividades de usuario en Power BI - Power BI
Descubra cómo usar los registros de actividad de Power BI para supervisar y realizar un seguimiento de las actividades de los usuarios en Power BI.
Lista de operaciones - Microsoft Fabric
En este artículo se proporciona una lista de todas las operaciones disponibles en Fabric.
Planeamiento de la implementación de Power BI: auditoría de nivel de inquilino - Power BI
Más información sobre el planeamiento de auditorías de nivel de inquilino para Power BI.