Zaawansowane użycie Data Mapper
Przegląd
Dział zatytułowany „Przegląd”Zanim przejdziesz do zaawansowanych możliwości Data Mapper, warto krótko przypomnieć podstawową funkcjonalność.
Konfiguracja Data Mapper
Dział zatytułowany „Konfiguracja Data Mapper”Data Mapper służy do mapowania kolumn danych źródłowych na docelową tabelę danych.
Sprawdzanie i wypełnianie mapera
Dział zatytułowany „Sprawdzanie i wypełnianie mapera”Przycisk menu Sprawdź źródło udostępnia dodatkowe sposoby mapowania kolumn ze źródła na cel:
- Wypełnij obie tabele mapowania: przenosi wszystkie wartości z tabeli danych źródłowych do docelowej tabeli danych. Jest to zachowanie domyślne.
- Wypełnij tylko tabelę mapowania źródła: mapuje wyłącznie wszystkie wartości w tabeli danych źródłowych. Jest to przydatne przy modyfikowaniu istniejącego przepływu pracy, gdy zmieniła się struktura kolumn źródła.
- Wypełnij tylko tabelę mapowania celu: przenosi wszystkie wartości wyłącznie do docelowej tabeli danych.
Jeśli opcje dla kolumn źródłowych i docelowych nie wystarczają, do docelowej tabeli danych można dodać kolejne kolumny na kilka sposobów:
- Propaguj wszystko wstawia wszystkie kolumny źródłowe do docelowej tabeli danych, niezależnie od tego, czy już w niej istniały.
- Propaguj zaznaczone wstawia tylko zaznaczone kolumny źródłowe.
- Kliknij prawym przyciskiem myszy po stronie celu i wybierz Wstaw wiersz, aby wstawić wiersz bezpośrednio nad aktualnie zaznaczonym wierszem.
- Kliknij prawym przyciskiem myszy po stronie celu i wybierz Dołącz wiersz, aby wstawić wiersz na końcu (po prawej stronie) docelowej tabeli danych.
Usuwanie kolumn
Dział zatytułowany „Usuwanie kolumn”Aby usunąć kolumny z docelowej tabeli danych, zaznacz wybrane kolumny, kliknij prawym przyciskiem myszy i wybierz Usuń.
Zmiana kolejności kolumn
Dział zatytułowany „Zmiana kolejności kolumn”Aby zmienić układ kolumn w docelowej tabeli danych, zaznacz wybrane kolumny. Możesz użyć jednej z metod:
- Strzałki przenoszenia zbiorczego: wybierz odpowiednią opcję przenoszenia ze strzałek w prawym górnym rogu
- Menu kontekstowe: kliknij prawym przyciskiem myszy i wybierz Przenieś na początek, Przenieś w górę, Przenieś w dół lub Przenieś na koniec.
Ograniczanie wyniku do unikalnych rekordów
Dział zatytułowany „Ograniczanie wyniku do unikalnych rekordów”Aby zwrócić tylko unikalne wartości, wybierz opcję menu Unikalne. Wyświetli to zestaw pól wyboru dla każdej kolumny źródła. Zaznacz pole obok odpowiedniej kolumny, aby zwrócić tylko unikalne wyniki.
Agregacja i grupowanie
Dział zatytułowany „Agregacja i grupowanie”Aby zagregować wyniki, wybierz opcję menu Podsumuj. Wyświetli to zestaw pól wyboru listy dla każdej kolumny docelowej tabeli danych. Wybierz odpowiednią metodę podsumowania dla każdej kolumny.
Zaawansowane użycie
Dział zatytułowany „Zaawansowane użycie”Opcje agregacji
Dział zatytułowany „Opcje agregacji”Aby zagregować wyniki, wybierz opcję menu Podsumuj. Wyświetli to zestaw pól wyboru listy dla każdej kolumny docelowej tabeli danych. Dostępne są następujące opcje podsumowania:
| Funkcja | Opis |
|---|---|
| Grupuj według | Grupuje wyniki według wartości |
| Liczba | Liczba niepustych obserwacji w grupie |
| Liczba (z wartościami pustymi) | Liczba obserwacji w grupie |
| Suma | Suma wartości w grupie |
| Średnia | Średnia wartości w grupie |
| Mediana | Mediana wartości w grupie |
| Dominanta | Dominanta wartości w grupie |
| Minimum | Minimum wartości w grupie |
| Maksimum | Maksimum wartości w grupie |
| Pierwsza | Pierwsza wartość w grupie według uporządkowania |
| Ostatnia | Ostatnia wartość w grupie według uporządkowania |
| Odchylenie standardowe | Nieobciążone odchylenie standardowe w grupie |
| Odchylenie standardowe z próby | Odchylenie standardowe z próby w grupie |
| Odchylenie standardowe z populacji | Odchylenie standardowe z populacji w grupie |
| Wariancja | Nieobciążona wariancja w grupie |
| Wariancja z próby | Wariancja z próby w grupie |
| Wariancja z populacji | Wariancja z populacji w grupie |
| Zaawansowane (bez grupowania) | Specjalny wybór agregacji przy użyciu funkcji okna |
Wybierz odpowiednią metodę podsumowania dla kolumny.
Klucze agregacji dla REST i asystentów AI
Dział zatytułowany „Klucze agregacji dla REST i asystentów AI”Gdy konfigurujesz krok przez REST API lub asystenta AI, każda kolumna docelowa przechowuje swoje podsumowanie w agg, a aggregation_type kroku wybiera te same opcje. Każdy krok z Data Mapper akceptuje następujące wartości:
| Klucz | Podsumowanie |
|---|---|
group |
Grupuj według |
dont_group |
Zaawansowane (bez grupowania): kolumna nie jest ani grupowana, ani agregowana — dla wyrażeń, które same agregują lub używają funkcji okna |
count |
Liczba niepustych obserwacji w grupie |
count_null |
Liczba z wartościami pustymi |
count_distinct |
Liczba unikalnych wartości w grupie |
sum |
Suma |
avg |
Średnia |
median |
Mediana |
min |
Minimum |
max |
Maksimum |
stddev |
Odchylenie standardowe |
stddev_samp |
Odchylenie standardowe z próby |
stddev_pop |
Odchylenie standardowe z populacji |
variance |
Wariancja |
var_samp |
Wariancja z próby |
Sortowanie wierszy
Dział zatytułowany „Sortowanie wierszy”Każda kolumna docelowa może mieć sort: asc, desc lub none, albo obiekt {ascending, order}. ascending przyjmuje wartość true lub false. order to liczba całkowita ustalająca priorytet klucza: kolumny z order są sortowane jako pierwsze, od najniższej liczby, a pozostałe posortowane kolumny następują w kolejności ich położenia.
Gdy używasz funkcji okna, wybierz Zaawansowane (bez grupowania) jako metodę agregacji. Ten specjalny wybór jest wymagany, ponieważ funkcja okna sama w sobie zawiera już agregację.
Podanie wartości w kolumnie Stała zastępuje wartość kolumny źródłowej, jeśli została określona, i wypełnia kolumnę podaną stałą.
Źródło, stała i wyrażenie razem
Dział zatytułowany „Źródło, stała i wyrażenie razem”Kolumna docelowa pobiera wartość z tego z wymienionych pól, które wypełnisz, w tej kolejności: najpierw wygrywa Stała, następnie Wyrażenie, a na końcu kolumna Źródło.
Kolumna, która sama oblicza swoją wartość, nie potrzebuje więc pola Źródło. Pozostaw je puste przy stałej lub wyrażeniu — stała lub wyrażenie już określa wartość, a Źródło podane obok jest ignorowane. Wypełnij Źródło, gdy przepuszczasz kolumnę wprost z danych przychodzących, zmieniasz jej nazwę lub rzutujesz ją po drodze.
Wyrażenie odczytuje kolumny przychodzące po nazwie, za pomocą get_column(table, 'Column Name'), a nie przez komórkę Źródło.
Czyszczenie danych
Dział zatytułowany „Czyszczenie danych”Data Mapper udostępnia wygodną funkcję czyszczenia obsługiwaną myszą, służącą do stosowania konwersji na danych w kolumnie.
Operacje czyszczenia obejmują następujące kategorie:
- Przycinanie tekstu
- Formatowanie tekstu
- Przekształcenia tekstu
- Konwersja do wartości NULL i z wartości NULL
- Formatowanie liczb
- Analiza dat
Wynik wyborów w czyszczeniu jest przekształcany w jedno zbiorcze wyrażenie, które można zobaczyć w informacjach o wyrażeniu.
Wyrażenia
Dział zatytułowany „Wyrażenia”Wyrażenia w Data Mapper to jedna z najpotężniejszych i najbardziej elastycznych koncepcji w PlaidCloud. Zapewniają niemal nieograniczoną elastyczność, a jednocześnie działają wyjątkowo wydajnie, nawet na bardzo dużych danych.
Wyrażenia pisze się w składni Python SQLAlchemy wraz z kilkoma dodatkowymi funkcjami pomocniczymi dostępnymi w PlaidCloud. Dzięki temu PlaidCloud udostępnia bezpośrednio pełen zestaw możliwości bazowej hurtowni danych (np. Greenplum, SAP HANA, Redshift itd.). Ponadto publicznie dostępnych jest wiele źródeł z szybkimi ściągawkami dotyczącymi operacji SQLAlchemy. Dzięki standardowej składni SQLAlchemy PlaidCloud unika częstej pułapki tworzenia kolejnej składni specyficznej dla domeny.
Edytor wyrażeń otwiera się po dwukrotnym kliknięciu komórki wyrażenia w kolumnie. Po otwarciu po lewej stronie wyświetlana jest lista kolumn, a po prawej rozbudowana biblioteka funkcji.
Choć wyrażenie można wpisać bezpośrednio w edytorze, zwykle łatwiej zacząć od wyboru funkcji i kolumn myszą. Biblioteka funkcji obejmuje następujące grupy:
- Warunki
- Warunki dla określonej kolumny
- Konwersje
- Daty
- Matematyka
- Tekst
- Podsumowania
- Operacje funkcji okna
- Tablice
- JSON
- PostGIS (dane geoprzestrzenne)
- Trygonometria
Po ukończeniu wyrażenia zapisz je, aby zostało zastosowane do kolumny.
Przykłady i funkcje wyrażeń znajdziesz w obszarze Wyrażenia.
Rzutowanie na Float
Dział zatytułowany „Rzutowanie na Float”cast(x, Float) zwraca 64-bitową liczbę o podwójnej precyzji w każdej hurtowni danych, więc kwota taka jak 1225541207.71 zachowuje wszystkie cyfry. W StarRocks rzutowanie na Float jest teraz stosowane, choć wcześniej było pomijane, a w Databend jest to podwójna, a nie pojedyncza precyzja. Kolumna Float tworzona przez PlaidCloud z danych zmiennoprzecinkowych również ma podwójną precyzję. Tabela, która ma już kolumnę o pojedynczej precyzji, otrzymuje podwójną precyzję przy następnej przebudowie przez krok z opcją Overwrite.
W StarRocks:
- Rzutowanie na dużą liczbę całkowitą obsługuje wartości powyżej około 2,1 miliarda.
- Rzutowanie na
Numericbez podanej precyzji zachowuje miejsca dziesiętne, do 10 miejsc, zamiast zaokrąglać do liczby całkowitej. - Rzutowanie na JSON jest stosowane.
W każdej hurtowni danych wartość, której nie można przekonwertować, na przykład tekst nienumeryczny rzutowany na liczbę, staje się wartością pustą (null) zamiast zatrzymywać krok.
Odczyt innej tabeli z wyrażenia
Dział zatytułowany „Odczyt innej tabeli z wyrażenia”sqlalchemy.literal_column przekazuje fragment SQL do hurtowni danych bez zmian i przyjmuje pojedynczą wartość — kolumnę, obliczenie, CASE, wywołanie funkcji, rzutowanie, funkcję okna. literal_column zawierający podzapytanie ((SELECT ... FROM ...)) jest odrzucany, ponieważ podzapytanie sięga do tabeli, której krok nigdy nie zadeklarował.
Reguły z tej sekcji obowiązują wszędzie tam, gdzie pisane jest wyrażenie — tutaj w maperze, w filtrze kroku oraz w zapytaniu składanym gdzie indziej i wysyłanym do platformy. Są sprawdzane przy zapisywaniu kroku i ponownie, gdy wyrażenie jest zamieniane na SQL.
Zamiast tego zbuduj podzapytanie za pomocą sqlalchemy.select(...) — z .scalar_subquery(), gdy potrzebujesz pojedynczej wartości w kolumnie, lub z .subquery(), gdy z niego wybierasz:
# Refusedsqlalchemy.literal_column('(SELECT rate FROM fx WHERE fx.cc = t.cc)')
# Supported — a single value in a columnsqlalchemy.select(fx.c.rate).where(fx.c.cc == t.c.cc).scalar_subquery()
# Supported — a table to select fromsqlalchemy.select(fx.c.rate).subquery()Ujmij OR najwyższego poziomu w nawiasy
Dział zatytułowany „Ujmij OR najwyższego poziomu w nawiasy”literal_column, którego najbardziej zewnętrznym operatorem jest OR, również jest odrzucany. PlaidCloud przekazuje tekst bez zmian, więc warunek dodany po nim byłby powiązany tylko z połową — a OR b, a po nim AND region = 'East', jest odczytywane jako a OR (b AND region = 'East'), i wracają wiersze, które chciano wykluczyć.
Dodaj nawiasy, a będzie działać jak dotychczas:
# Refusedsqlalchemy.literal_column("status = 'open' OR status = 'pending'")
# Supportedsqlalchemy.literal_column("(status = 'open' OR status = 'pending')")Alternatywa w dowolnym miejscu wewnątrz wyrażenia — w CASE lub już ujęta w nawiasy — nie ma wpływu.
XOR jest odrzucany wszędzie, gdzie występuje, z nawiasami lub bez: hurtownie danych różnią się co do tego, jak silnie wiąże, więc nie istnieje odczyt bezpieczny wszędzie. Zapisz go zamiast tego jawnie, jako (a AND NOT b) OR (NOT a AND b).
literal_column zawierający komentarz jest odrzucany z tego samego powodu: komentarz biegnie do końca instrukcji, więc kasuje wszystko, co PlaidCloud dodaje po Twoim wyrażeniu, a nie tylko to, co napisano.
-- jest odrzucane tam, gdzie obejmowałoby resztę instrukcji. # jest odrzucane w dowolnym miejscu tekstu, bez wyjątków — także wewnątrz ciągu w cudzysłowie oraz w operatorach ścieżki JSON #> i #>> z Postgresa:
# Refusedsqlalchemy.literal_column("attrs #> '{a,b}'")sqlalchemy.literal_column("code || '#'")# rozpoczyna komentarz w hurtowniach zgodnych z MySQL, takich jak StarRocks, a PlaidCloud nie wie w chwili pisania wyrażenia, która hurtownia je uruchomi — nie ma więc miejsca w tekście, w którym byłoby to niezawodnie bezpieczne, a #, który jeden silnik uzna za ujęty w cudzysłów, dla innego jest początkiem komentarza. Jeśli potrzebujesz tego znaku jako danych, przekaż go jako wartość:
# Supportedsqlalchemy.func.concat(table.code, sqlalchemy.literal('#'))Te same dwa zapisy są odrzucane w .op('...').
Wszystko inne, do czego zwykle służy literal_column, pozostaje bez zmian — literal_column('current_date'), literal_column("CASE WHEN amount > 0 THEN 'p' ELSE 'n' END") i func.count() działają jak dotychczas. Nazwy kolumn zawierające spacje, kropki lub cudzysłowy również pozostają bez zmian; hurtownia danych ujmie je w cudzysłowy za Ciebie.