n-dimensions | Lukas Hillesheim

PowerQuery - Dynamische Text-Ersetzung mit Table.ReplaceValue

Power Query · Von Lukas Hillesheim

Die Funktion Table.ReplaceValue ersetzt in einer oder mehreren Tabellen-Spalten einer Werte. Dabei können Lambda-Expressions eingesetzt werden, um die Ersetzung dynamisch zu gestalten.

Table.ReplaceValue(
    <arg1_table>,
    <arg2_lambda_expression: old_value>,
    <arg3_lambda_expression: new_value>,
    <arg4_lambda_expression: replacer>,
    <arg5_columns_to_search>)

Im folgenden Beispiel sollen die englischen Bezeichnungen von Produkt-Kategorieen durch deutsche ersetzt werden.

Englische Kategorie-Bezeichnungen:

Figure 1 - English product categories
Figure 1 - Product Category on English

Übersetzung in deutsche Kategorie-Bezeichnungen:

Figure 2 - German Product Categories
Figure 2 - Product Category on German

Code:

Figure 3 - PowerQuery Code
Figure 3 - PowerQuery Code

Im Grossen und Ganzen sieht der Ablauf folgendermassen aus:

  • Der Iterator Table.ReplaceValue arbeitet die Zeilen der Tabelle table2 Zeile für Zeile ab
  • Argument 2 und Argument 3 haben über die Lambda-Variable row Zugriff auf die komplette Zeile
  • Pro Zeile übergibt der Iterator die Werte der Argumente 2, 3 und 5 an die Lambda-Variablen von Argument 4:
    • Der Wert aus der Spalte "Kategorie" wird an die Lambda-Variable text übergeben
    • Der Wert aus der Lambda-Expression / Argument 2 wird an die Lambda-Variable oldValue übergeben
    • Der Wert aus der Lambda-Expression / Argument 3 wird an die Lambda-Variable newValue übergeben
  • Der Wert aus der Lambda-Expression / Argument 4 wird in die Spalte "Kategorie" geschrieben