4. #GlobalAzureLatam #GlobalAzure
ARQUITECTURAS
Azure Analysis
Services
Rest API
1
1
2
3
2
Azure Data
Factory
Web Activity
Azure Logic Apps
Http Action
3
App
Registration
Svc Principal
El objetivo global de este scenario
es el de orquestrar y procesar
objetos de una instancia de AAS a
traves de Logic Apps y Azure Data
Factory
4
4
Implementar un Registro de Aplicaciones (services principal) en Azure
Garantizar permisos a nuestra Aplicacion para Procesar Modelos de Azure Analysis Services
Implementar una Logic App que tenga permisos de lectura/escritura utilizando la REST API de Azure Analysis Services para procesar
modelos
Crear un pipeline de Azure Data Factory con un objeto de Actividad Web que se ejecutara en forma automatica llamando a
nuestra Logic App
6. #GlobalAzureLatam #GlobalAzure
REGISTRO DEAPLICACIONES
En Settings de nuestro Registro de
Aplicaciones damos click en
Permisos y seleccionamos API,
buscando por “Azure Analysis
Services”. A continuacion
seleccionamos “Lectura y Escritura
en todos los Modelos”
7. #GlobalAzureLatam #GlobalAzu
REGISTRO DEAPLICACIONES
Nuevamente en Settings de nuestro
Registro de Aplicaciones, damos
click en Llaves.
Ingresamos una descripcion para
nuestra Key, y la duracion de la
misma. Esta key sera creada y
necesitamos copiarla para
siguientes pasos.
9. #GlobalAzureLatam #GlobalAzure
ACCESOS Y PERMISOS ENAAS
• Nos conectamos a nuestra
instancia de AAS con SQL Server
Management Studio. Para
procesar modelos utilizando la
Rest API, la aplicacion registrada
anteriormente debe tener
permisos de Administracion
sobre nuestro AAS Server.
• Abrimos las propiedades de AAS,
y agregamos como entrada
manual nuestro App ID y Tenant
ID (copiados del paso anterior)
El formato a ingresar sera:
app:<app guid>@<tenant guid>
10. #GlobalAzureLatam #GlobalAzure
IMPLEMENTANDO NUESTRALOGICAPP
• Crear una nueva Logic App desde el buscador del Portal de
Azure. Luego damos click en el Diseñador
• Seleccionamos como primer paso “When a HTTP request is
received” como disparador (desde la lista de opciones)
• Agregamos un nuevo paso “+New step”, “y seleccionamos
como opcion “HTTP – HTTP” como accion.
• Tenemos ahora todos los components necesarios para
disparar nuestra Logic App desde Azure Data Factory y que
se comunique con la REST API de AAS
11. #GlobalAzureLatam #GlobalAzure
CONFIGURANDO LOGICAPPS
Configurar nuestra accion HTTP (Mas info en REST API doc de Microsoft:
https://docs.microsoft.com/en-us/azure/analysis-services/analysis-
services-async-refresh)
Metodo: POST
URI: https://<region>.as
azure.windows.net/servers/<servername>/models/<modelname>refreshes
Body: From the REST API documentation under POST/Refreshes with this
sample we are refreshing the whole database (model) by a process type Full.
It is possible to refresh only specific tables or partitions (see the image on
how to refresh a table)
{
“Type” : “Full”,
“CommitMode” : “transactional”,
“MaxParallelism” : 2,
“RetryCount” : 2,
“Objects” : []
}
Authentication: Active Directory Oauth
Tenant: Use the AAD ID from the App Registration screen
Audience: https://*.as azure.windows.net
Client ID: Use the App Registration App ID from that screen
Credential Type: Secret
12. #GlobalAzureLatam #GlobalAzure
PRIMER TESTING DE LOGICAPPS
• Correr la Logic Apps desde el
Diseñador
• Abrir la accion HTTP para ver la
respuesta de la REST API (esta URL es
muy importante copiarla para nuestro
pipeline en ADF)
• Luego que nuestra Logic App se
ejecuto esta lista para ser invocada
en Azure Data Factory
14. #GlobalAzureLatam #GlobalAzure
AZURE DATAFACTORY – DISEÑO DE
PIPELINE
• Accedemos a Autor & Monitoreo en la instancia de Azure
Data Factory
• En el panel visual, creamos un nuevo pipeline y
arrastramos un objeto de Actividad Web
• Configuramos el objeto de Actividad Web:
• URL: utilizamos el HTTP POST URL de nuestra
Logic App (paso anterior)
• Method: POST
• Body (mandatory): { “message” : “test” }
• Ejecutamos un Test y chequeamos que todo funciona OK
15. #GlobalAzureLatam #GlobalAzu
IMPLEMENTANDO TRIGGERS -AZURE DATAFACTORY
• Accedemos a Triggers
• Definimos Nombre, y
Descripcion de nuestro
trigger
• Definimos fecha de comienzo
para la ejecucion
• Recurrencia (Cada X minutos
/ horas / dias / semanas /
meses)
• Definimos Fecha de Fin
(opcional)