Microsoft BI

Darstellung herausgefilterter Zeit-Kategorien

Arno Cebulla

Ein typisches Verhalten in Reporting-Services ist es, dass Daten, die mit Parametern herausgefiltert werden, auch im Bericht nicht dargestellt werden. Beispiel: In diesem Chart werden die Umsätze für ein Jahr dargestellt: 

 Wenn nun nur noch die Monate Januar-April im Month-Parameter ausgewählt werden, erscheint folgendes Chart:

 

Die Daten werden per MDX aus einem Cube gelesen und im Dataset mit einem Subselect oder in der WHERE-Bedingung gefiltert:

SELECT

 {[Measures].[Sales Amount]} ON 0,

 NON EMPTY

 {([Date].[Calendar].[Date].ALLMEMBERS )} ON 1

 FROM

 (SELECT ( STRTOSET(@DateCalendarYear, CONSTRAINED) ) ON 0

 FROM

 (SELECT ( STRTOSET(@DateMonthofYear, CONSTRAINED) ) ON 0

 FROM [Adventure Works]))

Der Kunde wünscht nun, dass die übrigen Monate aber dennoch (mit dem Wert 0) angezeigt werden sollen. Hierfür gibt es zum einen die Möglichkeit, dieses bereits im MDX-Query zu lösen. Dies geschieht über einen String-Vergleich in einem IIF-Block. Leider ist diese Methode recht unperformant.

Ein besseres Ergebnis kann man mit dieser Methode erzielen, vorausgesetzt man verwendet SQL Server ab Version 2008 R2:

Im Dataset werden zunächst alle Daten für das Jahr geholt:

SELECT

 {[Measures].[Sales Amount]} ON 0,

 NON EMPTY

 {([Date].[Calendar].[Date].ALLMEMBERS )} ON 1

 FROM

 (SELECT ( STRTOSET(@DateCalendarYear, CONSTRAINED) ) ON 0

 FROM [Adventure Works])

Dann wird ein zweites Dataset „GueltigeMonate“ erstellt, in dem die Monate anhand des Parameters gefiltert werden:

WITH

MEMBER [Measures].[ParameterCaption] AS [Date].[Month of Year].CURRENTMEMBER.MEMBER_CAPTION

MEMBER [Measures].[ParameterValue] AS [Date].[Month of Year].CURRENTMEMBER.UNIQUENAME

MEMBER [Measures].[ParameterLevel] AS [Date].[Month of Year].CURRENTMEMBER.LEVEL.ORDINAL

SELECT

{[Measures].[ParameterCaption], [Measures].[ParameterValue], [Measures].[ParameterLevel]} ON COLUMNS ,

[Date].[Month of Year].ALLMEMBERS ON ROWS

FROM

(SELECT STRTOSET(@Monate,CONSTRAINED) ON 0

FROM [Adventure Works])

Nun müssen beide Datasets miteinander verbunden werden. Hierzu werden die Eigenschaften der Serie geöffnet:

Im Feld für die Daten (Value) wird nun der Lookup gegen das Dataset „GueltigeMonate“  hergestellt. Hierfür wird die Funktion „Lookup“ benötigt. Die Syntax sieht so aus:

=IIF(LEFT(Fields!Month.Value,LEN(Fields!Month.Value)-5)=

LOOKUP(LEFT(Fields!Month.Value,LEN(Fields!Month.Value)-5), Fields!ParameterCaption.Value,Fields!ParameterCaption.Value,”GueltigeMonate”),

Sum(Fields!Sales_Amount.Value),0)

Diese Syntax bewirkt folgendes:

Wenn der Monatsname im Haupt-Dataset gleich einem Monatsnamen ist, der im gefilterten Monats-Dataset vorhanden ist, so wird der Wert angezeigt, ansonsten wird die Zahl 0 angezeigt.

Wenn nun im Bericht die gleiche Selektion wie am Anfang beschreiben durchgeführt wird, ergibt sich das gewünschte Bild: 

Die Anzeige-Geschwindigkeit konnte mit der Lookup-Methode gegenüber der Behandlung im Query halbiert werden. In einem der nächsten Blog-einträge werde ich die Lookup-Funktion dann nochmal näher beleuchten.

  • Share/Bookmark

Microsoft Analytics für Twitter

David Claßen

Mit "Analytics for Twitter" stellt Microsoft ein kostenloses PowerPivot AddIn zur Verfügung, mit dem Abfragen aus einem Excel 2010 Dashboard heraus gegen die Online-Blogging-Plattform Twitter gestellt werden können. Anschließend lassen sich die mit PowerPivot gespeicherten Daten über ein Excel-Dashboard analysieren.
Diese zur Verfügung gestellte “Demo” eignet sich für die

  • die Twitter immer schon mal analysieren wollten
  • die PowerPivot anhand von Echtdaten kennenlernen wollen
  • die es spannend finden, Excel als Dashboard zu verwenden

Dashboard

(continue reading…)

  • Share/Bookmark

Microsoft setzt mit dem Projekt Barcelona auf Metadatenmanagement

Thomas Strehlow

Nach der Durchsicht der Denali CTP3 Version war der Depency Service aus der CTP2 nicht mehr zu finden. Die Dokumentation verweist zwar noch darauf, aber sämtliche Funktionen im Management Studio waren abgeschaltet.

Nach Auskunft durch den Projektleiter des Projektes Barcelona hat Microsoft den Dependency Service aus Denali herausgenommen und stattdessen bereits im April das Projekt Barcelona initiiert. Dabei handelt es sich um ein umfassendes Metadaten Management System, das Daten aus folgenden Quellen integriert:

  • SQL Server Datenbank
  • Integration Services
  • Reporting Services
  • Sharepoint
  • Excel

Offensichtlich wird es auch die Möglichkeit geben weiter Datenquellen anzubinden. Die Gesamtarchitektur wird wie folgt vorgestellt:

image

Was ist denn überhaupt Metadaten Management? Metadaten werden nach Kimball als „all data about data“ beschrieben. Nicht selten wird Metadaten Management mit Masterdaten Management verwechselt. Der Begriff ist gerade in der BI sehr umfassend. Die nachfolgende Tabelle umschreibt die Bereiche in denen innerhalb einer BI und DWH Umgebung Metadaten Management eine Rolle einnimmt:

 

Fachlich

Technisch

Operativ

Frontend / BI

Kennzahlendefinitionen, Umbenennungen, KPI, Kommentare

Berechnete Kennzahlen, Berichtslayout, Filtereinstellungen

Aktualität, Systemzugriffe (Nutzung), Änderungshistorie

Backend / DWH

Konzeptionelles Datenmodell, Hierarchien, Dimensionen, Fakten

Datenmodell und Dokumentation

Physisches Datenmodell, Tabellennamen, Nutzungsstatistiken

Datenintegration / Datenqualität

Umbenennungen, fachl. Prozessbeschreibungen, Quellsysteme, Referenzdaten

Datenflusslogik, Transformationen, DQ Regeln, Quellsysteme

Durchlaufzeiten, Hardwareauslastung, Verarbeitungsstand, Quellsysteme

 

Microsoft wird mit dem Projekt Barcelona sicher nicht den gesamten Bereich abdecken. Hier wird der Schwerpunkt auf der automatischen Dokumentation von Referenzen und Datenflüssen liegen.

Es steht bereits jetzt eine erste GUI zum Test zur Verfügung. Diese ist als „moderne“ Cloud Anwendung umgesetzt: http://projectbarcelona.cloudapp.net

Grundsätzlich schließt Microsoft mit Barcelona eine wichtige Lücke in der gesamten BI Strategie. Durch die Integration der wichtigsten BI Produkte ist das Vorgehen vielversprechend. In wenigen Monaten soll die Roadmap veröffentlicht werden. Dann wird auch klarer wann und in welcher Form Microsoft diese Lösung anbieten wird.

  • Share/Bookmark

Product Guide für SQL Server Denali (CTP3) veröffentlicht

David Claßen

Microsoft hat einen Product Guide zum aktuellen CTP3 Release des im kommenden Jahres erscheinenden SQL Server (Denali) veröffentlicht.

Das 456 MB große Paket kann im Microsoft Download Center heruntergeladen werden. 
In diesem Paket sind unterschiedlichste Materialien enthalten, die dem interessierten Anwender die wesentlichen Neuerungen näher bringen.

Die folgenden Materialien sind in dem Paket enthalten:

  • 14 Datenblätter zum CTP3 Release
  • 8 PowerPoint Präsentationen
  • 5 Whitepaper
  • 44 Links zu Online-Videos inklusive 26 Präsentationen von der US-TechEd 2011
  • 6 durchklickbare Demos
  • 26 Links zu Online-Dokumentationen
  • 13 Hands-On Lab Preview Dokumente
  • 13 selbstlaufende Demos

 

Nach dem das Paket heruntergeladen und entpackt wurde befinden sich im Zielverzeichnis mehrere Dateien und Unterordner. Um den Product Guide zu starten, muss die Datei STARTHERE.CMD ausgeführt werden. Es öffnet sich dann der definierte Standard-Browser mit der Startseite des Product Guides. Über die Startseite lassen sich dann alle angebotenen Ressourcen auswählen.

Denali_CTP3_ProductGuide

 

 

 

 

 

 

 

Download des Product Guides:
http://www.microsoft.com/download/en/details.aspx?id=27069

Download SQL Server Code Name “Denali” CTP3:
http://www.microsoft.com/betaexperience/pd/SQLDCTP3CTA/enus/default.aspx

  • Share/Bookmark

Neues zum Thema BI auf der Microsoft TechEd 2011 in Atlanta

Jörg Plümacher

 

Auf der diesjährigen TechEd in Atlanta gab ein paar äußerst interessante Beiträge zum Thema Datenbanken und Business Intelligence.

Wichtiger Beitrag zum Thema Microsoft BI und wie es mit SSAS und BISM weitergeht:
What’s New in Microsoft SQL Server Code-Named "Denali" for SQL Server Analysis Services and PowerPivot – laut Chris Webb ein “Must see”
http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DBI206

Abundantly "Crescent": Demos Galore
http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DBI208

Alle Videos zum Thema Business Intelligence – insgesamt 42 Session!! Ich finde hier sieht man das Microsoft das Thema sehr ernst nimmt
http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011?t=database%2B-and-%2Bbusiness%2Bintelligence

  • Share/Bookmark

Hyperlinks in Reporting Service unter Verwendung von GUIDs

GUIDs (Globally Unique Identifier) in Hyperlinks zu verwenden ist im Rahmen von Reporting Services nicht ohne weiteres möglich.

Es wird versucht folgenden URL Aufbau https://crmServer/OrganizationName/activities/task/edit.aspx?id={3c046c31-f921-df11-8947-000c29d3e997}, mit Hilfe von einem Parameter und einem GUID Feld herzustellen.

Die einfachste Art der Verknüpfung von einem Parameter mit URL Informationen und einem GUID Feld

Parameters!URLAuftrag.value & Fields!AuftragID.value

führt zu einem Fehler. Die GUID mit Hilfe von Cstr() in einen String zu konvertieren führt auch nicht zum gewünschten Ergebnis.

Parameters!URLAuftrag.value & Cstr(Fields!AuftragID.value)

Die Ctype () Funktion ist hier die gesuchte Funktion. Mit dieser Funktion ist es möglich das GUID Feld in einen String zu konvertieren und mit dem Parameter, welches die URL Informationen beinhaltet, zu verknüpfen.

Parameters!URLAuftrag.value & Ctype(Fields!AuftragID.value, guid).tostring

Der folgende Javascript Aufruf führt dazu, dass der Hyperlink in einem gesonderten Fenster geöffnet wird.

=”javascript:void(window.open(‘” & (Konvertierungsfunktion) & “}’,'_blank’))”

  • Share/Bookmark

Templating-Mechanismus für Integration-Service-Pakete

Daniel Esser
Einführung

Es gibt vielerlei Gründe dafür ein SSIS-Template-Paket zu erstellen. In der Regel möchte man die Konfiguration über die Vielzahl der Paket in einem Projekt homogen halten. Heterogenität in der Paketkonfiguration erhöht die Fehleranfälligkeit während der Bereitstellungsphase insgesamt. Zwar gibt es die Möglichkeit der Vererbung der Konfiguration für Unterpakete, allerdings führt das für den IS-Entwickler dazu, dass Pakete nicht mehr einzeln zu starten sind, da diesen Paketen die vererbte Konfiguration des Elternpakts fehlt. Diese Einschränkung ist für die Entwicklung nicht hinnehmbar.

Um diese Einschränkung zu umgehen, muss jedes Paket einzeln Konfiguriert werden. Diese Arbeit manuell zu machen erhöht wieder die Fehleeanfälligkeit für die Bereitstellungsphase. So liegt der logische Schluss der Automatisierung recht nahe.

Nun gibt es unzählige Möglichkeiten IS-Pakete automatisiert anzupassen. Eine Möglichkeit wäre die Pakete durch einen XSLT-Prozessor zu jagen, die für die richtig Konfiguration sorgt. Das hätte den Charm, dass man für verschiedene Bereitstelllungszenarien verschiedene XSLT-Stylesheets schreiben könnte, die die jeweilige Konfiguration für das entsprechende Endsystem berücksichtigt. Der Nachteil dieser Variante ist, dass das KnowHow für XSLT vorhanden sein muss. Außerdem geht XSLT nicht leicht von der Hand.

Ein andere Variante wäre ein .NET-Applikation zu entwerfen, welche mitteln des IS-Objektmodell die entsprechenden Pakte anpasst oder generiert. Der Nachteil hierbei wäre die fehlende Flexibilität während der Entwicklung. Schnelle Änderungen setzen eine Ressource mit C#-Kenntnissen und Visual Studio voraus.

Eine ähnlicher aber flexiblerer Ansatz wäre eine Skript-Sprache zu verwenden mit Zugang zur .NET-Welt. Die Möglichkeiten sind auch hier wieder vielfältig. Hier wären zu nennen: Visual Basic, PowerShell und Iron Python. Welche Skript-Sprache man verwendet ist eher eine Geschmackssache. Da ich das Erweitern von IS-Paketen um eine einheitliche Paketkonfiguration eher in der Bereitstellung verorten würde, würde ich PowerShell (wegen der Nähe zur Administration) den Vorzug geben.

Grundgerüst

Die erste Hürde, die es zu meisten gilt ist von recht langweiliger Natur. Standardmäßig können PowerShell-Skripte nicht direkt ausgeführt werden. Wenn man sich die Mächtigkeit der PoweShell bewusst macht, ist das verständlich.

Es gibt zwei Wege dieses Hürde zu nehmen. Zum einen können wir die Sicherheitsmaßnahmen für PowerShell-Skripte herunterfahren. Für eine Produktionsumgebung ist das nicht zu empfehlen, zu Entwicklungszwecken aber legitim. Mit folgendem Kommando wird die Sicherheitseinstellung ausgeschaltet.

Set-ExecutionPolicy Unrestricted

Für eine Produktionsumgebung müsste das Skript signiert werden und eine Vertrauensstellung dem Eigentümer gegenüber eingerichtet werden. Weitere Informationen hierzu finden sich hier:

Der nächste Schritt wäre PowerShell mit SSIS zu verheiraten. Dazu müssen Assemblies des SQL Servers geladen werden. Im Fall des SQL Server 2008 befinden sich diese Dateien im Verzeichnis C:\Program Files (x86)\Microsoft SQL Server\100\SDK\Assemblies.

[Reflection.Assembly]::LoadFile(“…\Microsoft.SqlServer.DTSPipelineWrap.dll”)[Reflection.Assembly]::LoadFile(“…\Microsoft.SQLServer.ManagedDTS.dll”)

Nach diesem Schritt stehen einem alle Objekte des SSIS-Objektsmodells zur Verfügung. Der nächste Schritt ist nun sich eine SSIS-Applikationskontext zu besorgen, ein Paket zu erstellen bzw. zu öffnen, Änderungen vorzunehmen und diese wieder abzuspeichern. Hier ein Beispiel für ein Grundgerüst:

# SSIS-Kontext erstellen
$context = new-object Microsoft.SqlServer.Dts.Runtime.Application

# Neues Paket erstellen
$package = new-object Microsoft.SqlServer.Dts.Runtime.Package

# Paket nach eigenen Wünschen anpassen

# Aufräumen
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($package)[System.Runtime.Interopservices.Marshal]::ReleaseComObject($context)

Remove-Variable context
Remove-Variable package

Soll ein bereits vorhandenes Paket geöffnet werden müsste das Grundgerüst entsprechend angepasst werden:

$context.LoadPackage(“C:\TestPackage.dtsx”, $null, $false)

Variablen erstellen und/oder anpassen

Bei der Homogenisierung der Paketkonfiguration werden Variablen benötigt. Zum Beispiel können Variablen dazu verwendet werden bestimmte Connections über Expressions zu Parametrisieren. Hier ein einfaches Beispiel um dem Paket Variablen mit zu geben. Diese Variablen werden später mittels Expressions an eine Connection weitergegeben. Über diese Connection werden dann alle benötigten weiteren Connections und Variablen geladen.

$var = $package.Variables.Add(“AdminDBCatalog”, $false, “Config”, “AdminDB”)
$var = $package.Variables.Add(“AdminDBHostename”, $false, “Config”, “HOSTNAME”)

Paketkonfiguration einschalten

Wie die Connections und die Variablen ist auch die Paketkonfiguration über das Objekt-Modell zu erreichen. Der Einfachheit halber verzichte ich an dieser Stelle darauf zu überprüfen ob die Konfiguration bereits existiert. Auf das grundlegende Prinzip dabei gehe ich bei der Erstellung der Connections im nächsten Abschnitt ein.

Im folgenden erstelle ich eine Paketkonfiguration welche einen Katalog- und Hostnamen aus einer Environmentvariable läd. Später wird eine Connection dann mit den Inhalten der Variablen parametrisiert.

#Sicherstellen, dass die Paket-Konfiguration eingeschaltet ist
$package.EnableConfigurations = $true

# Katalog aus Envrironment-Variable laden
$config = $package.Configurations.Add()
$config.Name = “AdminDBCatalog”
$config.ConfigurationType = 2
$config.ConfigurationString =
“AdminDBCatalog”
$config.PackagePath =
“\Package.Variables[Config::AdminDBHostname].Properties[Value]”

# Katalog aus Envrironment-Variable laden
$config = $package.Configurations.Add()
$config.Name = “AdminDBHostname”
$config.ConfigurationType = 2
$config.ConfigurationString =
“AdminDBHostname”
$config.PackagePath =
“\Package.Variables[Config::AdminDBCatalog].Properties[Value]“

Connections erstellen oder anpassen

Wesentlicher Bestandteil einer Connection ist der Connection-String und der Connection-Type. Folgendes Beispiel zeigt die Erstellung einer einfachen OLEDB-Connection:

$conMgr = $package.Connections.Add(“OLEDB”)
$conMgr.Name = “AdminDB Connection”
$conMgr.ConnectionString = “Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=AdminDB;Data Source=HOSTNAME;Auto Translate=False;”

Den Connection String bekommt man entweder über der Database Explorer des VS, mit dem SSIS-Designer oder von http://www.connectionstrings.com/. Den Connection Type könnt ihr mit folgendem Befehl ermitteln:

$context.ConnectionInfos | select ConnectionType

ConnectionType
————–
ODBC
FLATFILE
OLEDB
MULTIFILE
MSOLAP100
HTTP
FILE
ADO.NET
FTP
ADO
MULTIFLATFILE
EXCEL
SQLMOBILE
CACHE
MSMQ
SMTP
WMI
SMOServer

In der Regel wäre es für unser Vorhaben aber besser wenn auf das Vorhandensein der Connection geprüft und diese ggf. angepasst würde. Prüfen kann man diese wie folgt:

$ErrorActionPreference = “SilentlyContinue”
$connectionName = “AdminDB Connection”
$conMgr = $package.Connections.Item($connectionName)

# Im Fehlerfall Connection neu anlegen
if (!$?) {
$conMgr = $package.Connections.Add(“OLEDB”)
$conMgr.Name = $connectionName
}

# Connections String setzen
$conMgr.ConnectionString = “Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=AdminDB;Data Source=ANDERESOURCE;Auto Translate=False;”

Diese Technik stellt sicher, dass die Connection angelegt wird oder wenn bereits vorhanden, angepasst wird. Im zweiten Schritt wird die Connection so mit Expressions parametrisiert, dass die Connection dynamisch von den beiden Enronmentvariablen AdminDBCatalog und AdminDBHost abhängt.

# Connection an die Paketkonfiguration koppeln
$conMgr.SetExpression(“InitialCatalog”, “@[Config::AdminDBCatalog]“)
$conMgr.SetExpression(“ServerName”, “@[Config::AdminDBHostname]“)

Speichern des Pakets

Gespeichert werden kann das Paket mit folgendem Kommando:

$context.SaveToXml(“C:\TestPaket.dtsx”, $null)

Fazit und Ausblick

Im weiteren Verlauf wäre es wohl Ratsam weitere Fehler abzufangen. Des weiteren müssten weitere Variablen und Connections hinzugefügt werden, die man über eine Konfigurationsdatenbank konfigurieren will. Zum Schluss müsste noch die Paketkonfiguration angepasst werden, so dass weitere Inhalte aus der Konfigurationsdatenbank in Variablen geladen werden.

Wie jedoch zu sehen ist kann man mit PoweShell-Skripten und relativ wenigen Zeilen einen kleinen IS-Paket-Generator schreiben der auch noch leicht zu verstehen und zu erweitern ist.

Die Arbeit für solch ein Skript hat man genau einmal. Sich bei jeder Änderung der Konfiguration oder der Implementierung neuer Pakete durch die Dialoge der Paketkonfiguration zu klicken ist recht mühsam, Fehleranfällig und zeitverschwenderisch.

  • Share/Bookmark

Self-Service BI, PowerPivot and the future of traditional BI (DWH, OLAP, MDX)

Hilmar Buchta

SQL Server 2008R2 | Excel 2010/PowerPivot

Since I’m using the recently released Microsoft PowerPivot Add-In for Excel 2010 and when reading the rumors about the future of traditional OLAP and MDX there are some questions about the big picture of a BI-environment including self-service functionality. Basically, the BI world of the past had excepted the idea of a central data warehouse having a meta data layer such as OLAP to perfectly present the information to the end users. What about this new player PowerPivot then? How does this fit into the picture? Is there still a future for things like OLAP, MDX, central data warehouses or do we only need to roll out self-service BI functionality to every desktop PC? Some people have asked me questions about my point of view here and although I’m not a Microsoft representative I’d like to share my personal opinion with you:

Self-service BI tools are not and will never be a replacement for traditional BI-systems but a great enhancement for them.

 image Simple dashboard build using only Excel 2010 with PowerPivot. No centralized BI needed anymore?

 

In other words, including self-service BI functionality to your BI-system will increase the possibilities and the analytical power of the end users. But if you are cutting costs for centralized BI solutions believing to replace them with self-service tools, you’ll end up with even higher costs as suddenly the work that has only been done once in the centralized BI system will be performed redundantly, in an inconsistent way, error-prone and with much more working time needed.

In order to understand this, let’s look at just some advantages, a centralized BI-system can offer, which cannot be replaced by a decentralized self-service BI tool like PowerPivot:

Combination of data from multiple source in a consistent and time-saving way
If this is done on a user per user approach, it is very likely that different users are getting to different results. Also, this work is highly redundant. Imagine different departments getting to the IT in order get “their” data exported, then trying to combine it into a single data store. Often enough, this job requires additional mapping tables (customers, articles etc. may have different ids in different systems). We are supporting customers with multiple ERP-systems (due to mergers) and the mapping can be quite complicated. But even if it is just a single source of information, mapping between different tables has to be done and requires skills and knowledge about the data models. For example, if you forget to consider a key field the result may differ significantly. Or think about the need to exclude rows with a certain status, because this means they’re cancelled. One end user might know about this, the other might not.
This means that you will still need your sophisticated ETL processes, a proper front room model, slowly changing dimensions and all the stuff we know from our typical BI projects.

Consistent use of common calculations considering approved business rules
In many cases, our current ETL processes include complicated business processes for doing calculations and data mappings. Key measures and performance indicators have to be calculated in a consistent way. Business rules are the backbone for the company’s information system. If different departments are comparing apples and oranges, there is a lot of space for confusion and wrong decisions. Think of a simple example, like reporting the revenue. Are warranty adjustments considered? What about partial payments or commissions? What about discounts (for example staff discounts)? For all those aspects it has to be decided to include or exclude them into a certain key measure and also which relation to the time dimension is correct. Is revenue for a partial payment considered as a sale (full amount) at the date of purchase or are the real payments (cash flow) considered? If every user has to make these decisions it is very unlikely that everybody is doing the same calculations. Comparing results for different departments (think of a sales meeting for the different product managers) will then get very difficult.

Security can only be implemented in a central data store
Some real world scenarios are currently looking like this: The IT department exports data for other organizational structures, manually filtering out the data that is not intended for the recipient. This might work with very simple security structures, but with more security roles, user dependent security or more information recipients, this would lead to an enormous amount of work for exporting all the data. And if there are changes to the companies security model, all the exports have to be considered again. Having a central OLAP solution makes it easy to define the security roles and access rights in a central place using the business view on the data. For example, in OLAP you can restrict a user to see the cost centers for which she or he is responsible – OLAP takes care about all related data (for example automatically filtering the cost facts to these cost centers). There is no need for a huge amount of data exports as users can retrieve the data and information they need and IT only has to make sure that the data is available and secured.

The need for management reporting
Management needs an overview about some or all business units. Having the information (especially the calculations, KPIs etc.) in a decentralized environment makes it very difficult to get this management reporting in a simple, time saving way. It is more likely, that IT has to do special exports which are then processed by the controlling department to build the management reports. This could result in controlling spending all the time in doing data management, not information management and controlling. Also, in this scenario, the data from the management reporting will most likely differ from the data of the departments. Just imagine the CEO going to a some product manager saying “Hey, you’re product profitability is –5%” and the product manager says “No, it isn’t. Look at MY report. Here it reads +3%” and actually neither of them could say which result was the right one…

Then, after all, if the central BI environment is so important, do we really need decentralized self service BI? Well, not every user will need self-service BI but for some it can be a real time saver or give them a lot of analytical power. Here are just two important scenarios:

  • The end user wants to analyze information by special properties of the data which are not present in the centralized data warehouse. Just think of product managers. Each product has a different target group, special conditions in the market and therefore potentially certain aspects that are different from product to product and therefore from product manager to product manager. Those information might only be relevant for certain products. Having this in a central data warehouse would be confusing as the information has no meaning for most of the products. Allowing each department to cover the specific needs of their work while still providing the central information being available in the data warehouse is the best way here.
  • The end user wants to combine the centrally provided information with other sources of data, for example information that has been purchased/acquired from external sources and which is not complete in means of geography, time etc. Think of a marketing department planning a campaign. In order to do so, they want to analyze sales data in conjunction with external data for purchasing power. The external information was only purchased once for the region where the campaign is planned. This kind of data cannot be loaded into the central data warehouse. But with self-service BI it can be analyzed side-by-side with the centrally provided sales data.
    Or think of one department trying to improve product quality by changing some of the parameters during the production cycle for some of the production batches. These changes are tracked in some other system (let’s say Excel) but not in the central DWH as they do only apply to this single line of production. Self-service BI allows us to analyze changes in the parameters together with data from the central data warehouse side by side (for example quality control data in this case).

So my opinion is that the traditional centralized BI systems really benefit from self-service BI functionality. However, self-service BI can never replace traditional BI. But what about technical aspects, especially the future of MDX? MDX is the query language for multidimensional databases (used by many vendors). In PowerPivot we can do a lot of the calculations using the new expression language called DAX. Will DAX be a replacement for MDX? Absolutely not! DAX is meant to bring analytical power to Excel users. It looks similar to Excel functions and in fact many Excel functions can be used. Its strength is simplicity. Although one could imagine to extent the expression based DAX language to query functionality (in MDX you can write both, queries and expressions) this would also complicate the use of DAX which is clearly not intended. Even with today’s Excel, many users only know about the operators +, –, / and * and the SUM function (advanced users know about SUMIF…). In order to have end users, even power users, being able to leverage the power of a self service BI solution, the calculation functions have to be as simple as possible. This is the idea of DAX. However, when defining complex queries, building highly sophisticated business logic into calculations or KPIs, implementing ease-of-use like KPI trends, OLAP actions, drill through queries, navigation in hierarchies (DAX has no hierarchies) MDX has everything that’s needed here. Including this functionality into DAX would only make it complicated and more difficult to understand and use. Of course, this is only my opinion, but I’m sure that MDX will still be used for what it is used today and DAX expressions will be used for self-service calculations and mappings that are intended to be done by none-technical people.

When using client-side technology to create any kind of informational insight we have to monitor this process carefully. There has to be a process to maintain business requirements and implement changes to the central BI-system to avoid the negative effects mentioned above. As with PowerPivot, it is also possible to monitor which workbooks have been used and which data sources have been queried (if the PowerPivot sheets are published to Sharepoint 2010). I think this is also important to really understand, if the self-service BI tool is used in a way it is intended to be used or if some analysis requirements that should have been part of the central BI solution are now starting to be solved in multiple departments redundantly.

So again, we will see a co-operation between the centralized BI-system and self-service BI solutions, as well as between MDX and DAX. Self-service BI and DAX are not the fox in the chicken-house of traditional BI but they are extending the vision and scope of BI-systems of today and in the future.

  • Share/Bookmark

PowerPivot und Codename “Dallas”

Jörg Plümacher

Erst kürzlich habe ich in einem Blog von dem Microsoft Projekt “Dallas” gehört. Es ist ein Codename und derzeit ist die CTP2 öffentlich und wer über einen Windows Live Account verfügt, kann an der CTP2 teilhaben.

http://www.microsoft.com/windowsazure/dallas/

Microsoft® Codename "Dallas" is a new service allowing developers and information workers to easily discover, purchase, and manage premium data subscriptions in the Windows Azure platform. Dallas is an information marketplace that brings data, imagery, and real-time web services from leading commercial data providers and authoritative public data sources together into a single location, under a unified provisioning and billing framework. Additionally, Dallas APIs allow developers and information workers to consume this premium content with virtually any platform, application or business workflow.”

Aber um was geht es? Dallas ist eine Datenintegrations-Plattform. Es ermöglich den Anbietern von Datendiensten ihre Daten einer breiten Basis von Anwendern zur Verfügung zu stellen. In der momentanen Phase befinden sich bereits einige prominente Anbieter wie NASA, Associated Press (AP), Wheater Channel oder NAVTEQ. Derzeit können alle angebotenen Inhalte kostenlos getestet werden.

Der eigentliche Clou ist aus meiner Sicht aber die Verbindung dieser Daten mit PowerPivot (freies Excel-Addin für Office 2010). Über den Analyse Button lassen sich die “Dallas” Daten direkt nach PowerPivot importieren. Dort angekommen lassen sich diese Daten mit den “lokalen” Daten kombinieren.

Also kurz:

  • Daten. (Einige sind frei, andere kosten per Download. Den Katalog der Datenanbieter findet man hier: https://www.sqlazureservices.com/Catalog.aspx)
  • Aufgebaut auf der Windows Azure Plattform
  • Anpassbar über eine REST-basierte APIs.

Hier sind verschiedene Szenarien vorstellbar:

  • Lokale Abverkaufsdaten können mit dem Wetter am Standort korreliert werden
  • Geografische Informationen (z.B. Ländergesellschaften) lassen sich anreichern mit Daten der UNO, wie Einwohnerzahlen oder sonstige soziografische Daten
  • Verbindung der Kundendaten mit Daten der Gelben Seiten
  • Share/Bookmark

Projekt Dallas – Step by Step

Jörg Plümacher

Der Startpunkt befindet sich auf der Seite http://www.microsoft.com/WindowsAzure/dallas/.

Wie melde ich mich bei “Dallas” an?

Zunächst benötigt man eine Windows Azure Subscription. Dazu muss man sich derzeit nur mit seiner Windows Live Id anmelden (http://www.microsoft.com/windowsazure/offers/).

Anschließend landet man auf der Katalog Seite und kann hier die verschiedensten Daten “subscriben”. Exemplarisch sei hier der Dienst von Associated Press (AP) dargestellt.

image

Auf der folgenden Seite lassen sich dann die Service Parameter einstellen. Hier werden dann die für den Zugriff benötigten Informationen dargestellt:

  • Account Key
  • Unique User ID
  • Service URL

Diese werden für einen Zugriff benötigt.

 

image

Der Analyse Button öffnet das PowerPivot AddIn von Excel 2010.

image  image image

image

Anschließend stehen die Daten im Addin zur Verfügung und können mit den lokalen Daten verknüpft werden. Auch die Aktualisierung der Daten ist so möglich.

image

Weitere Beiträge:

  • Share/Bookmark

  • Kategorien

  • Copyright © 1996-2011 ORAYLIS Blog. All rights reserved.