Anzeige
Archiv - Navigation
1900to1904
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Power Query Typenkonflikt

Power Query Typenkonflikt
29.09.2022 09:47:58
Heinz
Hallo Liebe Excellenten,
ich bearbeite eine Datei in Power BI bzw. Power Query und bekommen eine
Fehlermeldung zu "Typenkonflikte gefunden".
In der letzten Zeile der Meldung kommt folgende Zeile:
pairs = List.Transform(List.Positions(fieldNames), (i) => {fieldNames{i}, (v) => if v = null or Value.Is(v, fieldTypes{i}) then v else error [Message = "Der Werttyp stimmt nicht mit dem Typ der Spalte überein.", Detail = v], fieldTypes{i}})
Könnt Ihr mir einen Typ geben, was den Typenkonflikt hervorruft?
Heinz

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Power Query Typenkonflikt
29.09.2022 10:02:18
ChrisL
Hi Heinz
Ich denke es geht um Datentypen, also Text, Zahl, Datum, List etc.
Der Datentyp entspricht nicht den Erwartungen z.B. kannst du mit einem Text nicht rechnen oder eine Zahl nicht als Text verknüpfen.
Ich könnte mir vorstellen, dass ein neues Feld (Spaltentitel) hinzugekommen ist oder umbenannt wurde, wofür keine Definition des Datentypes vorliegt. Ohne Zusammenhang ist es aber schwer zu erraten, wo genau die Ursache liegt.
cu
Chris
AW: Power Query Typenkonflikt
29.09.2022 16:33:12
ChrisL
Hi Heinz
Die Angelegenheit hat mir keine Ruhe gelassen. Anscheinend ist der Code verbreitet und man findet auch einige Beiträge, wo Leute denselben Fehler hatten z.B.
https://community.powerbi.com/t5/Desktop/Error-Detected-type-mismatches/td-p/1811938
https://forum.enterprisedna.co/t/error-ole-db-or-odbc-error-expression-error-we-cannot-convert-the-value-null-to-type-text/24871/2
https://www.plageroyale.com/p/PowerBI/comments/hdcni1/powerbi_issue_with_certain_data_types_dax_help/
Soweit ich verstehe, werden damit Spalten mit primitiven Datentypen (text, number etc., jedoch ohne any/variant) auf Unregelmässigkeiten geprüft (z.B. eine Text Spalte mit Zahlen). Ganz klar ist mir der Anwendungsfall aber nicht.
Jedenfalls interpretiere ich aus den gelesenen Beiträgen, dass die Typenfehler
- entweder schon vorher produziert wurden d.h. die Spalten wurden falsch transformiert (weil z.B. die Struktur der Quelldaten geändert hat)
- oder weil PQ eine fehlerhafte automatische Typenkonvertierung/-erkennung vorgenommen hat (weil z.B. die ersten 1000 Zeilen zwar Zahlen waren, aber irgendwo dann doch noch ein Text auftaucht)
cu
Chris
Anzeige
AW: Power Query Typenkonflikt
29.09.2022 17:26:01
Yal
Hallo Heinz,
mir scheint die "List.Tranform (..)"-Aufruf nicht korrekt definiert zu sein.
Siehe https://learn.microsoft.com/de-de/powerquery-m/list-transform
Ausserdem habe ich Schwierigkeit, was "v" sein soll. Wenn es den Feldname sein soll, so ist diese Name nie null und ist unwahrscheinlich von gleichen Typ wie der Inhalt der Spalte selbst.
Also kann es nur der Inhalt eine Zelle sein. Dann müsste es

{fieldNames{i}(v) => 
Ohne Komma und Leerzeichen.
Was ist überhaupt den angestrebten Zweck dieses Transform?
VG
Yal
Anzeige
Gelöst: Einfach neu aufgebaut
29.09.2022 17:36:13
Heinz
Hallo an Alle,
das Problem habe ich dahingehend gelöst, als ich die Datei noch einmal aufgebaut habe.
Vorweg: Ich habe da gar nichts definiert. Davon bin ich intellektuell weit entfernt.
Ich habe lediglich bei einigen Spalten den Typ geändert. Spalten zusammengefasst usw.,
also nur vorgefertigte Funktionen genutzt.
Generell ist es mit Power Query (für mich) ein bisschen schwierig ein Problem so zu formulieren
und darzustellen, dass es hier im Forum verstanden wird.
Aber wie dem auch sei, es funkt jetzt.
Danke an Alle Beteiligten.
AW: Gelöst: Einfach neu aufgebaut
30.09.2022 15:47:55
ChrisL
Hi Heinz
Danke für die Rückmeldung und für das Teilen der Lösung (auch im anderen Beitrag).
Tut jetzt nichts mehr zur Sache (keine erneute Rückmeldung notwendig ;), aber mir ist nun doch noch klar geworden, wo der Code herkommt.
Beispieltabelle:

let
Quelle = #table({"Titel1","Titel2","Titel3"},{{"xxx",#date(2022,1,1),"a"},{2,"xxx","b"},{3,#date(2023,1,1),"c"}}),
#"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Titel1", Int64.Type}, {"Titel2", type date}, {"Titel3", type text}})
in
#"Geänderter Typ"
Mit "xxx" provoziere ich bewusst Fehler, da die Typenumwandlung in Ganzzahl und Datum zum Error führt.
Als Lade-Status der Abfrage wird angezeigt:
3 Zeilen geladen. 2 Fehler.
Drückt man auf Fehler, dann wird automatisch der fragwürdige Code produziert.

let
Quelle = BeispielTabelle,
#"Typenkonflikte gefunden." = let
tableWithOnlyPrimitiveTypes = Table.SelectColumns(Quelle, Table.ColumnsOfType(Quelle, {type nullable number, type nullable text, type nullable logical, type nullable date, type nullable datetime, type nullable datetimezone, type nullable time, type nullable duration})),
recordTypeFields = Type.RecordFields(Type.TableRow(Value.Type(tableWithOnlyPrimitiveTypes))),
fieldNames = Record.FieldNames(recordTypeFields),
fieldTypes = List.Transform(Record.ToList(recordTypeFields), each [Type]),
pairs = List.Transform(List.Positions(fieldNames), (i) => {fieldNames{i}, (v) => if v = null or Value.Is(v, fieldTypes{i}) then v else error [Message = "Der Werttyp stimmt nicht mit dem Typ der Spalte überein.", Detail = v], fieldTypes{i}})
in
Table.TransformColumns(Quelle, pairs),
#"Hinzugefügter Index" = Table.AddIndexColumn(#"Typenkonflikte gefunden.", "Zeilennummer" ,1),
#"Beibehaltene Fehler" = Table.SelectRowsWithErrors(#"Hinzugefügter Index", {"Titel1", "Titel2", "Titel3"}),
#"Neu angeordnete Spalten" = Table.ReorderColumns(#"Beibehaltene Fehler", {"Zeilennummer", "Titel1", "Titel2", "Titel3"})
in
#"Neu angeordnete Spalten"
Lustigerweise kann man ein identisches Resultat wie folgt produzieren. Es ist mir ein Rätsel, wieso PQ den Code auf die komplizierte Art und Weise erzeugt.

let
Quelle = BeispielTabelle,
#"Hinzugefügter Index" = Table.AddIndexColumn(Quelle, "Index", 1, 1, Int64.Type),
Ergebnis = Table.SelectRowsWithErrors(#"Hinzugefügter Index")
in
Ergebnis
cu
Chris
Anzeige
AW: Gelöst: Einfach neu aufgebaut
03.10.2022 21:04:06
Luschi
Hallo ChrisL,
habe mir mal den von E_365-PQ erstellen M-Code im Fehlerfall näher angeschaut:
- der 2. eingebaute 'let/in' Zweig ist eigentlich doppelt gemoppelt
- denn die Spalten mit dem Datentypen 'any' sind hier außen vor
- werden also gar nicht berücksichtigt
- und die Spalten mit einen definierten primitiven Datentyp werden einfach nochmals
  mit dem schon vorhandenen Typ formatiert - also eigentlich überflüssig
Trotzdem ist der Code für mich interessant, denn jetzt weiß ich, wie man Spalten über den Aufbau von 'list in list' Listen den Datentyp von Spalten definieren kann - ist beim importieren von CSV-Dateien ganz gut anwendbar. E_2019 PQ kann solchen M-Code noch nicht erstellen.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Gelöst: Einfach neu aufgebaut
05.10.2022 22:51:03
ChrisL
Hi Luschi
Danke für den Input.
Ich wollte mich eigentlich noch einmal damit auseinandersetzen, aber der Beitrag rutscht gleich ins Archiv. Falls ich innert nützlicher Frist die Zeit finde und neue Erkenntnisse habe, melde ich mich noch einmal separat. (list wäre nach meinem Verständnis ein eigener Datentyp)
cu
Chris

44 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige