IVF

Chasing Dreams

Impala string functions

  • wszystkie funkcje akceptujące argumenty STRING akceptują również typy VARCHAR i CHAR wprowadzone w Impala 2.0.
  • ilekroć wartości VARCHAR lub CHAR są przekazywane do funkcji, która zwraca wartość łańcuchową, typ zwracany jest znormalizowany do STRING. Na przykład wywołanie concat() z kombinacją argumentów STRING, VARCHAR i CHAR daje wynik STRING.

odniesienie do funkcji:

Impala obsługuje następujące funkcje łańcuchowe:

  • ASCII
  • BASE64DECODE
  • BASE64ENCODE
  • BTRIM
  • CHAR_LENGTH
  • CHR
  • CONCAT
  • CONCAT_WS
  • FIND_IN_SET
  • GROUP_CONCAT
  • INITCAP
  • INSTR
  • JARO_DISTANCE, JARO_DIST
  • JARO_SIMILARITY, JARO_SIM
  • JARO_WINKER_DISTANCE, JW_DST
  • JARO_WINKER_DISTANCE, JW_SIM
  • LEFT
  • LENGTH
  • LEVENSHTEIN, LE_DST
  • LOCATE
  • LOWER, LCASE
  • LPAD
  • LTRI
  • PARSE_URL
  • REGEXP_ESCAPE
  • REGEXP_EXTRACT
  • REGEXP_LIKE
  • REGEXP_REPLACE
  • REPEAT
  • REPLACE
  • REVERSE
  • RIGHT
  • RPAD
  • RTRIM
  • SPLIT_PART
  • STRLEFT
  • STRRIGHT
  • SUBSTR, substring
  • Translate
  • trim
  • Upper, UCASE

ASCII(string str) cel: zwraca numeryczny kod ASCII pierwszego znaku argumentu.

Typ powrotu: INT

BASE64DECODE(STRING str) cel:

Typ powrotu: STRING

uwagi dotyczące użycia:

funkcje BASE64ENCODE() i BASE64DECODE() są zwykle używane w połączeniu, do przechowywania w tabeli Impala danych ciągów, które są problematyczne do przechowywania lub przesyłania. Można na przykład użyć tych funkcji do przechowywania danych ciągów znaków, które używają kodowania innego niż UTF-8, lub do przekształcania wartości w kontekstach, które wymagają wartości ASCII, na przykład dla kolumn klucza partycji. Należy pamiętać, że wartości zakodowane w base64 dają różne wyniki dla funkcji łańcuchowych, takich jak LENGTH(), MAX() i MIN(), niż gdy te funkcje są wywoływane z niezakodowanymi wartościami łańcuchowymi.

wszystkie wartości zwracane przez BASE64ENCODE() są wielokrotnością długości 4 bajtów. Wszystkie wartości argumentów dostarczone do BASE64DECODE() muszą być również wielokrotnością długości 4 bajtów. Jeśli wartość zakodowana w base64 miałaby inną długość, może być wypełniona końcowymi znakami =, aby osiągnąć długość będącą wielokrotnością 4 bajtów.

jeśli argument string to BASE64DECODE() nie reprezentuje poprawnej wartości zakodowanej w base64, z zastrzeżeniem ograniczeń implementacji Impala, takich jak dozwolony zestaw znaków, funkcja zwraca NULL.

przykłady:

BASE64ENCODE (STRING str) cel:

Typ powrotu: STRING

uwagi dotyczące użycia:

funkcje BASE64ENCODE() i BASE64DECODE() są zwykle używane w połączeniu, do przechowywania w tabeli Impala danych ciągów, które są problematyczne do przechowywania lub przesyłania. Można na przykład użyć tych funkcji do przechowywania danych ciągów znaków, które używają kodowania innego niż UTF-8, lub do przekształcania wartości w kontekstach, które wymagają wartości ASCII, na przykład dla kolumn klucza partycji. Należy pamiętać, że wartości zakodowane w base64 dają różne wyniki dla funkcji łańcuchowych, takich jak LENGTH(), MAX() i MIN(), niż gdy te funkcje są wywoływane z niezakodowanymi wartościami łańcuchowymi.

wszystkie wartości zwracane przez BASE64ENCODE() są wielokrotnością długości 4 bajtów. Wszystkie wartości argumentów dostarczone do BASE64DECODE() muszą być również wielokrotnością długości 4 bajtów. Jeśli wartość zakodowana w base64 miałaby inną długość, może być wypełniona końcowymi znakami =, aby osiągnąć długość będącą wielokrotnością 4 bajtów.

przykłady:

BTRIM(STRING a), BTRIM(STRING a, STRING chars_to_trim) cel: usuwa wszystkie wystąpienia jednego lub więcej znaków z początku i końca wartościSTRING. Domyślnie usuwa tylko spacje. Jeśli podany jest inny niżNULLopcjonalny drugi argument, funkcja usuwa wszystkie wystąpienia znaków w tym drugim argumencie z początku i końca łańcucha.

Typ powrotu: STRING

przykłady:

poniższe przykłady pokazują domyślne zachowanie btrim() i to, co się zmienia po podaniu opcjonalnego drugiego argumentu. Wszystkie przykłady zawierają wartość wyjściową z wartością , dzięki czemu w wyniku btrim() można zobaczyć wszelkie spacje prowadzące lub końcowe. Domyślnie funkcja usuwa i ilość zarówno początkowych, jak i końcowych spacji. Gdy podany jest drugi argument, każda liczba wystąpień dowolnego znaku w drugim argumencie jest usuwana z początku i końca ciągu wejściowego; w tym przypadku spacje nie są usuwane (chyba że są częścią drugiego argumentu) i żadne instancje znaków nie są usuwane, jeśli nie znajdują się bezpośrednio na początku lub na końcu łańcucha.

CHAR_LENGTH(STRING a), CHARACTER_LENGTH (STRING a) cel: zwraca długość w znakach łańcucha argumentu. Aliasy dla funkcjilength().

Typ zwrotu: INT

Chr(int character_code) cel: Zwraca znak określony przez wartość dziesiętną punktu kodu. Interpretacja i wyświetlanie wynikowego znaku zależy od ustawień regionalnych systemu. Ponieważ spójne przetwarzanie wartości ciągu znaków Impala jest gwarantowane tylko dla wartości w zakresie ASCII, należy używać tej funkcji tylko dla wartości odpowiadających znakom ASCII. W szczególności wartości parametrów większe niż 255 zwracają pusty łańcuch.

Typ powrotu: STRING

uwagi dotyczące użycia: może być używany jako odwrotność funkcji ascii(), która konwertuje znak na jego numeryczny kod ASCII.

przykłady:

SELECT chr(65);+---------+| chr(65) |+---------+| A |+---------+SELECT chr(97);+---------+| chr(97) |+---------+| a |+---------+

CONCAT(STRING A, STRING B…) Purpose: Zwraca pojedynczy łańcuch reprezentujący wszystkie wartości argumentów połączone razem.

jeśli jakikolwiek argument to NULL, funkcja zwraca NULL.

Typ powrotu: STRING

uwagi dotyczące użycia: concat() i concat_ws() są odpowiednie do łączenia wartości wielu kolumn w tym samym wierszu, podczas gdy group_concat() łączy wartości z różnych wierszy.

CONCAT_WS (STRING sep, STRING A, STRING B…) Cel: Zwraca pojedynczy łańcuch reprezentujący połączone wartości drugiego i następnego argumentu, rozdzielony określonym separatorem.

jeśli jakikolwiek argument to NULL, funkcja zwraca NULL.

Typ powrotu: STRING

uwagi dotyczące użytkowania: concat() i concat_ws() są odpowiednie do łączenia wartości wielu kolumn w tym samym wierszu, podczas gdy group_concat() łączy ze sobą wartości z różnych wierszy.

FIND_IN_SET(STRING str, STRING strList) cel: Zwraca pozycję (począwszy od 1) pierwszego wystąpienia określonego łańcucha w ciągu oddzielonym przecinkami. ZwracaNULL, jeśli któryś z argumentów jestNULL, 0, jeśli szukany ciąg nie został znaleziony lub 0, jeśli szukany ciąg zawiera przecinek.

Typ zwrotu: INT

GROUP_CONCAT (STRING S ) cel: Zwraca pojedynczy łańcuch reprezentujący wartość argumentu połączoną ze sobą dla każdego wiersza zbioru wyników. Jeśli podany jest opcjonalny łańcuch separatora, separator jest dodawany między każdą parą połączonych wartości.

Typ powrotu: STRING

uwagi dotyczące użycia: concat() i concat_ws() są odpowiednie do łączenia wartości wielu kolumn w tym samym wierszu, podczas gdy group_concat() łączy wartości z różnych wierszy.

domyślnie Zwraca pojedynczy łańcuch obejmujący cały zestaw wyników. Aby uwzględnić inne kolumny lub wartości w zestawie wynikowym lub utworzyć wiele połączonych łańcuchów dla podzbiorów wierszy, dołącz do zapytania klauzulę GROUP BY.

ściśle mówiąc, group_concat() jest funkcją agregującą, a nie skalarną, jak inne na tej liście. Więcej szczegółów i przykładów można znaleźć w funkcji GROUP_CONCAT.

Initcap(STRING str) cel: zwraca łańcuch wejściowy z pierwszą literą każdego słowa pisaną wielką literą i wszystkimi innymi literami małymi literami.

Typ powrotu: STRING

przykład:

INITCAP("i gOt mY ChiCkeNs in tHe yard.") zwraca "I Got My Chickens In The Yard.".

INSTR(STRING str, STRING substr ]) cel: Zwraca pozycję (począwszy od 1) pierwszego wystąpienia podłańcucha w dłuższym łańcuchu.

Typ powrotu: INT

uwagi dotyczące użycia:

jeśli w str nie ma podstr, funkcja zwraca 0.

opcjonalne argumenty trzeci i czwarty pozwalają znaleźć instancje substr inne niż pierwsza instancja, zaczynając od lewej.

JARO_DISTANCE (STRING str1, STRING str2)JARO_DST (STRING str1, STRING str2) cel: zwraca odległość Jaro między dwoma wejściowymi łańcuchami. Odległość Jaro jest miarą podobieństwa między dwoma ciągami i jest komplementarnością

JARO_SIMILARITY(), czyli (1 –JARO_SIMILARITY()).

Typ powrotu: DOUBLE

uwagi dotyczące użycia:

jeśli dwa ciągi wejściowe są identyczne, funkcja zwraca 0.0.

jeśli nie ma pasującego znaku między wejściowymi łańcuchami, funkcja zwraca 1.0.

jeśli którykolwiek z ciągów wejściowych jest NULL, funkcja zwraca NULL.

jeśli długość jednego z łańcuchów wejściowych jest większa niż 255 znaków, funkcja zwraca błąd.

JARO_SIMILARITY(STRING str1, STRING str2) JARO_SIM(STRING str1, STRING str2) Purpose: zwraca podobieństwo Jaro dwóch łańcuchów. Im wyższe jest podobieństwo Jaro dla dwóch strun, tym bardziej podobne są struny.

Typ powrotu: DOUBLE

uwagi dotyczące użycia:

jeśli dwa ciągi wejściowe są identyczne, funkcja zwraca 1.0.

jeśli nie ma pasującego znaku między wejściowymi łańcuchami, funkcja zwraca 0.0.

jeśli którykolwiek z ciągów wejściowych jest NULL, funkcja zwraca NULL.

jeśli długość jednego z łańcuchów wejściowych jest większa niż 255 znaków, funkcja zwraca błąd.

JARO_WINKLER_DISTANCE (STRING str1, STRING str2) Jw_dst (STRING str1, STRING str2) Purpose: zwraca odległość Jaro-Winklera dwóch wejściowych łańcuchów. Jest dopełnieniemJARO_WINKLER_SIMILARITY(), tj. 1 –JARO_WINKLER_SIMILARITY().

Typ powrotu: DOUBLE

uwagi dotyczące użycia:

jeśli dwa ciągi wejściowe są identyczne, funkcja zwraca 0.0.

jeśli nie ma pasującego znaku między wejściowymi łańcuchami, funkcja zwraca 1.0.

funkcja zwraca błąd w następujących przypadkach:

  • długość jednego z łańcuchów wejściowych jest większa niż 255 znaków.
  • scaling_factor < 0.0 lub scaling_factor > 0.25
  • boost_threshold < 0.0 lub boost_threshold > 1.0

jeśli którykolwiek z łańcuchów wejściowych wynosi NULL, funkcja zwraca NULL.

domyślnym współczynnikiem skalowania jest 0,1.

waga prefiksu zostanie zastosowana tylko wtedy, gdy Jaro-distance przekroczy opcjonalny boost_threshold. Domyślnie wartość boost_threshold wynosi 0.7.

JARO_WINKLER_SIMILARITY(STRING str1, STRING str2) JARO_SIM(STRING str1, STRING str2) Purpose: zwraca podobieństwo Jaro-Winklera między dwoma wejściowymi łańcuchami. Podobieństwo Jaro-Winklera wykorzystuje wagę prefiksu, określoną przez współczynnik skalowania, co daje korzystniejsze oceny ciągom, które pasują Od początku do ustawionej długości prefiksu, maksymalnie do czterech znaków.

Użyj funkcji Jaro lub Jaro-Winklera do wykonywania rozmytych dopasowań na stosunkowo krótkich łańcuchach, np. do szorowania danych wejściowych użytkownika z nazwami z rekordami w bazie danych.

Typ powrotu: DOUBLE

uwagi dotyczące użycia:

jeśli dwa ciągi wejściowe są identyczne, funkcja zwraca 1.0.

jeśli nie ma pasującego znaku między wejściowymi łańcuchami, funkcja zwraca 0.0.

funkcja zwraca błąd w następujących przypadkach:

  • długość jednego z łańcuchów wejściowych jest większa niż 255 znaków.
  • scaling_factor < 0.0 lub scaling_factor > 0.25
  • boost_threshold < 0.0 lub boost_threshold > 1.0

jeśli którykolwiek z łańcuchów wejściowych wynosi NULL, funkcja zwraca NULL.

domyślnym współczynnikiem skalowania jest 0,1.

waga prefiksu zostanie zastosowana tylko wtedy, gdy podobieństwo Jaro przekroczy opcjonalny boost_threshold. Domyślnie wartość boost_threshold wynosi 0.7.

LEFT (STRING A, INT num_chars) Patrz funkcjaSTRLEFT(). LENGTH (STRING a) Purpose: zwraca długość w znakach łańcucha argumentu.

Typ zwracania: INT

LEVENSHTEIN(STRING str1, STRING str2), LE_DST(STRING str1, STRING str2) przeznaczenie: zwraca odległość Levenshteina między dwoma wejściowymi łańcuchami. Odległość Levenshteina między dwoma łańcuchami to minimalna liczba jednoznakowych edycji wymaganych do przekształcenia jednego łańcucha w drugi. Funkcja wskazuje, jak różne są ciągi wejściowe.

Typ zwracania: INT

uwagi dotyczące użycia:

jeśli ciągi wejściowe są równe, funkcja zwraca 0.

jeśli którekolwiek z wejść przekracza 255 znaków, funkcja zwraca błąd.

jeśli którekolwiek z wejściowych łańcuchów jest NULL, funkcja zwraca NULL.

jeśli długość jednego łańcucha wejściowego wynosi zero, funkcja zwraca długość drugiego łańcucha.

przykład:

LEVENSHTEIN ('welcome', 'We come') zwraca 2, najpierw zmień na „w ” na ” W„, a następnie zamień „l ” na znak spacji.

LOCATE(STRING substr, STRING str) cel: Zwraca pozycję (począwszy od 1) pierwszego wystąpienia podłańcucha w dłuższym łańcuchu, opcjonalnie po określonej pozycji.

Typ zwrotu: INT

LOWER(STRING a), LCASE(STRING a) cel: zwraca łańcuch argumentu skonwertowany na wszystkie małe litery.

Typ powrotu: STRING

uwagi dotyczące użycia:

w Impala 2.5 i wyższe, możesz uprościć zapytania, które używają wielu wywołań UPPER() i LOWER() do porównywania wielkości liter, używając operatorów ILIKE lub IREGEXP.

lpad(STRING str, INT len, STRING pad) cel: zwraca łańcuch o określonej długości, oparty na pierwszym argumencie string. Jeśli podany ciąg znaków jest zbyt krótki, jest on wypełniany po lewej stronie powtarzającą się sekwencją znaków z łańcucha padów. Jeśli podany łańcuch jest zbyt długi, jest obcinany po prawej stronie.

Typ zwrotu: STRING

LTRIM (STRING a ) cel: Zwraca łańcuch argumentu ze wszystkimi wystąpieniami znaków określonymi przez drugi argument usuniętymi z lewej strony. Usuwa spacje, jeśli drugi argument nie jest podany.

Return type: STRING

PARSE_URL(STRING urlString, STRING partToExtract ) Purpose: Zwraca część adresu URL odpowiadającą podanej części. Argument part może być'PROTOCOL','HOST','PATH','REF','AUTHORITY','FILE','USERINFO', lub'QUERY'Duże litery są wymagane dla tych wartości literalnych. Gdy żądasz częściQUERYadresu URL, możesz opcjonalnie określić klucz, aby pobrać tylko powiązaną wartość z par klucz-wartość w ciągu zapytania.

Typ powrotu: STRING

uwagi dotyczące użycia: Ta funkcja jest ważna dla tradycyjnego przypadku użycia Hadoop do interpretacji dzienników internetowych. Na przykład, jeśli dane o ruchu sieciowym zawierają surowe adresy URL nie podzielone na osobne kolumny tabeli, można policzyć odwiedzających daną stronę, wyodrębniając pole 'PATH' lub 'FILE' lub analizując wyszukiwane hasła, wyodrębniając odpowiedni klucz z pola 'QUERY'.

REGEXP_ESCAPE(STRING source) przeznaczenie: funkcjaREGEXP_ESCAPEzwraca ciąg znaków poprzedzających znak specjalny w bibliotece RE2, tak że znaki specjalne są interpretowane dosłownie, a nie jako znaki specjalne. Następujące znaki specjalne są unikane przez funkcję:

.\+*?$(){}=!<>|:-

Typ zwracania: string

w Impala 2.0 i nowszych, składnia wyrażenia regularnego Impala jest zgodna ze składnią rozszerzonego wyrażenia regularnego POSIX używaną przez Bibliotekę Google RE2. Szczegółowe informacje można znaleźć w dokumentacji RE2. Ma większość idiomów znanych z wyrażeń regularnych w Perlu, Pythonie i tak dalej, w tym .*? dla nie chciwych meczów.

w impali 2.0 i nowszych, zmiana w podstawowej bibliotece wyrażeń regularnych może spowodować zmiany w sposobie interpretacji wyrażeń regularnych przez tę funkcję. Przetestuj wszelkie zapytania, które używają wyrażeń regularnych i dostosuj wzorce wyrażeń, jeśli to konieczne.

ponieważ interpreter Impala-shell używa znaku \ do ucieczki, użyj \ do reprezentowania znaku ucieczki wyrażenia regularnego we wszystkich wyrażeniach regularnych przesyłanych przez Impala-shell . Być może wolisz używać równoważnych nazw klas znaków, takich jak ] zamiast \d, które trzeba by zakończyć jako \d.

przykłady:

ten przykład pokazuje unikanie jednego ze znaków specjalnych w RE2.

+------------------------------------------------------+| regexp_escape('Hello.world') |+------------------------------------------------------+| Hello\.world |+------------------------------------------------------+

ten przykład pokazuje wszystkie znaki specjalne w RE2.

+------------------------------------------------------------+| regexp_escape('a.b\c+d*e?fh$i(j)k{l}m=n!o<p>q|r:s-t') |+------------------------------------------------------------+| a\.b\c\+d\*e\?f\h$i\(j\)k\{l\}m\=n\!o\<p\>q\|r\:s\-t |+------------------------------------------------------------+

REGEXP_EXTRACT(STRING subject, STRING pattern, int index) Purpose: Zwraca określoną () grupę z łańcucha na podstawie wzorca wyrażenia regularnego. Grupa 0 odnosi się do całego wyodrębnionego łańcucha, podczas gdy grupa 1, 2 itd.odnosi się do pierwszej, drugiej i tak dalej(...)części.

Typ powrotu: STRING

w Impala 2.0 i nowszych, składnia wyrażenia regularnego Impala jest zgodna ze składnią rozszerzonego wyrażenia regularnego POSIX używaną przez Bibliotekę Google RE2. Szczegółowe informacje można znaleźć w dokumentacji RE2. Ma większość idiomów znanych z wyrażeń regularnych w Perlu, Pythonie i tak dalej, w tym .*? dla nie chciwych meczów.

w impali 2.0 i nowszych, zmiana w podstawowej bibliotece wyrażeń regularnych może spowodować zmiany w sposobie interpretacji wyrażeń regularnych przez tę funkcję. Przetestuj wszelkie zapytania, które używają wyrażeń regularnych i dostosuj wzorce wyrażeń, jeśli to konieczne.

ponieważ interpreter Impala-shell używa znaku \ do ucieczki, użyj \ do reprezentowania znaku ucieczki wyrażenia regularnego we wszystkich wyrażeniach regularnych przesyłanych przez Impala-shell . Być może wolisz używać równoważnych nazw klas znaków, takich jak ] zamiast \d, które trzeba by zakończyć jako \d.

przykłady:

ten przykład pokazuje, jak grupa 0 pasuje do pełnego ciągu wzorca, w tym do części spoza dowolnej grupy () :

ten przykład pokazuje, jak Grupa 1 dopasowuje tylko zawartość pierwszej grupy () w łańcuchu wzorców:

w przeciwieństwie do wcześniejszych wydań impali, biblioteka wyrażeń regularnych używana w impali 2.0 i późniejszych obsługuje idiom .*? dla nie chciwych dopasowań. Ten przykład pokazuje, jak łańcuch wzorca zaczynający się od .*? pasuje do najkrótszej możliwej części łańcucha źródłowego, zwracając po prawej stronie zestaw małych liter. Łańcuch wzorca zaczynający się i kończący na .*? znajduje dwa potencjalne dopasowania o jednakowej długości i zwraca pierwszą znalezioną (pierwszy z lewej zestaw małych liter).

REGEXP_LIKE(STRING source, STRING pattern) cel: zwracatruelubfalse, aby wskazać, czy łańcuch źródłowy zawiera w sobie Wyrażenie regularne podane przez wzorzec. Opcjonalny trzeci argument składa się z znaczników literowych, które zmieniają sposób dopasowania, takich jak

idla dopasowania bez rozróżniania wielkości liter.

składnia:

flagi, które możesz uwzględnić w opcjonalnym trzecim argumencie to:

  • c: dopasowanie uwzględniające wielkość liter (domyślnie).
  • i: dopasowanie niewrażliwe na wielkość liter. Jeśli w trzecim argumencie znajduje się wiele wystąpień c i i, ostatnia taka opcja ma pierwszeństwo.
  • m: dopasowanie wieloliniowe. Operatory ^ i $ pasują do początku lub końca dowolnej linii w łańcuchu źródłowym, a nie do początku i końca całego łańcucha.
  • n: dopasowanie nowej linii. Operator . może dopasować znak nowej linii. Operator powtarzania, taki jak .*, może dopasować część łańcucha źródłowego, która obejmuje wiele linii.

Typ powrotu: BOOLEAN

w Impala 2.0 i nowszych, składnia wyrażenia regularnego Impala jest zgodna ze składnią rozszerzonego wyrażenia regularnego POSIX używaną przez Bibliotekę Google RE2. Szczegółowe informacje można znaleźć w dokumentacji RE2. Ma większość idiomów znanych z wyrażeń regularnych w Perlu, Pythonie i tak dalej, w tym .*? dla nie chciwych meczów.

W Impali 2.0 i późniejsze zmiany w podstawowej bibliotece wyrażeń regularnych mogą spowodować zmiany w sposobie interpretacji wyrażeń regularnych przez tę funkcję. Przetestuj wszelkie zapytania, które używają wyrażeń regularnych i dostosuj wzorce wyrażeń, jeśli to konieczne.

ponieważ interpreter Impala-shell używa znaku \ do ucieczki, użyj \ do reprezentowania znaku ucieczki wyrażenia regularnego we wszystkich wyrażeniach regularnych przesyłanych przez Impala-shell . Być może wolisz używać równoważnych nazw klas znaków, takich jak ] zamiast \d, które trzeba by zakończyć jako \d.

przykłady:

ten przykład pokazuje, w jaki sposób REGEXP_LIKE() może testować istnienie różnych rodzajów wzorców wyrażeń regularnych w łańcuchu źródłowym:

REGEXP_REPLACE(string initial, STRING pattern, STRING replacement) cel: zwraca początkowy argument z wzorcem wyrażenia regularnego zastąpionym przez łańcuch końcowy argumentu.

Typ powrotu: STRING

w impali 2.0 i nowsze składnia wyrażenia regularnego Impala jest zgodna ze składnią rozszerzonego wyrażenia regularnego POSIX używaną przez Bibliotekę Google RE2. Szczegółowe informacje można znaleźć w dokumentacji RE2. Ma większość idiomów znanych z wyrażeń regularnych w Perlu, Pythonie i tak dalej, w tym .*? dla nie chciwych meczów.

w impali 2.0 i nowszych, zmiana w podstawowej bibliotece wyrażeń regularnych może spowodować zmiany w sposobie interpretacji wyrażeń regularnych przez tę funkcję. Przetestuj wszelkie zapytania, które używają wyrażeń regularnych i dostosuj wzorce wyrażeń, jeśli to konieczne.

ponieważ interpreter Impala-shell używa znaku \ do ucieczki, użyj \ do reprezentowania znaku ucieczki wyrażenia regularnego we wszystkich wyrażeniach regularnych przesyłanych przez Impala-shell . Być może wolisz używać równoważnych nazw klas znaków, takich jak ] zamiast \d, które trzeba by zakończyć jako \d.

przykłady:

te przykłady pokazują, jak można zastąpić Części ciągu pasujące do wzorca tekstem zastępczym, który może zawierać backreferencje do dowolnych grup () w łańcuchu wzorca. Liczba referencji wstecznych zaczyna się od 1, a wszystkie znaki \ muszą być poprzedzone znakiem \.

Zastąp wzorzec znaków nowym tekstem:

 > select regexp_replace('aaabbbaaa','b+','xyz');+------------------------------------------+| regexp_replace('aaabbbaaa', 'b+', 'xyz') |+------------------------------------------+| aaaxyzaaa |+------------------------------------------+Returned 1 row(s) in 0.11s

Zastąp wzorzec znaków tekstem zastępczym zawierającym oryginalny pasujący tekst:

 > select regexp_replace('aaabbbaaa','(b+)','<\1>');+----------------------------------------------+| regexp_replace('aaabbbaaa', '(b+)', '<\1>') |+----------------------------------------------+| aaa<bbb>aaa |+----------------------------------------------+Returned 1 row(s) in 0.11s

Usuń wszystkie znaki, które nie są cyframi:

REPEAT (STRING str, INT N) cel: zwraca łańcuch argumentu powtórzony określoną liczbę razy.

Typ zwrotu: STRING

REPLACE (string initial, STRING target, STRING replacement) cel: Zwraca początkowy argument ze wszystkimi wystąpieniami łańcucha docelowego zastąpionego przez łańcuch zastępczy.

Typ powrotu: STRING

uwagi dotyczące użycia:

ponieważ ta funkcja nie używa żadnych wzorców wyrażeń regularnych, zwykle jest szybsza niż REGEXP_REPLACE() dla prostych podstawień łańcuchów.

jeśli jakikolwiek argument to NULL, zwracana wartość to NULL.

w dopasowaniu rozróżniana jest wielkość liter.

jeśli zastępczy łańcuch zawiera inną instancję docelowego łańcucha, rozszerzenie jest wykonywane tylko raz, zamiast zastosować ponownie do nowo zbudowanego łańcucha.

przykłady:

REVERSE(STRING a) cel: zwraca łańcuch argumentu ze znakami w kolejności odwróconej.

Typ zwracania: STRING

RIGHT(STRING A, INT num_chars) Patrz funkcjaSTRRIGHT. Rpad (STRING str, INT len, STRING pad) Purpose: zwraca łańcuch o określonej długości, oparty na pierwszym argumencie string. Jeśli podany ciąg znaków jest zbyt krótki, jest on wypełniany po prawej stronie powtarzającą się sekwencją znaków z łańcucha padów. Jeśli podany łańcuch jest zbyt długi, jest obcinany po prawej stronie.

Typ zwrotu: STRING

RTRIM(STRING a ) cel: zwraca łańcuch argumentu ze wszystkimi wystąpieniami znaków określonymi przez drugi argument usuniętymi z prawej strony. Usuwa spacje, jeśli drugi argument nie jest podany.

Return type: STRING

SPACE(int N) Purpose: zwraca skonkatenowany łańcuch o podanej liczbie spacji.repeat(' ',n)

Typ powrotu: STRING

SPLIT_PART(STRING source, STRING delimiter, bigint index) cel: zwraca żądanąindexczęść wejściowego łańcucha źródłowego podzielonego przez separator.

  • jeśli indeks jest liczbą dodatnią, zwraca część indeksu od lewej w łańcuchu źródłowym.
  • jeśli indeks jest liczbą ujemną, zwraca część indeksu z prawej strony w łańcuchu źródłowym.
  • jeśli indeks wynosi 0, zwraca błąd.

separator może składać się z wielu znaków, a nie tylko jednego znaku.

wszystkie dopasowania ogranicznika są wykonywane dokładnie, nie używając żadnych wzorców wyrażeń regularnych.

Typ powrotu: STRING

przykłady:

SPLIT_PART('x,y,z',',',2) zwraca 'y'.

SPLIT_PART('one***two***three','***',2) zwraca 'two'.

SPLIT_PART('[email protected]@[email protected]@ghi', '@@', 3) zwraca 'ghi'.

SPLIT_PART('[email protected]@[email protected]@ghi', '@@', -3) zwraca 'abc'.

STRLEFT(STRING a, int num_chars) Purpose: zwraca lewe znaki łańcucha. Skrót dla wywołaniasubstr()z 2 argumentami.

Return type: STRING

STRRIGHT(STRING A, int num_chars) Purpose: zwraca prawe znaki łańcucha. Skrót dla wywołaniasubstr()z 2 argumentami.

Typ zwracania: STRING

SUBSTR(STRING a, int start ), SUBSTRING(STRING A, int start ) cel: Zwraca część łańcucha rozpoczynającą się w określonym punkcie, opcjonalnie o określonej maksymalnej długości. Znaki w łańcuchu są indeksowane od 1.

Typ zwrotu: STRING

TRANSLATE(STRING input, STRING from, STRING to) cel: zwraca ciąginputz każdym znakiem w argumenciefromzastąpionym odpowiednim znakiem w argumencieto. Znaki są dopasowane w kolejności, w jakiej występują wfromito.

na przykład: translate ('hello world','world','earth')zwraca 'hetta earth'.

Typ powrotu: STRING

uwagi dotyczące użycia:

jeśli from zawiera więcej znaków niż to, znaki from, które są poza długością to, są usuwane w wyniku.

na przykład:

translate('abcdedg', 'bcd', '1') zwraca 'a1eg'.

translate('Unit Number#2', '# ', '_') zwraca 'UnitNumber_2'.

jeśli from jest NULL, funkcja zwraca NULL.

jeśli to zawiera więcej znaków niż from, Dodatkowe znaki w to są ignorowane.

jeśli fromzawiera zduplikowane znaki, zduplikowany znak jest zastępowany pierwszym pasującym znakiem w to.

na przykład: translate ('hello','ll','67')zwraca 'he66o'.

TRIM(STRING a) przeznaczenie: zwraca łańcuch wejściowy z usuniętymi spacjami początkowymi i końcowymi. Tak samo jak przekazywanie łańcucha przezLTRIM()iRTRIM().

uwagi dotyczące użycia: często używane podczas operacji czyszczenia danych podczas cyklu ETL, jeśli wartości wejściowe mogą nadal mieć otaczające przestrzenie. Aby uzyskać bardziej ogólną funkcję, która może usuwać inne znaki początkowe i końcowe poza spacjami, zobacz BTRIM().

Typ zwrotu: STRING

UPPER(STRING a), UCASE(STRING a) cel: zwraca łańcuch argumentu skonwertowany na wielkie litery.

Typ powrotu: STRING

uwagi dotyczące użycia:

w impali 2.5 i nowszych, możesz uprościć zapytania, które używają wielu wywołań UPPER() i LOWER() do porównywania wielkości liter, używając operatorów ILIKE lub IREGEXP.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.