Microsoft Excel - Power Query - Validazione di righe
Problema
Abbiamo una tabella con 3 campi e una serie di righe.

Vogliamo aggiungere una quarta colonna che contiene i valori
- non validato se in una colonna c'è il valore null o la cella vuota ""
- OK se tutte e tre le colonne sono valide
Soluzione
Creiamo una funzione ValidaRiga in power query
(param1, param2, param3) as text =>
let
ToText = (val) => if val = null then null else Text.From(val),
p1 = ToText(param1),
p2 = ToText(param2),
p3 = ToText(param3),
IsNullOrEmpty = (val) => val = null or val = "",
CountInvalid = List.Count(List.Select({p1, p2, p3}, IsNullOrEmpty)),
Result = if CountInvalid > 0 then "non validato" else "OK"
in
Result
Soluzione avanzata
Creiamo una funzione ValidaRiga in power query
(campi as list, valoriNonValidi as list) as text =>
let
ToText = (val) => if val = null then null else Text.From(val),
campiTesto = List.Transform(campi, ToText),
IsNonValido = (val) => List.Contains(valoriNonValidi, val),
countNonValidi = List.Count(List.Select(campiTesto, IsNonValido)),
Result = if countNonValidi > 0 then "non validato" else "OK"
in
Result
Passaggio di parametri
Passaggio dei campi
Nella query della tua tabella, chiami la funzione così
= Table.AddColumn(
TabellaSource,
"Validazione",
each ValidaRiga(
{ [param1], [param2], [param3] },
{ null, "", " " }
)
)
Passaggio della lista dei valori non validi
I valori non validi sono contenuti nel file
ListaValoriNonValidi.csv
Conviene aggiungere un piccolo step di pulizia nella query ListaValoriNonValidi per essere sicuri di avere sia null che "":
Passaggio della lista dei valori non validi contenuti nella tabella ListaValoriNonValidi.csv
Alla query ListaValoriNonValidi aggiungi un ultimo step per estrarre la colonna come lista:
= ListaValoriNonValidi[valore]
Passa la lista alla funzione
= Table.AddColumn(
TabellaSource,
"Validazione",
each fnValida(
{ [param1], [param2], [param3] },
ListaValoriNonValidi[valore]
)
)
sfs