from_csv-Funktion

Gilt für:durch Häkchen mit „Ja“ markiert Databricks SQL durch Häkchen mit „Ja“ markiert 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 von com.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 ist escape oder \0): Hiermit wird ein einzelnes Zeichen festgelegt, das als Escapezeichen des Anführungszeichens verwendet wird. Der Standardwert ist ein Escapezeichen, wenn sich die escape- und quote-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 ist true): 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 von spark.sql.caseSensitive überprüft. Obwohl der Standardwert „True“ ist, wird empfohlen, die Option „enforceSchema“ zu deaktivieren, um falsche Ergebnisse zu vermeiden.
  • inferSchema (Standardwert ist false): 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 ist false): Dies ist ein Flag, das angibt, ob vorangestellte Leerzeichen von zu lesenden Werten übersprungen werden sollen.
  • ignoreTrailingWhiteSpace (Standardwert ist false): 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 ist NaN): Hiermit wird die Zeichenfolgendarstellung eines Werts festgelegt, der keine Zahl ist.
  • positiveInf (Standardwert ist Inf): Hiermit wird die Zeichenfolgendarstellung eines positiven Unendlichkeitswerts festgelegt.
  • negativeInf (Standardwert ist -Inf)): Hiermit wird die Zeichenfolgendarstellung eines negativen Unendlichkeitswerts festgelegt.
  • dateFormat (Standardformat yyyy-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 (Standardformat yyyy-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 ist 20480): 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 ist STOP_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 in nullValue festgelegte Wert erzeugt.
    • RAISE_ERROR: Wenn in der Eingabe Anführungszeichen erkannt werden, die nicht mit Escapezeichen versehen sind, wird eine TextParsingException ausgelöst.
  • mode (Standardwert ist PERMISSIVE): 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 von spark.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 durch columnNameOfCorruptRecord 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 in spark.sql.columnNameOfCorruptRecord angegebene Wert): Hiermit wird das Umbenennen des neuen Felds mit der nicht wohlgeformten Zeichenfolge ermöglicht, das im PERMISSIVE-Modus erstellt wurde. Dadurch wird spark.sql.columnNameOfCorruptRecord überschrieben.
  • multiLine (Standardwert ist false): Hiermit wird ein Datensatz analysiert, der mehrere Zeilen umfassen kann.
  • locale (Standardwert ist en-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 entspricht org.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}