Destatis Genesis and Power BI

Power Query Magic

Source: Power BI Desktop – Advanced Editor

Nachdem wir nun die Schleife unseres Päckchen geöffnet haben geht es nun an das Geschenkpapier. Für alle die sich jetzt schon auf einen Deep Dive gefreut haben sei gesagt ihr findet die passende Anleitung hierzu auf der Seite von Excelguru: https://www.excelguru.ca/blog/2015/10/16/split-by-line-breaks/ ich werde euch hier nur den Code zur Verfügung stellen und kurz Highlevel erklären was im groben passiert.


Now that we have opened the bow of our package, it’s time for the wrapping paper. For all those who are already looking forward to a deep dive, you can find the appropriate instructions on the Excelguru page: https://www.excelguru.ca/blog/2015/10/16/split-by-line-breaks/ I will only provide you with the code here and briefly explain what is happening at a high level.

Code

Change YOURUSER & YOURSPASSWORD (See create account)

let
    Source = Json.Document(Web.Contents("https://www-genesis.destatis.de/genesisWS/rest/2020/data/table?
username=YOURUSER&
password=YOURPASSWORD&
name=61241-0006area=all&compress=false&transpose=false&startyear=&endyear=&timeslices=&regionalvariable=&regionalkey=&classifyingvariable1=&classifyingkey1=&classifyingvariable2=&classifyingkey2=&classifyingvariable3=&classifyingkey3=&job=false&stand=01.01.1970&language=de")),
      #"Converted to Table" = Table.FromRecords({Source}),

    #"Expanded Object" = Table.ExpandRecordColumn(#"Converted to Table", "Object", {"Content", "Structure"}, {"Content", "Structure"}),

    Content = #"Expanded Object"{0}[Content],

    #"Split Text" = Text.Split(Content, "#(lf)"),

    #"Converted to Table1" = Table.FromList(#"Split Text", Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Entfernte oberste Zeilen" = Table.Skip(#"Converted to Table1",7),
    #"Höher gestufte Header" = Table.PromoteHeaders(#"Entfernte oberste Zeilen", [PromoteAllScalars=true]),
    #"Geänderter Typ" = Table.TransformColumnTypes(#"Höher gestufte Header",{{";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;Dezember", type text}}),
    #"Spalte nach Trennzeichen teilen" = Table.SplitColumn(#"Geänderter Typ", ";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;Dezember", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), {";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;Deze", ";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;De.1", ";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;De.2", ";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;De.3", ";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;De.4", ";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;De.5", ";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;De.6", ";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;De.7", ";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;De.8", ";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;De.9", ";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;D.10", ";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;D.11", ";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;D.12", ";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;D.13"}),
    #"Geänderter Typ1" = Table.TransformColumnTypes(#"Spalte nach Trennzeichen teilen",{{";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;Deze", type text}, {";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;De.1", type text}, {";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;De.2", type number}, {";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;De.3", type number}, {";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;De.4", type number}, {";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;De.5", type number}, {";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;De.6", type number}, {";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;De.7", type number}, {";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;De.8", type number}, {";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;De.9", type number}, {";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;D.10", type number}, {";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;D.11", type text}, {";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;D.12", type text}, {";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;D.13", type text}}),
    #"Umbenannte Spalten" = Table.RenameColumns(#"Geänderter Typ1",{{";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;Deze", "Gewerbliche Produkte"}, {";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;De.1", "Produktnamen"}, {";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;De.2", "Januar"}, {";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;De.3", "Februar"}, {";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;De.4", "März"}, {";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;De.5", "April"}, {";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;De.6", "Mai"}, {";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;De.7", "Juni"}, {";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;De.8", "Juli"}, {";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;De.9", "August"}, {";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;D.10", "September"}, {";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;D.11", "Oktober"}, {";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;D.12", "November"}, {";;Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;D.13", "Dezember"}}),
    #"Entpivotierte Spalten" = Table.UnpivotOtherColumns(#"Umbenannte Spalten", {"Gewerbliche Produkte", "Produktnamen"}, "Attribut", "Wert")
in
    #"Entpivotierte Spalten"

Dieser Beitrag wurde unter Allgemein, Power BI abgelegt und mit , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Eine Antwort zu Destatis Genesis and Power BI

  1. Jan sagt:

    Hallo Kathrin,

    vielen Dank für diesen hilfreichen Post!
    Deine Anleitung funktionert super um kleinere Destatis Tabellen direkt in Power BI zu importieren.

    Leider funktioniert es nicht um größere Tabellen (z.B. 51000-0017) zu importieren, die im Batchbetrieb über die RESTful/JSON API angefordert werden.

    Hast du vielleicht Vorschläge und Ideen um möglichst automatisiert größere Destatis Tabellen in Power BI zu importieren?

    Vielen Dank im Voraus für dein Feedback!
    Jan

    P.S.: Meinen Code findest du auf https://github.com/janstrauss1/DestatisData-to-PowerBI/blob/main/BigTables_in_batch.md#aus–und-einfuhr-au%C3%9Fenhandel-deutschland-monate-land-warenverzeichnis-8-steller

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert