Zamienimy dynamicznie wartości null na puste ciągi tekstowe we wszystkich kolumnach bez podawania ich tytułów.
Dane źródłowe
W powyższym zestawieniu w niektórych kolumnach pojawiają się wartości null. Zamienimy je na puste ciągi tekstowe w sposób dynamiczny.
Zamiana wartości null na puste ciągi tekstowe
Zamienimy wartość null na pusty ciąg tekstowy (pustą komórkę) w jednej kolumnie. Celem zadania jest dokonać zmian we wszystkich kolumnach, ale na tym etapie nie jest to konieczne.
- Kliknij PPM na dowolny tytuł kolumny
- Z menu kontekstowego wybierz opcję „Zamień wartości..”
Ustaw kryteria tak jak poniżej:
- pole „Wartość do znalezienia” – wpisujemy wartość, która ma zostać zamieniona
- pole „Zamień na” – wskazujemy wartość, która zastąpi starą
Dane prezentują się następująco:
Analiza funkcji do zamiany wartości
Struktura funkcji
= Table.ReplaceValue(nazwa_tabeli, wartość_do_zamiany, nowa_wartość, typ_funkcji_zmieniającej,{"nazwa_kolumny1", "nazwa kolumny2"})
Zastosowana funkcja
= Table.ReplaceValue(Źródło,null,"",Replacer.ReplaceValue,{"darmowa dostawa"})
W pierwszej części funkcji nazwa_tabeli wpisujemy nazwę tabeli na bazie której będzie wykonywana zamiana wartości. Tą tabelą jest krok o nazwie „Źródło”.
Następnie w miejscu wartość_do_zamiany wpisujemy starą wartość, a na pozycji nowa_wartość wskazujemy wartość zastępującą starą. W miejscu typ_funkcji_zmieniającej należy wpisać Replacer.ReplaceValue. Ta część kodu dokonuje zamiany wskazanych wartości.
W ostatniej części funkcji pomiędzy nawiasami klamrowymi należy wypisać nazwy kolumn, w których ma się dokonać zamiana wartości. Każdy tytuł kolumny musi być wpisany w odrębną parę cudzysłowów.
Problematyka funkcji Table.ReplaceValue()
Funkcja nie jest dynamiczna ze względu na zadeklarowane nazwy kolumn w tej części kodu: {„nazwa_kolumny”1, „nazwa kolumny2”}. Istnieje bardzo duże prawdopodobieństwo, że tytuł kolumny może zostać zmieniony.
Automatyzacja funkcji do zamiany wartości
Funkcja przed modyfikacją:
= Table.ReplaceValue(Źródło,null,"",Replacer.ReplaceValue,{"darmowa dostawa"})
Funkcja po modyfikacji:
= Table.ReplaceValue(Źródło,null,"",Replacer.ReplaceValue, Table.ColumnNames(Źródło) )
Funkcja Table.ColumnNames(Źródło) pobiera nazwy kolumn z poprzedniego kroku #"Źródło"
. W ten sposób tytuły kolumn są pobierane dynamicznie.
- Na liście „Zastosowane kroki” zaznacz krok „Zamień wartość”
- Przejdź do paska formuły
- tą część kodu {„darmowa dostawa”} zastąp funkcją Table.ColumnNames(Źródło)
Dane finalnie po modyfikacji formuły prezentują się następująco:
W sposób dynamiczny zostały zamienione wartości null na puste ciągi tekstowe. Jeżeli dojdzie nowa kolumn lub bieżąca nazwa dowolnej kolumny zostanie zmieniona to i tak funkcja dokona wskazanej zamiany wartości.