Actualización con Azure Automation
Mediante el uso de Azure Automation y los runbooks de PowerShell, puede realizar operaciones de actualización de datos automatizadas en los modelos tabulares de análisis de Azure.
El ejemplo de este artículo usa el módulo SqlServer de PowerShell. Más adelante en este artículo, se proporciona un ejemplo de un runbook de PowerShell que muestra cómo actualizar un modelo.
Autenticación
Todas las llamadas deben autenticarse con un token válido de Microsoft Entra ID (OAuth 2). En el ejemplo de este artículo se usa una entidad de servicio (SPN) para la autenticación en Azure Analysis Services. Para más información, consulte Creación de una aplicación mediante Azure Portal.
Prerrequisitos
Importante
En los ejemplos siguientes, se supone que el firewall de Azure Analysis Services está deshabilitado. Si el firewall está habilitado, la dirección IP pública del iniciador de la solicitud debe estar incluida en una regla de firewall.
Instalación de módulos SqlServer desde la galería de PowerShell
En su cuenta de Azure Automation, haga clic en Módulos y, luego, en Examinar galería.
En la barra de búsqueda, busque SqlServer.
Seleccione SqlServer y, a continuación, haga clic en Importar.
Haga clic en OK.
Creación de una entidad de servicio (SPN)
Para obtener información sobre cómo crear una entidad de servicio, consulte Creación de una entidad de servicio mediante Azure Portal.
Configuración de permisos en Azure Analysis Services
La entidad de servicio que cree debe tener permisos de administrador de servidor en el servidor. Para más información, vea Incorporación de una entidad de servicio al rol de administrador del servidor.
Diseño del runbook de Azure Automation
En la cuenta de Automation, cree un recurso de credenciales que se usará para almacenar de forma segura la entidad de servicio.
Escriba los detalles de la credencial. En Nombre de usuario, escriba el id. de aplicación de la entidad de servicio (appid) y, a continuación, en Contraseña, escriba el secreto de la entidad de servicio.
Importe el runbook de Automation.
Busque el archivo Refresh-Model.ps1, proporcione un Nombre y una Descripción y, luego, haga clic en Crear .
Nota:
Utilice el script de la sección Ejemplo del runbook de PowerShell que aparece al final de este documento para crear un archivo llamado Refresh-Model.ps1 y guárdelo en la máquina local para importarlo al runbook.
Una vez se haya creado el runbook, pasará automáticamente al modo de edición. Seleccione Publicar.
Nota:
El runbook recupera el recurso de credencial que se creó anteriormente mediante el comando Get-AutomationPSCredential. A continuación, este comando se pasa al comando de PowerShell Invoke-ProcessASADatabase para realizar la autenticación en Azure Analysis Services.
Para probar el runbook, haga clic en Iniciar.
Rellene los parámetros DATABASENAME, ANALYSISSERVER y REFRESHTYPE y, a continuación, haga clic en Aceptar. El parámetro WEBHOOKDATA no es necesario cuando se ejecuta manualmente el runbook.
Si el runbook se ejecutó correctamente, recibirá una salida similar a la siguiente:
Uso de un runbook de Azure Automation independiente
El runbook puede configurarse para desencadenar la actualización del modelo de Azure Analysis Services de forma programada.
Se puede configurar como se indica a continuación:
En el runbook de Automation, haga clic en Programaciones y, a continuación, en Agregar una programación.
Haga clic en Programación>Crear una programación nueva y, a continuación, rellene los detalles.
Haga clic en Crear.
Rellene los parámetros para la programación. Se utilizarán cada vez que se desencadene el runbook. El parámetro WEBHOOKDATA debe dejarse en blanco cuando se ejecuta a través de una programación.
Haga clic en OK.
Consumo con Data Factory
Para consumir el runbook mediante Azure Data Factory, primero cree un webhook para el runbook. El webhook proporcionará una dirección URL a la que se puede llamar a través de una actividad web de Azure Data Factory.
Importante
Para crear un webhook, el estado del runbook debe ser Publicado.
En el runbook de Automation, haga clic en Webhooks y, a continuación, en Agregar webhook.
Asigne un nombre y una fecha de expiración al webhook. El nombre solo identifica el webhook dentro del runbook de Automation y no forma parte de la dirección URL.
Precaución
Asegúrese de copiar la dirección URL antes de cerrar el asistente, ya que no puede recuperarla una vez lo cierre.
Los parámetros del webhook pueden permanecer en blanco. Al configurar la actividad web de Azure Data Factory, los parámetros se pueden pasar al cuerpo de la llamada web.
En Data Factory, configure un actividad web
Ejemplo
La URL es la dirección URL creada a partir del webhook.
El cuerpo es un documento JSON que debe contener las siguientes propiedades:
Propiedad | Valor |
---|---|
AnalysisServicesDatabase | Nombre de la base de datos de Azure Analysis Services Ejemplo: AdventureWorksDB |
AnalysisServicesServer | Nombre del servidor de Azure Analysis Services. Ejemplo: https://westus.asazure.windows.net/servers/myserver/models/AdventureWorks/ |
DatabaseRefreshType | Tipo de actualización que se debe realizar. Ejemplo: completo |
Ejemplo del cuerpo de JSON:
{
"AnalysisServicesDatabaseName": "AdventureWorksDB",
"AnalysisServicesServer": "asazure://westeurope.asazure.windows.net/MyAnalysisServer",
"DatabaseRefreshType": "Full"
}
Estos parámetros se definen en el script de PowerShell del runbook. Cuando se ejecuta la actividad web, la carga de JSON que se pasa es WEBHOOKDATA.
Esto se deserializa y se almacena como parámetros de PowerShell, que luego usa el comando Invoke-ProcessASDatabase de PowerShell.
Uso de Hybrid Worker con Azure Analysis Services
Una máquina virtual de Azure con una dirección IP pública estática se puede usar como una instancia de Azure Automation Hybrid Worker. Luego, esta dirección IP pública se puede agregar al firewall de Azure Analysis Services.
Importante
Asegúrese de que la dirección IP pública de la máquina virtual esté configurada como estática.
Para más información sobre la configuración de Azure Automation Hybrid Worker, consulte Instalación de Hybrid Runbook Worker.
Una vez que se configura una instancia de Hybrid Worker, cree un webhook tal y como se describe en la sección Consumir con Data Factory. La única diferencia en este caso es que debe seleccionar la opción Ejecutar en>Hybrid Worker al configurar el webhook.
Ejemplo de un webhook con Hybrid Worker:
Ejemplo del runbook de PowerShell
El fragmento de código siguiente es un ejemplo de cómo realizar la actualización del modelo de Azure Analysis Services mediante un runbook de PowerShell.
param
(
[Parameter (Mandatory = $false)]
[object] $WebhookData,
[Parameter (Mandatory = $false)]
[String] $DatabaseName,
[Parameter (Mandatory = $false)]
[String] $AnalysisServer,
[Parameter (Mandatory = $false)]
[String] $RefreshType
)
$_Credential = Get-AutomationPSCredential -Name "ServicePrincipal"
# If runbook was called from Webhook, WebhookData will not be null.
if ($WebhookData)
{
# Retrieve AAS details from Webhook request body
$atmParameters = (ConvertFrom-Json -InputObject $WebhookData.RequestBody)
Write-Output "CredentialName: $($atmParameters.CredentialName)"
Write-Output "AnalysisServicesDatabaseName: $($atmParameters.AnalysisServicesDatabaseName)"
Write-Output "AnalysisServicesServer: $($atmParameters.AnalysisServicesServer)"
Write-Output "DatabaseRefreshType: $($atmParameters.DatabaseRefreshType)"
$_databaseName = $atmParameters.AnalysisServicesDatabaseName
$_analysisServer = $atmParameters.AnalysisServicesServer
$_refreshType = $atmParameters.DatabaseRefreshType
Invoke-ProcessASDatabase -DatabaseName $_databaseName -RefreshType $_refreshType -Server $_analysisServer -ServicePrincipal -Credential $_credential
}
else
{
Invoke-ProcessASDatabase -DatabaseName $DatabaseName -RefreshType $RefreshType -Server $AnalysisServer -ServicePrincipal -Credential $_Credential
}