Azure SSAS permet d’héberger des modèles Tabulaires en PaaS cela à plusieurs avantages tels que la possibilité de Scaling dont nous avons largement parlé avec Antoine Richet de Microsoft dans la vidéo suivante :
Mais aussi la possibilité d’activer les logs et de les stocker dans Log Analytics ! Et ça en comparaison d’un extended event à requêter en XML ça n’a pas de prix (Enfin si, c’est 2.99 $ par Gb à l’ingestion + 0,13 $ par Gb par mois de stockage) !!!
Activer les diagnostics
Première étape : l’activation des diagnostics sur le service Azure Analysis Services. Avec la possibilité d’archiver les logs dans un compte de stockage (peu cher mais difficile à requêter) ; dans un Event Hub (peu de latence mais nécessité de consommer le flux) ; et Log Analytics qui à l’avantage d’être peu cher et requêtable mais avec un peu de latence (jusqu’à 20 minutes).
Il est aussi possible de choisir les options à récupérer parmi :
- Engine : Les XEvents, ce que l’on aurait récupéré avec une trace profiler complète requête comprise
- Service : Les opérations sur le service Azure telles que l’arrêt et la reprise du serveur
- AllMetrics : Les informations disponibles depuis l’onglet de Metrics du service Azure SSAS. Le détail des metrics est disponible ici => https://docs.microsoft.com/en-us/azure/analysis-services/analysis-services-monitor#server-metrics
Le diagnostic activé, il est possible de requêter les informations enregistrées depuis Log Analytics.
Afin de récupérer les évènements de Query_End par exemple, on pourra exécuter la requête suivante :
AzureDiagnostics
| where EventClass_s == "QUERY_END"
| where ServerName_s in ("meetup")
Cela permettra d’obtenir les requêtes DAX et MDX exécutées sur le service Analysis Services ainsi que les durées d’exécutions.
Cerise sur le gâteau, il est possible d’extraire un modèle PowerQuery afin de récupérer les données dans PowerBI !
Ce modèle est à coller dans une nouvelle requête PowerQuery et contient dans mon cas :
/*
The exported Power Query Formula Language (M Language ) can be used with Power Query in Excel
and Power BI Desktop.
For Power BI Desktop follow the instructions below:
1) Download Power BI Desktop from https://powerbi.microsoft.com/desktop/
2) In Power BI Desktop select: 'Get Data' -> 'Blank Query'->'Advanced Query Editor'
3) Paste the M Language script into the Advanced Query Editor and select 'Done'
*/
let AnalyticsQuery =
let Source = Json.Document(Web.Contents("https://api.loganalytics.io/v1/workspaces/6db50a68-a1d9-4171-881a-5ab0df6eca1b/query",
[Query=#"query"="AzureDiagnostics | where EventClass_s == ""QUERY_END"" | where ServerName_s in (""meetup"") ",#"x-ms-app"="OmsAnalyticsPBI",#"timespan"="P1D",#"prefer"="ai.response-thinning=true",Timeout=#duration(0,0,4,0)])),
TypeMap = #table(
{ "AnalyticsTypes", "Type" },
{
{ "string", Text.Type },
{ "int", Int32.Type },
{ "long", Int64.Type },
{ "real", Double.Type },
{ "timespan", Duration.Type },
{ "datetime", DateTimeZone.Type },
{ "bool", Logical.Type },
{ "guid", Text.Type },
{ "dynamic", Text.Type }
}),
DataTable = Source[tables]{0},
Columns = Table.FromRecords(DataTable[columns]),
ColumnsWithType = Table.Join(Columns, {"type"}, TypeMap , {"AnalyticsTypes"}),
Rows = Table.FromRows(DataTable[rows], Columns[name]),
Table = Table.TransformColumnTypes(Rows, Table.ToList(ColumnsWithType, (c) => { c{0}, c{3}}))
in
Table
in AnalyticsQuery
Cela permet de créer des tableaux de bord de suivi efficaces et personnalisés pour monitorer les instances SSAS et pourquoi pas identifier les requêtes à optimiser.