2017-11-08 6 views
2

Ich möchte die Werte in einer Spalte in Kleinbuchstaben konvertieren. Derzeit, wenn ich die lower() Methode verwende, beschwert es sich, dass Spaltenobjekte nicht aufrufbar sind. Da es in SQL eine Funktion namens lower() gibt, gehe ich davon aus, dass es eine native Spark-Lösung gibt, die keine UDFs enthält oder tatsächlich SQL schreibt.Pyspark: Konvertieren Spalte in Kleinbuchstaben

Antwort

3

Sie müssen manuell lower, viel auf die gleiche Weise col importieren müssen importieren:

from pyspark.sql.functions import lower, col 

Kombinieren sie zusammen lower(col("bla")) verwenden. In einer vollständigen Abfrage:

spark.table('bla').where(lower(col('bla')) == 'bla') 

, die auf die SQL-Abfrage entsprechen

SELECT bla FROM bla WHERE lower(bla) = "bla" 

Unnötig zu sagen, dieser Ansatz ist besser als mit einem UDF weil UDF zu Python rufen (was a langsamer Betrieb, und Python selbst ist langsam), und ist eleganter als das Schreiben in SQL.

+4

Während dieser Code die Frage beantworten kann, verbessert ein zusätzlicher Kontext, warum und/oder wie dieser Code die Frage beantwortet, seinen langfristigen Wert. – Isma

+0

@Isma Siehe Bearbeiten. – ogogmad

+0

@Isma Siehe den letzten Absatz jetzt. Sonst bin ich mir nicht sicher was * warum * oder * wie * s du denkst es fehlt. – ogogmad

Verwandte Themen