Esercitarsi a creare una UDF
A volte i tuoi dati richiedono una trasformazione non supportata dalle funzioni integrate. In questi casi è utile una funzione definita dall'utente ("UDF").
La funzione SQL udf è disponibile.
È disponibile un dataframe df2, di tipo DataFrame[doc: array<string>, in: array<string>, out: array<string>]. La sua colonna doc contiene token banali.
Il seguente comando mostra le prime 20 righe di df2 in cui doc contiene '1':
df2.where(array_contains('doc','1')).show()
Hai due obiettivi da raggiungere:
- Assicurati che i dati trasformati consistano in vettori non vuoti.
- Un dataframe ha una colonna che contiene array di stringhe, dove ogni array ha un solo elemento. Vorresti trasformare questa colonna in una stringa.
Questo esercizio fa parte del corso
Introduzione a Spark SQL in Python
Istruzioni dell'esercizio
- Crea una udf che restituisce true se e solo se il valore è un vettore non vuoto, usando
numNonzeros() - Crea una udf che restituisce il primo elemento dell'array e ne restituisce la rappresentazione come stringa.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Returns true if the value is a nonempty vector
nonempty_udf = udf(lambda x:
True if (x and hasattr(x, "toArray") and x.____())
else False, ____())
# Returns first element of the array as string
s_udf = udf(lambda x: ____(x[0]) if (x and type(x) is list and len(x) > 0)
else '', ____())