Overblog Folge diesem Blog
Edit post Administration Create my blog
Blog von Olaf Helper

Was ist in einem MS Excel PowerPivot Workbook enthalten?

4. April 2012 , Geschrieben von Olaf Helper Veröffentlicht in #OLAP

Nein, ich bin nicht neugierig, ich möchte es halt nur manchmal genau wissen und die Frage ist: Was ist in einem MS Excel PowerPivot Workbook enthalten?
Hintergrund der Frage ist auch, was passiert, wenn ich ein solches Workbook mit Excel auf einem Arbeitsplatz öffne, wo kein PowerPivot installiert ist? Kann ich sie evtl. gar nicht erst öffnen oder gehen beim Speichern die PowerPivot Daten verloren?
Die Workbooks von Excel 2010 haben das "OpenXML for Documents" Format, also XML Dateien. Öffnet man eine solche Datei in einem Texteditor, sieht es aber nicht nach XML aus, man sieht nur kryptische Zeichen. Grund ist einfach der, das die eigentliche XML Datei(en) im ZIP Verfahren komprimiert sind, um Platz zu sparen; die XML Tags und Datenkodierung blähen die Datenmenge doch sehr stark auf.
Und damit liegt der Trick, wie man Einblick ins Workbook erhält, auch schon auf der Hand: Man benennt die Dateiendung von .XLSX und .ZIP um und schon behandelt Windows es wie eine ZIP Datei (zur Sicherheit bitte mit einer Kopie arbeiten!).
Den ersten Unterschied zu einer Excel Datei ohne PowerPivot findet man gleich im Root Verzeichnis, es gibt einen zusätzlichen Ordner "customerXml". Dieser enthält einige XML Dateien, vermutlich Metadaten etc., nicht besonders spannend.
Im Standard-Ordner "xl" findet man einen weiteren neuen Ordner "customData", dieser beinhaltet in meinem Fall eine Datei "item1.data" mit der Größe von 11,7 MB; da das ganze Workbook 11,9 MB groß ist, liegt die Vermutung nahe, dass das die komprimierten Daten von PowerPivot sind. Ich hatte die AdventureWorks2008R2DW Beispieldatenbank ins PowerPivot übernommen, die Datenbank hat insgesamt 45,5 MB Nettodaten (+ 26,9 MB Indizes). Also liegt hier die Komprimierungsrate bei ungefähr Faktor 4; nicht ganz so hoch wie erwartet. Anhand des "Verhältnis" der ZIP Datei sieht man aber, das ZIP es auch nicht weiter komprimieren konnte.
 
PowerPivotWKB_ItemData.jpg
 
Direkt im Ordner "xl" findet man noch die "connections.xml", das ist zunächst nichts Ungewöhnliches. Hat man in Excel z.B. eine Sql Server Tabelle eingebunden, ist diese Connections Datei auch vorhanden.
Aber der Inhalt ist interessant:
 <?xml version="1.0" encoding="UTF-8" standalone="true"?> 
 <connections xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> 
  <connection refreshedVersion="4" type="5"  
  description="Diese Verbindung wird von Excel für die Kommunikation zwischen  
  der Arbeitsmappe und eingebetteten PowerPivot-Daten verwendet  
  und sollte nicht manuell bearbeitet oder gelöscht werden."  
  name="PowerPivot Data" keepAlive="1" id="1"> 
  <dbPr commandType="1" command="Model"  
  connection="Provider=MSOLAP.5;Persist Security Info=True; 
  Initial Catalog=Microsoft_SQLServer_AnalysisServices; 
   Data Source=$Embedded$;MDX Compatibility=1; 
  Safety Options=2;ConnectTo=11.0; 
   MDX Missing Member Mode=Error;Optimize Response=3; 
  Cell Error Mode=TextValue"/> 
  <olapPr rowDrillCount="1000" sendLocale="1"/> 
  <extLst> 
  <ext xmlns:x14="http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"  
   uri="{D79990A0-CA42-45e3-83F4-45C500A0EAA5}"> 
  <x14:connection embeddedDataId="Microsoft_SQLServer_AnalysisServices"  
  </ext> 
  </extLst> 
  </connection> 
</connections>  
 
Hier lässt sich schon die Architektur erahnen: PivotTable kommuniziert mit PowerPivot via OleDB "MSOLAP", wobei als Data Source $Embedded$ angegeben ist.
Das wirft für mich die nächste Frage auf: Kann man PowerPivot auch in eigenen Applikationen verwenden und auf gleiche Weise damit kommunizieren? Das aber später mal.
Um die ursprüngliche Frage zu beantworten, man kann problemlos ein PowerPivot Workbook mit Excel ohne PowerPivot öffnen und auch wieder speichern, ohne das Daten verloren gehen.

Diesen Post teilen

Repost 0

Kommentiere diesen Post