Analysis Service and Power BI – Let’s create Reports

Im Zuge der Entwicklung von Cloud Technologien und deren Vorteilen ist auch die Welt der Business Intelligence (BI) im Wandel. Technologien wie Azure Synapse oder Azure Data Lake machen das Verarbeiten und Speichern großer Datenmengen immer einfacher und schneller. Auch die BI Welt ist nicht ausgenommen von dieser Entwicklung. Um den modernen Notwendigkeiten von Schnelligkeit und Flexibilität zu entsprechen müssen konkurrenzfähige BI Lösungen ebenso flexibel und performant sein.

Besonders für Unternehmen, welche Millionen von Datensätzen verwalten und verarbeiten müssen bietet sich eine BI Technologie besonders an, Azure Analysis Services.

Microsoft hat als Weltmarktführer mit Power BI ein mächtiges Tool geschaffen, das den modernen Herausforderungen trotzt und schnelle performante Erstellung von Reports und Berechnungen möglich macht. Als Cloudkomponente zu Power BI ist Azure Analysis Services eine ideale Ergänzung zu Power BI und PowerPivot in Excel.

Nachdem Power BI aus einem Excel Plugin erwachsen und die Ähnlichkeiten erkennbar sind, ist es für viele Business Intelligence Veteranen ein Leichtes sich in Power BI zurecht zu finden. Jedoch kann es schwierig sein, ein einheitliches Datenmodell für das gesamte Unternehmen bereitzustellen, falls man nur mit Power BI arbeitet. Aufgrund der geforderten Flexibilität kann jeder Mitarbeiter ein eigenes Modell aus den für ihn zugänglichen Daten erzeugen. Dies kann von Vorteil sein und man kann neue interessante Wahrheiten in den Unternehmensdaten finden, für die monatliche Buchhaltungsabrechnung sollte dann aber doch eine richtige und nachvollziehbare Datengrundlage bestehen.

Dies ist ein Punkt, der durch Azure Analysis Services weitgehend verhindert werden kann. Das Modell wird dabei nicht lokal im RAM und VertiPaq Engine gespeichert, sondern in der Azure Cloud.  Damit ergeben sich einige Vorteile. Zuerst löst man das Problem der willkürlich wachsenden Datenmodelle. Jeder Teil des Unternehmens bekommt die Daten aus der gleichen Quelle, welche leichter zu warten und zu bewirtschaften ist. Früher musste man, um dies zu erreichen eine eigene On Premise Lösung über SSIS errichten und verwalten. In der modernen Welt ist dies nicht mehr nötig, dank den Cloudangeboten von Microsoft. Ein weiterer Vorteil von Azure Analysis Services ist, die Flexibilität mit gleichzeitiger Gewährleistung der Dienste. Azure Analysis Services bietet sowohl Skalierbarkeit in die Höhe als auch in die Breite. Das heißt man kann den Arbeitsspeicher, in Echtzeit, nach oben skalieren (auf bis zu 400GB) und die Anzahl an Replikationen erhöhen. Damit kann man auch unter extremen Lasten eine flüssige Präsentation und Berechnung der Reports gewährleisten. Genauso wie man unter Last die Rechenleistung erhöhen kann, lässt sich Azure Analysis Services auch bei geringen Lasten oder in der Nacht, wenn keine Abfragen an das Modell gestellt werden, runterskalieren oder ganz pausieren. Getreu nach dem Motto „Only pay for what you use“.

Mit der Auslagerung der Hardware in die Cloud spart man sich zusätzlich, die Anschaffung von spezieller Hardware, welche untypisch für Datenbankserver, viel RAM und eine schnelle CPU benötigen. Dafür aber von schnellem Lesen und Schreiben auf die Festplatte nicht viel profitieren.

Ein wichtiger Vorteil von Azure Analysis Services ist die Verwaltung per Skriptsprache. Es gibt für Modelle in Analysis Services zwei Skriptsprachen basierend auf XMLA (XML for Analysis). Als erstes wäre Tabular Object Model (TOM) zu nennen. Eine Erweiterung der Analysis Model Objects (AMO) Bibliothek des .NET frameworks. Die Zweite ist TMSL, Tabular Model Skripting Language, eine auf JSON basierende Skriptsprache. Besonders TMSL eignet sich hervorragend zu dem automatischen Bereitstellen von Modellen und Änderungen in Azure Analysis Services.

Verknüpft man TMSL mit den Möglichkeiten von PowerShell kann man die Azure Analysis Services Instanz per service principal automatisch managen und automatisches Deployment der Modelle konfigurieren.

Das Modell für Azure Analysis Services in liegt im JSON Format vor.

JSON

Wenn man das Modell dahingehend bearbeitet hat, dass es bereit zum Release ist kann man es via TMSL Befehl bereitstellen.

$model = gc  ‘Pfad\zum\Modell’ -raw | ConvertFrom-Json

$tmsl ='{“createOrReplace”:{“object”:{“database”:””},”database”:{}}}’ | ConvertFrom-Json

$($tmsl.createOrReplace.object).database = “<Neuer Modellname>”

$($tmsl.createOrReplace).database = $model

Um TMSL Skripte auf Modelle im Azure Analysis Services anzuwenden benötigt man nur den Servernamen, welchen man im Azure Portal findet und das Invoke-ASCmd Cmdlet.

Um per service principal Änderungen auf Azure Analysis Services durchführen zu können muss man ihn gegeben falls noch als Admin registrieren.

Service Principal

Danach kann man per Invoke-ASCmd TMSL Skripte an die Azure Analysis Services Instanz abschicken.

Invoke-ASCmd -Server “asazure://<Region>.asazure.windows.net/<AAS Name>” -Query ($tmsl | ConvertTo-Json -Depth 25)

Analysis_Services_Instanz

 

Für einen automatisierten Release kann man das damit erstellte PowerShell Skript als Task an eine Release Pipeline in Azure DevOps einbinden.

Hat das Modell fertiggestellt und bereitgestellt lässt sich AAS einfach per Power BI abfragen.