Funkcja from_csv
Dotyczy: Databricks SQL Databricks Runtime
Zwraca wartość struktury z wartościami csvStr
i schema
.
Składnia
from_csv(csvStr, schema [, options])
Argumenty
csvStr
: wyrażenie STRING określające wiersz danych CSV.schema
: literał ciągu lub wywołanie funkcji schema_of_csv.options
: opcjonalny ciąg MAP<, literał CIĄGU> określający dyrektywy.
Zwraca
Struktura z nazwami pól i typami pasującymi do definicji schematu.
csvStr
powinny być dobrze sformułowane w odniesieniu do i schema
options
.
schema
musi być definiowana jako nazwa kolumny rozdzielone przecinkami i pary typów danych, które są używane na przykład CREATE TABLE
.
options
, jeśli podano, może to być dowolny z następujących elementów:
sep
(ustawienie domyślne,
): ustawia separator dla każdego pola i wartości. Ten separator może być co najmniej jednym znakiem.encoding
(wartość domyślna UTF-8): dekoduje pliki CSV według określonego typu kodowania.quote
(wartość domyślna"
): ustawia pojedynczy znak używany do ucieczki wartości cudzysłowu, gdzie separator może być częścią wartości. Jeśli chcesz wyłączyć cudzysłów, musisz ustawić wartość null, ale pusty ciąg. To zachowanie różni się odcom.databricks.spark.csv
.escape
(wartość domyślna\
): ustawia pojedynczy znak używany do ucieczki cudzysłowów wewnątrz już cytowanej wartości.charToEscapeQuoteEscaping
(wartość domyślnaescape
lub\0
): ustawia pojedynczy znak używany do ucieczki znaku cudzysłowu. Wartość domyślna to znak ucieczki, gdyescape
znaki iquote
są inne,\0
w przeciwnym razie.comment
(domyślny pusty ciąg): ustawia pojedynczy znak używany do pomijania wierszy rozpoczynających się od tego znaku. Domyślnie jest on wyłączony.- header (wartość domyślna
false
): używa pierwszego wiersza jako nazw kolumn. enforceSchema
(wartość domyślnatrue
): Jeśli ustawiono wartość true, określony lub wnioskowany schemat jest wymuszany do plików źródła danych, a nagłówki w plikach CSV są ignorowane. Jeśli opcja jest ustawiona na false, schemat jest weryfikowany dla wszystkich nagłówków w plikach CSV w przypadku, gdy opcja nagłówka jest ustawiona na true. Nazwy pól w nazwach schematu i kolumn w nagłówkach CSV są sprawdzane przez ich pozycje, biorąc pod uwagęspark.sql.caseSensitive
. Chociaż wartość domyślna ma wartość true, zaleca się wyłączenie opcji enforceSchema, aby uniknąć nieprawidłowych wyników.inferSchema
(ustawienie domyślnefalse
): automatycznie wnioskuje schemat wejściowy z danych. Wymaga to dodatkowego przekazania danych.samplingRatio
(wartość domyślna 1.0): definiuje ułamek wierszy używanych do wnioskowania schematu.ignoreLeadingWhiteSpace
(ustawienie domyślnefalse
): flaga wskazująca, czy powinny zostać pominięte wiodące białe znaki z odczytanych wartości.ignoreTrailingWhiteSpace
(ustawienie domyślnefalse
): flaga wskazująca, czy należy pominąć końcowe odstępy od odczytywanych wartości.nullValue
(domyślny pusty ciąg): ustawia ciąg reprezentujący wartość null.emptyValue
(domyślny pusty ciąg): ustawia ciąg reprezentujący pustą wartość.nanValue
(wartość domyślnaNaN
): ustawia reprezentację ciągu wartości innej niż liczba.positiveInf
(wartość domyślnaInf
): ustawia reprezentację ciągu wartości dodatniej nieskończoności.negativeInf
(wartość domyślna-Inf)
: ustawia ciąg reprezentujący ujemną wartość nieskończoności.dateFormat
(wartość domyślnayyyy-MM-dd
): ustawia ciąg, który wskazuje format daty. Niestandardowe formaty dat są zgodne z formatami we wzorcach daty/godziny. Dotyczy to typu daty.timestampFormat
(wartość domyślnayyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
): ustawia ciąg, który wskazuje format znacznika czasu. Niestandardowe formaty dat są zgodne z formatami we wzorcach daty/godziny. Dotyczy to typu znacznika czasu.maxColumns
(ustawienie domyślne20480
): definiuje stały limit liczby kolumn, które może zawierać rekord.maxCharsPerColumn
(wartość domyślna -1): definiuje maksymalną liczbę znaków dozwoloną dla odczytywanej określonej wartości. Domyślnie jest to -1, co oznacza nieograniczoną długośćunescapedQuoteHandling
(wartość domyślnaSTOP_AT_DELIMITER
): definiuje sposób obsługi wartości przez analizator CSV z niewyrównanymi cudzysłowami.STOP_AT_CLOSING_QUOTE
: Jeśli w danych wejściowych znajdują się niewyspoznane cudzysłowy, zakumuluj znak cudzysłowu i kontynuuj analizowanie wartości jako wartości cudzysłowu cudzysłowu, aż zostanie znaleziony cudzysłów zamykający.BACK_TO_DELIMITER
: Jeśli w danych wejściowych znajdują się nieprzeznaczone cudzysłowy, należy rozważyć wartość jako wartość bez cudzysłowu. Spowoduje to, że analizator zgromadzi wszystkie znaki bieżącej wartości analizowanej do momentu znalezienia ogranicznika. Jeśli w wartości nie znaleziono ogranicznika, analizator będzie nadal gromadzić znaki z danych wejściowych do momentu znalezienia ogranicznika lub zakończenia wiersza.STOP_AT_DELIMITER
: Jeśli w danych wejściowych znajdują się nieprzeznaczone cudzysłowy, należy rozważyć wartość jako wartość bez cudzysłowu. Spowoduje to, że analizator zgromadzi wszystkie znaki do momentu znalezienia ogranicznika lub zakończenia wiersza w danych wejściowych.STOP_AT_DELIMITER
: Jeśli w danych wejściowych znajdują się niewyspoznane cudzysłowy, zawartość przeanalizowana dla określonej wartości zostanie pominięta i zamiast tego zostanie wygenerowana wartość ustawionanullValue
.RAISE_ERROR
: Jeśli w danych wejściowych znajdują się niewyobrażalne cudzysłowy,TextParsingException
zwracany jest cudzysłów.
mode
(ustawienie domyślnePERMISSIVE
): umożliwia tryb radzenia sobie z uszkodzonymi rekordami podczas analizowania. Obsługuje następujące tryby bez uwzględniania wielkości liter. Platforma Spark próbuje przeanalizować tylko wymagane kolumny w pliku CSV w obszarze oczyszczania kolumn. W związku z tym uszkodzone rekordy mogą być różne na podstawie wymaganego zestawu pól. To zachowanie może być kontrolowane przezspark.sql.csv.parser.columnPruning.enabled
(domyślnie włączone).PERMISSIVE
: gdy spełnia uszkodzony rekord, umieszcza źle sformułowany ciąg w polu skonfigurowanym przezcolumnNameOfCorruptRecord
program i ustawia źle sformułowane pola na wartość null. Aby zachować uszkodzone rekordy, użytkownik może ustawić pole typu ciągu o nazwie columnNameOfCorruptRecord w schemacie zdefiniowanym przez użytkownika. Jeśli schemat nie ma pola, usuwa uszkodzone rekordy podczas analizowania. Rekord z mniejszą lub większą liczbą tokenów niż schemat nie jest uszkodzonym rekordem w pliku CSV. Jeśli spełnia rekord o mniejszej liczbie tokenów niż długość schematu, ustawia wartość null na dodatkowe pola. Jeśli rekord ma więcej tokenów niż długość schematu, usuwa dodatkowe tokeny.FAILFAST
: zgłasza wyjątek, gdy spełnia uszkodzone rekordy.
columnNameOfCorruptRecord
(wartość domyślna to wartość określona wspark.sql.columnNameOfCorruptRecord
pliku ): umożliwia zmianę nazwy nowego pola o źle sformułowanym ciągu utworzonym przezPERMISSIVE
tryb. Spowoduje to przesłonięciaspark.sql.columnNameOfCorruptRecord
.multiLine
(ustawienie domyślnefalse
): przeanalizuj jeden rekord, który może obejmować wiele wierszy.locale
(ustawienie domyślneen-US
): ustawia ustawienia regionalne jako tag języka w formacie IETF BCP 47. Na przykład jest to używane podczas analizowania dat i sygnatur czasowych.lineSep
(wartość domyślna obejmuje wszystkie\r
,\r\n
i\n
): definiuje separator linii, który ma być używany do analizowania. Maksymalna długość to 1 znak.pathGlobFilter
: opcjonalny wzorzec globu zawierający tylko pliki ze ścieżkami pasującymi do wzorca. Składnia jest następującaorg.apache.hadoop.fs.GlobFilter
: . Nie zmienia to zachowania odnajdywania partycji.
Przykłady
> 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}