Redshift Any_value Funkcja

Redshift Any_value Funkcja
Przesunięcie ku czerwieni DOWOLNA WARTOŚĆ jest funkcją, która zwraca dowolną wartość z wartości wyrażenia wejściowego w sposób nieokreślony. Wymaga wielu wartości jako wejścia, losowo wybiera dowolną z tych wartości i zwraca je w odpowiedzi. Jeśli przekazujesz wartości zerowe do funkcji Any_Value, zwraca wartość zerową w odpowiedzi. Na tym blogu omówimy różne przypadki użycia za pomocą funkcji Any_Value, aby uzyskać losowe wyjście z tabel.

Składnia funkcji dowolnej wartości

Poniżej znajduje się składnia do użycia funkcji Any_Value w Amazon Redshift:

Any_value ([odrębne | all] wyrażenie)

Poniżej znajduje się opis parametrów i opcji przekazywanych do funkcji Any_Value Redshift:

Wyraźny | WSZYSTKO

Podczas wykonywania funkcji Any_Value podaj odrębne lub wszystko, aby uzyskać losowe wyjście z wyrażeń wejściowych. Kiedy określamy ODRĘBNY Słowo kluczowe, funkcja Any_Value usunie duplikat wartości z wyrażenia wejściowego, a następnie zwróci wartość losową z tych unikalnych wyrażeń.

Z drugiej strony, jeśli WSZYSTKO Słowo kluczowe jest używane, funkcja Any_Value zwróci losowe wyrażenie ze wszystkich wyrażeń wejściowych.

Wyrażenie

Jest to kolumna docelowa lub wyrażenie, na których funkcja dowolnej wartości_prawy działa i otrzymuje wartość losowo. Może zawierać dane z następujących typów danych:

  1. PODWÓJNA PRECYZJA
  2. PRAWDZIWY
  3. Timetz
  4. GEOGRAFIA
  5. DZIESIĘTNY
  6. Hllsketch
  7. GEOMETRIA
  8. LICZBA CAŁKOWITA
  9. Smallint
  10. ZNAK CZASU
  11. Varchar
  12. Timestamptz
  13. Bigint
  14. SUPER
  15. Varbyte
  16. Boolean
  17. CZAS
  18. ZWĘGLAĆ
  19. DATA

Przykłady funkcji dowolnej wartości

Niniejsza sekcja artykułu zawiera różne przykłady funkcji Redshift Any_Value, aby dokładnie ją rozwinąć.

Konfigurowanie środowiska

Przed przejściem z różnymi przykładami musimy utworzyć tabelę z różnymi kolumnami. Poniższe zapytanie może utworzyć tabelę w klastrze Redshift z następującymi atrybutami:

  • nazwa użytkownika
  • dowód pracownika
  • hasło
  • miasto
  • Data urodzenia
Utwórz tabelę user_data (
Klucz podstawowy pracowników_in,
Nazwa użytkownika Varchar (200),
Hasło Varchar (200),
City Varchar (200),
DATE_OF_BIRTH DATA
)

Teraz wstawymy niektóre przykładowe dane do tabeli User_Data w klastrze Redshift Cluster. Użyj zapytania, aby dodać dane za pomocą następującego zapytania:

Wstaw do user_data (
dowód pracownika,
nazwa użytkownika,
hasło,
miasto,
Data urodzenia
) Wartości (
1,
„Użytkownik-1”,
„Pass-1”,
„Miasto-1”,
„1997-02-27”
)

Uruchom to zapytanie wiele razy, zmieniając wartości, aby zapisać dane wielu użytkowników. Teraz zastosujemy funkcję Any_Value do tej tabeli.

Po włożeniu danych wielu użytkowników użyj następującego zapytania, aby wymienić wszystkie dane:

Wybierz * z user_data;

Stosowanie dowolnej wartości na typ danych liczb całkowitych

W tej sekcji zastosujemy dowolną wartość do typu danych liczb całkowitych lub dowód pracownika Kolumna dane użytkownika Tabela, którą utworzyliśmy w poprzedniej sekcji.

W tym celu można wykorzystać następujące zapytanie, aby uzyskać identyfikator pracownika każdego pracownika:

Wybierz dowolne_value (employe_id) jako pracownika_dem z user_data;

Poprzednie zapytanie wybierze dowolną wartość z dowód pracownika kolumna i powróci jako wyjście tego zapytania. Poprzednia liczba zwróciła pracownika losowego użytkownika z dane użytkownika tabela.

Stosowanie dowolnej wartości na typ danych String

Tak jak zastosowaliśmy funkcję Any_Value w typu danych liczb całkowitych, można ją również zastosować do typu danych ciągów. Po zastosowaniu do pola typu danych ciągów, funkcja Any_Value losowo wybiera dowolny z danych i zwraca je w odpowiedzi.

Aby uzyskać jakąkolwiek losową wartość z nazwa użytkownika (String) Pole wykonaj następujące zapytanie w klastrze Redshift:

Wybierz dowolne_value (nazwa użytkownika) jako nazwa użytkownika z user_data;

Zwróci losowe nazwa użytkownika wpis z dane użytkownika tabela.

Stosowanie dowolnej wartości na datę typu danych

Możemy również uzyskać wartość losową z pola, które zawiera wiele wpisów typu danych daty. Gdy funkcja Any_Value jest zastosowana do wielu wartości typu danych daty, losowo wybiera wpis i zwraca ją w odpowiedzi.

Dostać Data urodzenia losowego użytkownika z dane użytkownika Tabela, wykonaj następujące zapytanie w klastrze Redshift:

Wybierz dowolne_value (date_of_birth) jako date_of_birth z user_data;

To zapytanie będzie losowe Data urodzenia z tabeli i zwróć go w odpowiedzi.

Funkcja dowolnej wartości za pomocą grupy

Możemy użyć funkcji Any_Value do uproszczenia i optymalizacji GRUPUJ WEDŁUG Oświadczenia postępują. Powszechnym problemem, który występuje z dużą ilością zapytań, jest konsekwencja zapytań z klauzulą ​​grupy, która może składać się z wyrażeń wykorzystywanych w klauzuli grupy lub konsekwencji funkcji łącznej.

Wybierz klienta.Id, klient.Nazwa, suma (zamówienia.wartość)
Od klienta
Dołącz do zamówień na klienta.id = zamówienia.Identyfikator klienta
Grupa według klienta.Id, klient.nazwa;

W poprzednim atrybucie zapytania nazwa klienta musi znajdować się w grupie według klauzuli o zaangażowaniu w konsekwencji. Jest to niechciane i sprawia, że ​​obliczenia jest skomplikowane i powolne.

Aby ulepszyć zapytanie i zwiększyć realizację, możesz zaimplementować poprzednie zapytanie za pomocą funkcji Any_Value.

Wybierz klienta.id, Any_Value (klient.nazwa), suma (zamówienia.wartość)
Od klienta
Dołącz do zamówień na klienta.id = zamówienia.Identyfikator klienta
Grupa według klienta.ID;

Wniosek

Any_value to funkcja, która przyjmuje wiele wartości jako wejście i zwraca losową wartość z tych wartości wejściowych. Wybiera wyjście z wyrażeń wejściowych w sposób niedeterministyczny. Jeśli wyrażenie wejściowe do funkcji Any_Value nie powoduje żadnego wiersza, wyjście funkcji będzie wartością zerową. Ten blog opisuje różne przypadki użycia, aby wdrożyć funkcję Any_Value, aby uzyskać losowe wyjście.