top of page
9d657493-a904-48e4-b46b-e08acb544ddf.png

POST

Datentypen in Power Query vs. Datentypen in der Tabellenansicht (Canvas) von Power BI

  • Autorenbild: Admin
    Admin
  • 2. Nov.
  • 5 Min. Lesezeit

Hinweis: Wenn Ihr Modell Zahlen „unerklärlicherweise“ verändert, Beziehungen aufhebt oder Monate alphabetisch sortiert – dann liegt das an den Datentypen.


Was wir behandeln werden: wo man Datentypen definiert (und warum), die sicherste Reihenfolge der Operationen in der ETL-Kette, Power Query vs. Modell vs. Tabellenansicht, Sonderfälle (DirectQuery, Währung, Dauer) und konkrete Beispiele zum Kopieren und Einfügen.


1) Warum Datentypen wichtig sind (und wo sie gespeichert werden)

  • Power Query (PQ): Phase der Datenaufbereitung. Die hier definierten Datentypen beeinflussen Faltung, Transformationen und die nachfolgende Semantik.

  • Modell (Daten-/Modellansicht): Der semantische Vertrag: der Typ, den die Engine speichert und auf dem Beziehungen/Aggregationen basieren.

  • Bericht-/Tabellenansicht (Canvas): Hauptsächlich Formatierung und Benutzerdarstellung. Die Änderung des „Typs“ bedeutet hier oft die Änderung des Formats , nicht des zugrunde liegenden Speichertyps .

Faustregel:

Definieren Sie den korrekten Speichertyp so früh wie möglich in Power Query , bestätigen Sie ihn im Modell und verwenden Sie die Berichts-/Tabellenansicht nur für die Anzeigeformatierung.
Zwei Tabellen mit Symbolen und Zahlen, verbunden durch einen grauen Pfeil. Die linke Tabelle hat eine blaue Kopfzeile mit einem Kalender, die rechte ein gelbes Diagramm.
Veranschaulichung der Umwandlung von Datenformaten: Das Bild zeigt das Umwandeln einer Tabelle von einem strukturellen Layout zu einem anderen, symbolisiert durch ein Pfeildiagramm. Links sind verschiedene Symbole und Zahlen zu sehen, rechts wird die Umwandlung in ein vereinfachtes und numerisches Format dargestellt.

2) Die sichere Reihenfolge der Arbeitsabläufe (von Anfang bis Ende)

  1. Quellsystem (SQL/SharePoint/CSV): Wenn möglich, stabilisieren Sie die Datentypen bereits in der Quelle (z. B. SQL-View mit CAST/CONVERT).

  2. Power Query: Wenden Sie Typisierungsschritte unmittelbar nach der Spaltenerstellung an (oft direkt nach dem Navigationsschritt). Vermeiden Sie verstreute Einträge mit dem Hinweis „Typ geändert“ – gruppieren Sie diese gezielt.

  3. Modell: Überprüfen Sie die resultierenden Typen; legen Sie Datenkategorie (z. B. „Stadt“, „Web-URL“), Zusammenfassung , Formatzeichenfolgen und Beziehungen fest.

  4. Bericht-/Tabellenansicht: Format (z. B. % mit 2 Dezimalstellen) und Anzeigeeinheiten verwenden. Nicht darauf vertrauen, dass die Berichtsebene einen falschen Datentyp korrigiert.

Profi-Tipp: Wenn PQ automatisch den geänderten Typ einfügt, sollte man einen einzigen zusammengefassten Schritt (oder einige logische Blöcke) beibehalten, nicht 12 Mikroschritte.

3) Power Query: praktische Muster

Typen frühzeitig und explizit festlegen. Hier ist ein kompaktes, lesbares Muster:

let
    Source = Csv.Document(
        File.Contents("C:\Data\DataTypes_Demo.csv"),
        [Delimiter = ",", Columns = 10, Encoding = 65001, QuoteStyle = QuoteStyle.Csv]
    ),
    Promoted = Table.PromoteHeaders(Source, [PromoteAllScalars = true]),
    // One clear place to define types
    Typed = Table.TransformColumnTypes(
        Promoted,
        {
            {"InvoiceID", Int64.Type},
            {"Customer", type text},
            {"Amount_Decimal", type number},
            {"Amount_FixedCurrency", type number},
            {"DiscountPct", type number},
            {"IsPaid", type logical},
            {"InvoiceDate", type date},
            {"InvoiceDateTime", type datetime},
            {"Duration_Hours", type number},
            {"Notes", type text}
        },
        "en-US"  // locale matters for decimal/comma
    ),
    // Convert % from 0–1 if needed (or keep as 0–1 and format in model)
    WithPct = Table.TransformColumns(Typed, {{"DiscountPct", each _, type number}})
in
    WithPct

Tipp zur Lokalisierung: Wenn Ihre CSV-Datei Kommas als Dezimaltrennzeichen verwendet, legen Sie die Lokalisierung explizit in Table.TransformColumnTypes fest oder verwenden Sie „Locale wird verwendet…“ in der Benutzeroberfläche, um Fehler wie 1,23 → 123 zu vermeiden.

Dauer: In PQ ist die Dauer ein eigenständiges Objekt (eine Zeitspanne). Wenn Sie „Stunden“ als Zahl speichern, behalten Sie den Datentyp „Zahl“ bei; wenn Sie eine tatsächliche Dauer benötigen, erstellen Sie einen Datentyp.

AddDuration = Table.AddColumn(WithPct, "Duration", each #duration(0, [Duration_Hours], 0, 0), type duration)

Datumsangaben: Normalisieren Sie diese frühzeitig. Teilen Sie problematische Texte explizit in Datum, Uhrzeit und Datum/Uhrzeit auf, um spätere implizite Konvertierungen zu vermeiden.

4) Daten-/Modellansicht: der semantische Vertrag

Sobald die Abfrage geladen ist:

  • Datentyp bestätigen (Ganzzahl, Dezimalzahl, Festkommazahl, Datum, Datum/Uhrzeit, Text, Boolescher Wert).

  • Format festlegen (Währungssymbol, Tausendertrennzeichen, %).

  • Datenkategorie festlegen (Land/Region, Web-URL, Bild-URL usw.) – hilfreich für Karten, Tooltips und KI-Visualisierungen.

  • Wählen Sie die Standardzusammenfassung (Summe, Durchschnitt, Nicht zusammenfassen).

  • Beziehungen prüfen – falsche Typen können die korrekte Kardinalität verhindern.

Hauptunterschied:

Modelltyp = Speichersemantik, die Beziehungen und das DAX-Verhalten steuert. Berichtsformatierung = nur Darstellung.

5) Bericht-/Tabellenansicht (Canvas): Zur Formatierung verwenden – nicht zur Fehlerbehebung.

Sie können das Format ändern (z. B. 0,15 als 15 % anzeigen) und die Anzeigeeinheiten (K, M) anpassen, aber dadurch wird der zugrunde liegende Datentyp nicht konvertiert . Wenn im Datenmodell „Text“ angegeben ist, können Visualisierungen diesen Wert nicht aggregieren, unabhängig von der Formatierung im Canvas.

Wann die Tabellenansicht wichtig ist: Für schnelle visuelle Prüfungen, spontane Formatierungen oder um sicherzustellen, dass die Daten korrekt aussehen. Wenn der Datentyp hier jedoch falsch ist, gehen Sie zurück zur Performance-Query oder zum Modell und korrigieren Sie ihn im Stammverzeichnis.

6) Sonderfälle und häufige Fallstricke

a) DirectQuery- und Composite-Modelle

  • DirectQuery übernimmt die Datentypen primär aus der Datenquelle . Wenn die Quelle für numerische Inhalte NVARCHAR angibt, kann Power BI diese als Text behandeln.

  • Bevorzugen Sie typisierte SQL-Sichten (CAST/CONVERT) oder Power Query mit Folding , das die Typumwandlung an die Quelle verlagert.

  • Das Ändern von Typen nach nicht faltbaren Schritten kann zu Leistungsproblemen führen – Typkonvertierungen sollten frühzeitig und faltbar durchgeführt werden.

b) Währung vs. Dezimal vs. Feste Dezimalzahlen

  • Dezimalzahl = IEEE 754 double (Gleitkommazahl).

  • Festkommazahl = Dezimalzahl mit Festkomma (128 Bit) → besser geeignet für Geld- und Finanzdaten.

  • Bewährte Vorgehensweise: Beträge im Modell als Festkommazahlen speichern; mit Währungssymbol formatieren. Prozentangaben entweder als 0–1 mit dem Format % oder als 0–100 mit dem Format „%“ darstellen – einheitlich vorgehen.

Profi-Tipp: Verwenden Sie in einer Tabelle nicht die Prozentangaben 0–1 und in einer anderen 0–100. Wählen Sie einen Standard.

c) Datum/Uhrzeit/Zeitzone

  • Power BI speichert Datum und Uhrzeit ohne Zeitzone. Falls Ihre Datenquelle Offsets enthält, normalisieren Sie diese entweder direkt in der Quelle oder in Power BI (z. B. durch Konvertierung in UTC oder die lokale Zeitzone).

  • Trennen Sie Datum und Uhrzeit, wenn Sie konsistente Filter und Beziehungen benötigen.

d) Sortieren und Kategorisieren

Textmonatsnamen? Verwenden Sie eine numerische Spalte MonthNo und wählen Sie „Nach Spalte sortieren“ .

URLs oder Bilder? Legen Sie die Datenkategorie fest, sonst verhalten sich die Visualisierungen nicht wie erwartet.

e) Leere Zeilen und Fehlerzeilen

Verwenden Sie Typumwandlungsmuster, um zu vermeiden, dass Fehler nach oben gelangen:

CoercedNumber = try Number.From([Amount_Decimal]) otherwise null
CoercedDate   = try Date.From([InvoiceDate]) otherwise null

Und in DAX sollten robuste Muster bevorzugt werden, z. B.:

Measure := COALESCE( SUM ( 'Fact'[Amount] ), 0 )

7) Minimale, überall einsetzbare Checkliste

  • Ein sauberer „Typisierter“ Schritt in PQ pro Tabelle (oder pro logischer Block).

  • Gebietsschemaabhängige Typumwandlungen.

  • Festkommazahlen für Geldbeträge; Ganzzahlen für Schlüssel; Datumszahlen für Datumsangaben.

  • Im Modell festgelegte Datenkategorie .

  • Berichtsebene – nur für Präsentationszwecke .

  • Bei DirectQuery muss der Typ an der Quelle angegeben oder die Faltung sichergestellt werden.

8) Code-Schnipsel kopieren und einfügen

Power Query: Einzelschritt-Block

Typed = Table.TransformColumnTypes(
    PreviousStep,
    {
        {"Key", Int64.Type},
        {"Amount", type number},
        {"IsActive", type logical},
        {"StartDate", type date},
        {"StartDateTime", type datetime},
        {"Label", type text}
    },
    "en-US"
)

Power Query: Robuste numerische Typumwandlung

Cleaned =
    Table.TransformColumns(
        PreviousStep,
        {{"Amount", each try Number.From(_) otherwise null, type number}}
    )

DAX: sichere Division & Prozent

Umsatzanteil = DIVIDE( [Umsatz], [Umsatzziel] ) Ergebnis im Modell als Prozentsatz formatieren (nicht nur in der Visualisierung).

9) Jetzt ausprobieren (Beispieldaten)

Ich habe eine kleine CSV-Datei vorbereitet, damit Sie die Typen von Anfang bis Ende testen können (Importieren Sie sie mit Text/CSV in PQ und wenden Sie die oben genannten Muster an):



10) Matrix für schnelle Entscheidungen (Was ist wo zu tun?)

  • Ich benötige funktionierende Beziehungen: Typen in Power Query korrigieren, im Modell bestätigen.

  • Zahlen werden mit falschen Dezimalstellen oder Prozentwerten angezeigt: Behalten Sie den zugrunde liegenden Datentyp numerisch bei; passen Sie das Format im Modell an.

  • Die Daten kommen als Textzahlen aus der CSV-Datei an: In PQ mit Gebietsschema in Zahlen umwandeln.

  • DirectQuery gibt Text für numerische Werte zurück: Beheben Sie das Problem in der SQL-Ansicht oder stellen Sie sicher, dass die Typumwandlung in PQ korrekt durchgeführt wird .

  • Die Monatssortierung ist fehlerhaft: Fügen Sie MonthNo und „Sort by Column“ im Modell hinzu.

Bonus-Profi-Tipps

  • Deaktivieren Sie die automatische Typerkennung von PQ, wenn diese ständig falsche Werte errät; verwenden Sie stattdessen bewusst Table.TransformColumnTypes.

  • Um die Performance von Beziehungen zu verbessern, sollten Schlüssel als Ganzzahlen (nicht als Text) gespeichert werden.

  • Erstellen Sie eine Messtabelle für Maßnahmen (Modell Sauberkeit; kein Typthema – sondern ein Wartungsgewinn im Zusammenhang mit Konsistenz).

  • Dokumentieren Sie Ihre Typentscheidungen in einem README-Schritt oder in Kommentaren für die Übergabe. (Ach ja, Dokumentation... 😑)

Kommentare

Mit 0 von 5 Sternen bewertet.
Noch keine Ratings

Rating hinzufügen
Offizielles Logo der Webseite

Transformieren Sie Ihre Daten mit unseren Datenanalysediensten! Von Excel bis Power BI mit Power Query im Hintergrund – bringen Sie Ihr Unternehmen voran!

  • Linkedin
  • Xing
  • RSS
  • 4844455

Kontaktieren Sie uns

Adresse:
83022 Rosenheim, Bayern

E-Mail:
info@excelized.de

Jetzt Abonnieren!

Bleiben Sie mit Tipps und Tutorials auf dem Laufenden!

© 2025 Von Excelized. | WEBSITE GESTALTET VON RS-TECH

bottom of page