meine erste PQ-Abfrage
07.11.2023 09:53:42
EasyD
ich habe mir mit viel Geduld und Spucke folgende Datenbankabfrage zusammen gebaut. Meine PQ-Kenntnisse als "bescheiden" zu bezeichnen wäre noch übertrieben, im Moment rate ich mehr als ich gezielt Lösungen finde. Was ich selbst nicht hinbekommen habe, habe ich mir daher von ChatGPT zusammenstellen lassen. Funktioniert weitestgehend, aber - Ich habe im letzten Schritt der Abfrage ("GeänderteSpalten") noch ein Problem zu lösen:
Expression.Error: Ein Wert vom Typ "Function" kann nicht in den Typ "List" konvertiert werden.
Details:
Value=[Function]
Type=[Type]
Mein kompletter Code:
let
Quelle = Table.Combine({#"01R", #"02R", #"03R", #"04R", #"05R", #"06R", #"07R", #"08R", #"09R", #"10R", #"11R", #"12R"}),
GeänderterTyp = Table.TransformColumnTypes(Quelle, {{"Konto", type text}, {"Bezeichnung", type text}, {"Datum", type date}, {"Position", type text}}),
// Hinzugefügte Spalte "KontoBezeichnung" direkt nach "Datum" und "Position" einfügen
HinzugefügteSpalte = Table.AddColumn(GeänderterTyp, "KontoBezeichnung", each [Konto] & " " & [Bezeichnung], type text),
// Reihenfolge der Spalten anpassen
SpaltenNamen = Table.ColumnNames(HinzugefügteSpalte),
ErsteZweiSpalten = List.FirstN(SpaltenNamen, 2),
LetzteSpalte = List.LastN(SpaltenNamen, 1),
RestlicheSpalten1 = List.RemoveItems(SpaltenNamen, ErsteZweiSpalten),
RestlicheSpalten = List.RemoveItems(RestlicheSpalten1, LetzteSpalte),
NeueReihenfolge = ErsteZweiSpalten & {"KontoBezeichnung"} & RestlicheSpalten,
ReihenfolgeAngepasst = Table.ReorderColumns(HinzugefügteSpalte, NeueReihenfolge),
EntfernteSpalten = Table.RemoveColumns(ReihenfolgeAngepasst, {"Konto", "Bezeichnung", "Gesamt"}),
// Ändere den Datentyp der restlichen Spalten ab der vierten Spalte in Dezimalzahlen
SpaltenAbVierter = List.Skip(Table.ColumnNames(EntfernteSpalten), 3), // Überspringe die ersten 3 Spalten
GeänderteDatentypen = Table.TransformColumnTypes(EntfernteSpalten, List.Transform(SpaltenAbVierter, each {_, type number})),
// Definieren Sie Ihre Suchbegriffe und die zugehörigen Vorzeichen
Filterkriterium = {"Erlöse", "Umsatzerlöse", "Erlöse USt-frei", "Provisionserlöse", "Gewährte Skonti, Boni und Rabatte", "Sonstige Erlöse", "Eigenverbrauch", "Summe der Erlöse", "Gesamtleistung", "Rohgewinn", "Zwischensaldo", "Sonstige Erträge", "A.o. Erträge", "Erlöse aus Anlagenverkauf (Buchgewinn)", "Erträge aus Beteiligungen", "Grundstückserträge", "Zinsen und ähnliche Erträge", "Sonstige betriebliche Erträge", "Summe der sonstigen Erträge"},
// Vorzeichenänderung in den ausgewählten Spalten basierend auf den Filterkriterien
GeänderteSpalten = Table.TransformColumns(GeänderteDatentypen, each if List.Contains(SpaltenAbVierter, [Position]) and not List.Contains(Filterkriterium, [Position]) then -_ else _)
in
GeänderteSpalten
Die Vorgehensweise:
Ich kombiniere 12 bestehende Abfragen zu einer einzigen.
Spalten hinzufügen, Reihenfolge ändern, nicht benötigte Spalten entfernen
In den Spalten ab inklusive der 4. Spalte die Datentypen ändern.
Ein Filterkriterium in der Spalte "Position" definieren - die Spalte "Position" ist die zweite Spalte!
Anhand dieses Filterkriteriums die Vorzeichen ändern in den Spalten ab der 4. (die Anzahl dieser Spalten kann variabel sein)! - hier scheitere ich und auch ChatGPT spuckt nur Käse aus!
Meine Frage:
Bis zum Schritt "GeänderteDatentypen" läuft alles wie gewünscht.
Die Liste mit den Filterkriterien ist korrekt.
Wie wende ich den Schritt "GeänderteSpalten " richtig an, sodass er in Spalte 2 schaut ob ein Wert aus den Filterkriterien enthalten ist, um dann in den spalten ab der 4. Spalte die Vorzeichenänderung zu machen?