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
należy zdefiniować jako pary nazw kolumn i typów danych oddzielone przecinkami, tak jak używane jest to na przykład w 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
(domyślna"
): ustawia pojedynczy znak używany do oznaczania wartości w cudzysłowie, gdzie separator może być częścią wartości. Aby wyłączyć cudzysłowy, musisz ustawić pusty ciąg zamiast null. 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. - nagłówek (domyślny
false
): używa pierwszego wiersza jako nazw kolumn. -
enforceSchema
(domyślnatrue
): jeśli ustawiona jest na prawdę, określony lub wywnioskowany schemat jest wymuszany w plikach ź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 schemacie oraz nazwy kolumn w nagłówkach CSV są sprawdzane pod względem ich pozycji, uwzględniającspark.sql.caseSensitive
. Chociaż wartość domyślna ma wartość true, zaleca się wyłączenie opcji enforceSchema, aby uniknąć nieprawidłowych wyników. -
inferSchema
(domyślnafalse
): automatycznie wywnioskuje 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
(domyślnafalse
): flaga wskazująca, czy spacje wiodące z wartości, które są odczytywane, powinny zostać pominięte. -
ignoreTrailingWhiteSpace
(domyślnafalse
): flaga wskazująca, czy należy pominąć końcowe spacje 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
(domyślna20480
): 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
(domyślnaSTOP_AT_DELIMITER
): definiuje sposób obsługi wartości przez analizator CSV z nieoznaczonymi 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 znajdzie się niewyrównane cudzysłowy, zawartość przeanalizowana dla określonej wartości zostanie pominięta, a wartość ustawiona wnullValue
zostanie wygenerowana. -
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
): umożliwia zmianę nazwy nowego pola o źle sformułowanym ciągu utworzonym przez trybPERMISSIVE
. 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 detekcji 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}