PowerQuery - Dynamische Text-Ersetzung mit Table.ReplaceValue

Von Lukas Hillesheim, 4. April 2023
Blog Article & Copyright by 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