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 | WSZYSTKOPodczas 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:
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:
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 (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ść)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ść)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.