from_csv
-Funktion
Gilt für: Databricks SQL Databricks Runtime
Gibt einen Strukturwert mit csvStr
und schema
zurück.
Syntax
from_csv(csvStr, schema [, options])
Argumente
csvStr
: Ein STRING-Ausdruck, der eine Zeile mit CSV-Daten angibt.schema
: Dies ist ein STRING-Literal oder ein Aufruf der „schema_of_csv“-Funktion.options
: Ein optionales MAP<STRING,STRING>-Literal, das Anweisungen angibt.
Gibt zurück
Eine Struktur mit Feldnamen und Typen wird zurückgegeben, die mit der Schemadefinition übereinstimmen.
csvStr
sollte in Bezug auf schema
und options
ordnungsgemäß formatiert sein.
schema
muss als Spaltenname/Datentyp-Paare mit Kommas als Trennzeichen definiert werden, z. B wie in CREATE TABLE
.
options
kann Folgendes sein (sofern angegeben):
sep
(Standardwert ist,
): Hiermit wird eine Trennlinie für jedes Feld und jeden Wert festgelegt. Diese Trennlinie kann aus einem oder mehreren Zeichen bestehen.encoding
(Standardformat ist UTF-8): Hiermit werden die CSV-Dateien entsprechend des angegebenen Codierungstyps decodiert.quote
(Standardwert ist"
): Hiermit wird ein einzelnes Zeichen festgelegt, das als Escapezeichen für Werte in Anführungszeichen verwendet wird, wobei die Trennlinie Teil des Werts sein kann. Wenn Sie die Anführungszeichen deaktivieren möchten, müssen Sie nicht NULL, sondern eine leere Zeichenfolge angeben. Dieses Verhalten unterscheidet sich voncom.databricks.spark.csv
.escape
(Standardwert ist\
): Hiermit wird ein einzelnes Zeichen festgelegt, das als Escapezeichen für Anführungszeichen verwendet wird, die sich innerhalb eines bereits in Anführungszeichen eingeschlossenen Werts befinden.charToEscapeQuoteEscaping
(Standardwert istescape
oder\0
): Hiermit wird ein einzelnes Zeichen festgelegt, das als Escapezeichen des Anführungszeichens verwendet wird. Der Standardwert ist ein Escapezeichen, wenn sich dieescape
- undquote
-Zeichen unterscheiden, andernfalls lautet er\0
.comment
(Leere Standardzeichenfolge): Hiermit wird ein einzelnes Zeichen festgelegt, das zum Überspringen von Zeilen verwendet wird, die mit diesem Zeichen beginnen. Sie ist standardmäßig deaktiviert.- Header (Standardwert ist
false
): Hiermit wird die erste Zeile als Spaltennamen verwendet. enforceSchema
(Standardwert isttrue
): Wenn diese Option auf „True“ festgelegt ist, wird das angegebene oder abgeleitete Schema zwangsweise auf Datenquellendateien angewendet, und Header in CSV-Dateien werden ignoriert. Wenn diese Option auf „False“ festgelegt ist, wird das Schema anhand aller Header in CSV-Dateien überprüft, falls die Headeroption auf „True“ festgelegt ist. Feldnamen im Schema und in den Spaltennamen in CSV-Headern werden anhand ihrer Positionen unter Berücksichtigung vonspark.sql.caseSensitive
überprüft. Obwohl der Standardwert „True“ ist, wird empfohlen, die Option „enforceSchema“ zu deaktivieren, um falsche Ergebnisse zu vermeiden.inferSchema
(Standardwert istfalse
): Hiermit wird das Eingabeschema automatisch aus Daten abgeleitet. Es ist eine zusätzliche Übergabe der Daten erforderlich.samplingRatio
(Standardwert ist 1.0): Hiermit wird der Anteil der Zeilen definiert, die beim Schemarückschließen verwendet werden.ignoreLeadingWhiteSpace
(Standardwert istfalse
): Dies ist ein Flag, das angibt, ob vorangestellte Leerzeichen von zu lesenden Werten übersprungen werden sollen.ignoreTrailingWhiteSpace
(Standardwert istfalse
): Dies ist ein Flag, das angibt, ob nachstehende Leerzeichen von zu lesenden Werten übersprungen werden sollen.nullValue
(Standardwert ist eine leere Zeichenfolge): Hiermit wird die Zeichenfolgendarstellung eines NULL-Werts festgelegt.emptyValue
(Standardwert ist eine leere Zeichenfolge): Hiermit wird die Zeichenfolgendarstellung eines leeren Werts festgelegt.nanValue
(Standardwert istNaN
): Hiermit wird die Zeichenfolgendarstellung eines Werts festgelegt, der keine Zahl ist.positiveInf
(Standardwert istInf
): Hiermit wird die Zeichenfolgendarstellung eines positiven Unendlichkeitswerts festgelegt.negativeInf
(Standardwert ist-Inf)
): Hiermit wird die Zeichenfolgendarstellung eines negativen Unendlichkeitswerts festgelegt.dateFormat
(Standardformatyyyy-MM-dd
): Hiermit wird die Zeichenfolge festgelegt, die ein Datumsformat angibt. Benutzerdefinierte Datumsformate folgen den Formaten im Artikel zu datetime-Mustern. Dies gilt für den date-Typ.timestampFormat
(Standardformatyyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
): Hiermit wird die Zeichenfolge festgelegt, die ein Zeitstempelformat angibt. Benutzerdefinierte Datumsformate folgen den Formaten im Artikel zu datetime-Mustern. Dies gilt für den timestamp-Typ.maxColumns
(Standardwert ist20480
): Hiermit wird eine feste Obergrenze für die Anzahl der Spalten definiert, die ein Datensatz enthalten kann.maxCharsPerColumn
(Standardwert ist „-1“): Hiermit wird die maximale Anzahl der Zeichen definiert, die für jeden angegebenen zu lesenden Wert zulässig sind. Der Standardwert ist „-1“, d. h. die Länge ist unbegrenzt.unescapedQuoteHandling
(Standardwert istSTOP_AT_DELIMITER
): Hiermit wird definiert, wie der CSV-Parser Werte mit Anführungszeichen ohne Escapezeichen verarbeitet.STOP_AT_CLOSING_QUOTE
: Wenn in der Eingabe Anführungszeichen ohne Escapezeichen erkannt werden, wird das Anführungszeichen akkumuliert und der Wert als Anführungszeichenwert analysiert, bis ein schließendes Anführungszeichen gefunden wird.BACK_TO_DELIMITER
: Wenn in der Eingabe Anführungszeichen ohne Escapezeichen erkannt werden, wird der Wert als ein Wert ohne Anführungszeichen betrachtet. Der Parser akkumuliert dann alle Zeichen des aktuellen analysierten Werts, bis das Trennzeichen erkannt wird. Wenn im Wert kein Trennzeichen gefunden wird, akkumuliert der Parser weiter Zeichen aus der Eingabe, bis ein Trennzeichen oder Zeilenende gefunden wird.STOP_AT_DELIMITER
: Wenn in der Eingabe Anführungszeichen ohne Escapezeichen erkannt werden, wird der Wert als ein Wert ohne Anführungszeichen betrachtet. Der Parser akkumuliert dann alle Zeichen, bis das Trennzeichen oder ein Zeilenende in der Eingabe erkannt wird.STOP_AT_DELIMITER
: Wenn in der Eingabe Anführungszeichen erkannt werden, die nicht mit Escapezeichen versehen sind, wird der für den angegebenen Wert analysierte Inhalt übersprungen, und stattdessen wird der innullValue
festgelegte Wert erzeugt.RAISE_ERROR
: Wenn in der Eingabe Anführungszeichen erkannt werden, die nicht mit Escapezeichen versehen sind, wird eineTextParsingException
ausgelöst.
mode
(Standardwert istPERMISSIVE
): Hiermit wird die Behandlung von beschädigten Datensätzen bei der Analyse festgelegt. Diese Option unterstützt die folgenden Modi, in denen nicht zwischen Groß- und Kleinschreibung unterschieden wird. Spark versucht, nur erforderliche Spalten in CSV mithilfe der Spaltenbereinigung zu analysieren. Daher können sich beschädigte Datensätze je nach der erforderlichen Menge an Feldern unterscheiden. Dieses Verhalten kann vonspark.sql.csv.parser.columnPruning.enabled
gesteuert werden (diese Option ist standardmäßig aktiviert).PERMISSIVE
: Wenn ein beschädigter Datensatz erkannt wird, wird die falsch formatierte Zeichenfolge in ein durchcolumnNameOfCorruptRecord
konfiguriertes Feld eingefügt, und die falsch formatierten Felder werden auf NULL festgelegt. Wenn Benutzer*innen beschädigte Datensätze beibehalten möchten, können sie ein Zeichenfolgen-Typfeld mit dem Namen „columnNameOfCorruptRecord“ in einem benutzerdefinierten Schema festlegen. Wenn das Feld nicht im Schema vorhanden ist, werden beschädigte Datensätze bei der Analyse gelöscht. Ein Datensatz mit weniger oder mehr Token als das Schema ist für CSV kein beschädigter Datensatz. Wenn ein Datensatz mit weniger Token als der Länge des Schemas erkannt wird, wird „NULL“ für zusätzliche Felder festgelegt. Wenn der Datensatz über mehr Token als die Länge des Schemas verfügt, werden zusätzliche Token gelöscht.FAILFAST
: Hiermit wird eine Ausnahme ausgelöst, wenn beschädigte Datensätze erkannt werden.
columnNameOfCorruptRecord
(Standardwert ist der inspark.sql.columnNameOfCorruptRecord
angegebene Wert): Hiermit wird das Umbenennen des neuen Felds mit der nicht wohlgeformten Zeichenfolge ermöglicht, das imPERMISSIVE
-Modus erstellt wurde. Dadurch wirdspark.sql.columnNameOfCorruptRecord
überschrieben.multiLine
(Standardwert istfalse
): Hiermit wird ein Datensatz analysiert, der mehrere Zeilen umfassen kann.locale
(Standardwert isten-US
): Hiermit wird ein Gebietsschema als Sprachtag im IETF BCP 47-Format festgelegt. das beispielsweise beim Analysieren von Datumsangaben und Zeitstempeln verwendet wird.lineSep
(Standard gilt für\r
,\r\n
und\n
): Hiermit wird das Zeilentrennzeichen definiert, das für die Analyse verwendet werden soll. Die maximale Länge beträgt 1 Zeichen.pathGlobFilter
: Dies ist ein optionales Globmuster, das nur Dateien mit Pfaden einschließt, die dem Muster entsprechen. Die Syntax entsprichtorg.apache.hadoop.fs.GlobFilter
. Das Verhalten der Partitionsermittlung wird dadurch nicht geändert.
Beispiele
> SELECT from_csv('1, 0.8', 'a INT, b DOUBLE');
{1,0.8}
> SELECT from_csv('26/08/2015', 'time Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
{"time":2015-08-26 00:00:00}