2016-07-07 18 views
0

Kleine Einführung.PowerQuery: Mehrere Spalten hinzufügen

Letzte Aufgabe: 15 Spalten mit demselben Wert hinzufügen.

Lösung: Statt aufeinanderfolgende Verwendung von Table.AddColumn, habe ich folgende Methode angewendet.

= Table.RemoveColumns(
    Table.SplitColumn(
     Table.AddColumn(TableFromPreviousStep, "q", each "1") 
     , "q" 
     , Splitter.SplitTextByDelimiter(" ") 
    , {"temp","q1", "q2", "q3", "q4", "q5", "q6", "q7", "q8", "q9", "q10", "q11", "q12", "qY+1", "qY+2", "qY+3"} 
    , 1) 
, {"temp"}) 

Erklärung: erstes füge ich temporäre Spalte mit dem Namen „q“ mit einem beliebigen Standard-Textwert auf den Tisch. Dann wird diese Spalte mit Leerzeichen als Trennzeichen geteilt (deshalb benötigt sie Text), aber da es keine Leerzeichen gibt, gibt sie so viele Spalten zurück, wie Namen für sie zählen. Die erste Spalte behält ihren ursprünglichen Wert bei und sollte in einem späteren Schritt entfernt werden. Alle anderen neuen Spalten Standardwert von 1

Frage: Meine aktuelle Aufgabe durch eine gleiche Formel mehrere Spalten mit Werten, berechnet schafft. Ich versuche den gleichen Ansatz wie oben, aber ich verwende keine Formel als Standardwert. Das Beste, was ich habe, sind die resultierenden Spalten, die eine Formel enthalten.

Jede Hilfe wird geschätzt.

Antwort

2

Sie können List.Accumulate verwenden, um der Tabelle so viele Spalten hinzuzufügen. Wenn Sie eine Tabelle Source mit der Spalte q haben, können Sie 15 Spalten mit dem gleichen Wert mit dieser Formel erstellen:

List.Accumulate({1..15}, Source, (state, current) => Table.AddColumn(state, "q" & Number.ToText(current), each [q]))

ansammelt Schleife durch jede Nummer in der Liste, das Hinzufügen einer Spalte „q Nummer "zu der Tabelle, die es mit Table.AddColumn aufgebaut hat. Dies funktioniert mit jedem Wert und jeder Anzahl von Zeilen.

+0

Danke, Alejandro! Wie ich es verstehe, ist die Formel (jeweils [q] im Beispiel) für alle neuen Spalten gleich? – Eugene

+0

Und wie kann ich die ganze Liste in Text umwandeln (ich will es mit einer anderen Liste mit nicht-numerischen Spaltennamen verbinden)? – Eugene

+0

[q] ist ein Wert in dieser Spalte, daher hat jede Spalte in jeder Zeile den gleichen Wert, aber der Wert zwischen den Zeilen kann unterschiedlich sein. Möchten Sie zum Konvertieren der Liste in Text jedem Wert in der Liste einen Textwert zuweisen oder möchten Sie die Liste als Textwert darstellen? Wenn es ersteres ist, benutze 'Text.From'. –