Dane strumieniowe
Proces dołączania danych przenosi dane ze źródła i przechowuje je w tabelach Iceberg. Zmiany pochodzące ze strumieniowych źródeł danych są na bieżąco wprowadzane do tabel magazynu niemal w czasie rzeczywistym.
Dołącz dane
Dane są dołączane w ramach projektu potoku, a zestawy danych są przechowywane w lokalizacji S3 zdefiniowanej w ustawieniach projektu.
-
W projekcie kliknij Utwórz, a następnie Dołącz dane.
-
Dodaj Nazwę zadania i opcjonalny Opis w celu dołączenia danych.
Kliknij przycisk Dalej.
-
Wybierz połączenie źródłowe.
Możesz wybrać istniejące połączenie ze źródłem strumieniowym lub utworzyć nowe połączenie ze źródłem.
Więcej informacji zawiera temat Łączenie ze strumieniami danych
Kliknij Dalej i postępuj zgodnie z poniższymi instrukcjami dla Twojego źródła danych.
Wybieranie danych
Apache Kafka
Lista wyświetla dostępne tematy Kafka z klastra zdefiniowanego w połączeniu źródłowym.
Podczas wybierania tematów można wybrać określone zestawy danych. Można również użyć reguł wyboru, aby uwzględnić lub wykluczyć grupy zestawów danych:
-
Użyj % jako symbolu wieloznacznego, aby określić kryteria wyboru dla zestawów danych.
Jeśli tematy są wybierane przy użyciu reguł wyboru, możesz wybrać, czy załadować wszystkie zestawy danych do tej samej tabeli docelowej, czy utworzyć oddzielną tabelę docelową dla każdego tematu źródłowego:
-
Domyślnie nazwa docelowej tabeli Iceberg jest wyprowadzana z nazwy tematu, sformatowana zgodnie z konwencjami nazewnictwa, na przykład małymi literami, z usuniętymi spacjami, myślnikami zastąpionymi podkreśleniami. W Definiuj nazwę docelowego zestawu danych możesz edytować nazwę tabeli docelowej
-
Gdy reguły wyboru są używane do ładowania wielu tematów do jednej tabeli, należy podać nazwę docelową.
-
Gdy reguły wyboru są używane, a dane są ładowane do oddzielnych tabel (jeden zestaw danych na temat), domyślne nazwy docelowe to nazwy tematów. Na tym etapie nie można edytować nazw w kreatorze, ale można to zrobić później w zadaniu umieszczania.
-
Jeśli reguła jest skonfigurowana do wybierania tematów do pozyskiwania, wszelkie nowe tematy spełniające kryteria reguły są również umieszczane, jeśli opcja Nowy temat > Dodaj do elementu docelowego w sekcji ewolucji schematu w ustawieniach zadania umieszczania jest zaznaczona.
Wybierz jeden lub więcej zestawów danych albo użyj reguły wyboru, a następnie kliknij Dodaj. Kliknij przycisk Dalej.
Amazon Kinesis
Lista wyświetla dostępne strumienie Kinesis zdefiniowane w połączeniu źródłowym.
Zaznacz jeden lub więcej zestawów danych, a następnie kliknij Dodaj. Dodane zestawy danych możesz zobaczyć w sekcji Wybrane strumienie. Kliknij przycisk Dalej.
Amazon S3
Przeglądarka katalogów wyświetla listę wszystkich katalogów znajdujących się w zasobniku S3 Twojego połączenia źródłowego.
-
Wybierz katalogi do uwzględnienia podczas umieszczania danych:
-
Dla każdego katalogu, w Dodaj ścieżkę, wprowadź ścieżkę i wzorzec nazwy pliku:
-
Użyj * jako symbolu wieloznacznego, aby dopasować dowolny znak.
-
Aby wprowadzić wzorzec daty, użyj <yyyy> jako symbolu zastępczego dla czterocyfrowego roku, <MM> jako symbolu zastępczego dla dwucyfrowego miesiąca, <dd> jako symbolu zastępczego dla dwucyfrowego dnia i <HH> jako symbolu zastępczego dla dwucyfrowej godziny. Na przykład:
-
MojKatalog3/<yyyy>_<MM>_<dd>_<HH>_zamowienia.csv
-
MojKatalog3/<yyyy>/<MM>/<dd>/<HH>_zamowienia.csv
-
-
-
-
Kliknij Podgląd, aby otworzyć okno dialogowe Podgląd danych. Wyświetlana jest lista uwzględnionych i wykluczonych plików.
-
Kliknij Weryfikuj, aby sprawdzić, czy ścieżki i wzorce nazw plików są poprawne i funkcjonalne.
-
W Zdefiniuj nazwę docelowego zestawu danych podaj nazwę, aby zamapować temat na docelową tabelę Iceberg. Kliknij przycisk Dalej.
Wybieranie typu zawartości
Wybierz typ zawartości zdarzeń źródłowych.
-
Wybierz typ zdarzeń, które są pozyskiwane w Wybierz typ zdarzeń danych.
-
Więcej informacji zawiera temat Łączenie ze strumieniami danych.
Wybrany typ zawartości dotyczy wszystkich tematów, zestawów danych lub zdarzeń danych. Musisz utworzyć nowe zadanie dla każdego typu zawartości, który chcesz pozyskać.
-
Rozwiń Sprawdź, czy zdarzenia zostały poprawnie załadowane, aby potwierdzić, że dane mogą zostać przeanalizowane. Warto upewnić się, że dane są poprawne na tym etapie, w przeciwnym razie musisz ponownie utworzyć potok i załadować dane. Użyj Wybierz zestaw danych, aby zbadać konkretne zestawy danych i sprawdzić wszelkie ostrzeżenia, które mogą mieć wpływ na ładowanie danych. Kliknij ikonę oka obok dowolnych kolumn struktury, aby wyświetlić dane.
-
Kliknij przycisk Dalej.
Ustawianie właściwości pozyskiwania
Skonfiguruj ustawienia dla swojego potoku:
-
Odczytaj dane z
-
Rozpocznij od najwcześniejszego zdarzenia: przetwarzaj wszystkie dane historyczne.
-
Rozpocznij od teraz: przetwarzaj nowe dane napływające od momentu uruchomienia potoku.
-
-
Anulowanie zagnieżdżenia kolumn
-
Zachowaj zagnieżdżone kolumny: nie są stosowane żadne transformacje.
-
Rozwiń do oddzielnych kolumn: dane są dzielone na oddzielne kolumny.
-
-
Ustawienia ładowania dla nowych zestawów danych
-
Tylko dołączanie: zazwyczaj najlepsza opcja dla danych zdarzeń, ponieważ zazwyczaj mają krótki okres życia i nie są aktualizowane, na przykład, Zamówienia.
-
Zastosuj zmiany: jest to najlepiej dopasowane do danych, które są aktualizowane w czasie, na przykład Klienci. Aktualizuje istniejące rekordy i wstawia nowe rekordy na podstawie pól kluczowych. Pola klucza należy określić później podczas definiowania zadania.
-
-
Partycja tabel docelowych
Opcja partycjonowania tabeli docelowej dotyczy wszystkich tabel w potoku. Możesz to później zastąpić na poziomie tabeli, aby zdefiniować niestandardowe partycjonowanie.
InformacjaTa opcja jest dostępna tylko, gdy w Ustawieniach ładowania wybrano Tylko dołączanie.-
Bez partycjonowania: tabele są tworzone bez partycjonowania.
-
Partycjonuj według daty pobrania zdarzeń: tabele są partycjonowane według daty pobrania zdarzeń.
-
-
Sposób obsługi zmiany danych
InformacjaTa opcja jest dostępna tylko, gdy w Ustawieniach ładowania wybrano Zastosuj zmiany.-
Uwzględnij miękkie usunięcia: Wprowadź wyrażenie, aby zdefiniować, które rekordy mają zostać oznaczone do usunięcia.
-
Utwórz historyczny magazyn danych (Typ 2): Spowoduje to zachowanie poprzednich wersji zmienionych rekordów.
-
-
Kliknij przycisk Dalej.
Podsumowanie
Ekran podsumowania zapewnia wizualne przedstawienie Twojego potoku:
-
Opcjonalnie, dla zadania umieszczania strumieniowego i zadania transformacji strumieniowej, możesz kliknąć Edytuj nazwę i opis, aby podać nowe wartości.
-
Wybierz opcję, co ma się stać Po utworzeniu potoku.
-
Po skonfigurowaniu wszystkich ustawień kliknij Utwórz, aby utworzyć potok strumieniowy.
-
Gdy projekt zostanie wyświetlony, możesz przygotować i uruchomić każde zadanie, aby rozpocząć pozyskiwanie danych.
-
Przygotuj i uruchom zadanie umieszczania strumieniowego.
Więcej informacji zawiera temat Umieszczanie strumieniowych danych w Qlik Open Lakehouse.
-
Przygotuj i uruchom zadanie transformacji strumieniowej.
Więcej informacji zawiera temat Przechowywanie strumieniowych zestawów danych.
-
Mapowania typów danych
Początkowy schemat źródłowy jest oparty na próbce danych pobranej przed fazą PREPARE podczas tworzenia projektu potoku, a ewolucja schematu jest obsługiwana w czasie odczytu. Zadania dublowania i inne zadania w dalszych etapach, które nie obsługują STRUCT i ARRAY, używają typu JSON. Dane można analizować za pomocą SQL.
Następujące mapowania typów danych mają zastosowanie do wszystkich obsługiwanych źródeł danych, ale różnią się w zależności od typu pliku źródłowego, i należy zwrócić uwagę na poniższe:
-
Typy danych są wnioskowane na podstawie próbki wprowadzanych danych. Na przykład, jeśli pole zawiera tylko wartości całkowite w próbce, jest ono tworzone jako INT8 w zadaniach umieszczania i transformacji strumieniowej. Jeśli kolejne dane zawierają wartości ułamkowe podwójnej precyzji, pliki umieszczania zawierają te wartości; jednakże w zadaniu transformacji strumieniowej, jeśli ustawienie Zmień typ danych pola jest ustawione na Ignoruj, kolumna pozostaje INT8, a wartości ułamkowe są obcinane. Aby uniknąć niezamierzonego obcięcia, upewnij się, że dane przykładowe zawierają pełny zakres oczekiwanych wartości przed wdrożeniem, lub skonfiguruj Zmień typ danych pola na Zatrzymaj zadanie we wczesnych etapach i dostosuj typy danych w razie potrzeby.
-
Jeśli pole zostanie dodane do struktury w źródle, zawsze jest ono dodawane do miejsca docelowego. W przypadku transformacji strumieniowej zachowanie jest stosowane zgodnie z opcją wybraną w Ustawienia zadania transformacji strumieniowej > Ewolucja schematu > Dodaj pola do struktury (Zastosuj do obiektu docelowego, Ignoruj, Zatrzymaj zadanie).
-
Jeśli brakuje pola w konkretnym rekordzie lub tablica jest pusta, są one traktowane jako null.
-
Jeśli zestaw danych jest spłaszczony przez tablicę, a rekord przychodzi, w którym ta tablica jest pusta lub ma wartość null, system tworzy jeden wiersz, a spłaszczone pole ma wartość null. Nie jest wykluczona automatycznie. Jeśli chcesz wykluczyć te wiersze, ręcznie dodaj filtr, na przykład array_element IS NOT NULL.
-
Typy danych wyświetlane w interfejsie użytkownika odzwierciedlają szczegółowość wybranego zestawu danych. W przypadku tablic spłaszczonych wyświetlany jest typ danych pojedynczego elementu, a nie sama struktura tablicy.
-
Nowego atrybutu nie można dodać wewnątrz struktury w zagnieżdżonym polu JSON, tylko na poziomie głównym.
-
W zadaniach transformacji strumieniowej spłaszczanie jest obsługiwane tylko dla pojedynczego poziomu tablicy. Gdy spłaszczanie jest stosowane do tablicy wielopoziomowej, na przykład ARRAY<ARRAY<STRUCT>>, spłaszczana jest tylko zewnętrzna tablica, co skutkuje ARRAY<STRUCT> zamiast w pełni spłaszczonej struktury STRUCT. Ponadto bieżący interfejs użytkownika umożliwia konfigurowanie spłaszczania tylko na poziomie kolumny. W rezultacie wybranie tablicy wielopoziomowej niejawnie stosuje spłaszczanie tylko do pierwszego poziomu tablicy.
-
Gdy odwołujesz się do tablicy typów pierwotnych, używany jest typ danych elementu, jeśli ziarnistością jest tablica. W przeciwnym razie używany jest typ danych tablicy.
W tym przykładzie OrderDetails zawiera tablicę CustomerID typu danych INT. OrderDetails.CustomerID oznacza INT, jeśli ziarnistością jest OrderDetails.CustomerID, i ARRAY<INT>, jeśli ziarnistością jest OrderDetails.
JSON
W plikach JSON wartość liczbowa w źródle określa docelowy typ danych:
-
INT8 jest używany dla wartości całkowitych, które mieszczą się w obsługiwanym zakresie liczb całkowitych i nie zawierają części ułamkowej.
-
REAL8 (DOUBLE) jest używany, gdy wartość zawiera część ułamkową (liczbę zmiennoprzecinkową).
-
STRING jest używany, gdy wartość liczbowa przekracza maksymalny obsługiwany zakres liczb całkowitych.
Typy danych są mapowane w następujący sposób:
| Źródłowe typy danych | Qlik Talend Data Integration typu danych |
|---|---|
| STRING | STRING |
| LICZBA | INT8 |
| LICZBA | REAL8 |
| LICZBA | STRING |
| BOOLEAN | BOOLEAN |
| ARRAY | ARRAY |
| OBJECT | STRUKTURA |
CSV, TSV, REGEX i SPLIT
Domyślnie wszystkie typy danych źródłowych są importowane jako ciąg znaków. Użyj opcji Automatycznie wnioskuj typy, aby mapować typy źródłowe i docelowe w następujący sposób:
| Źródłowe typy danych | Qlik typu danych |
|---|---|
| NUMERIC | INT8/REAL8 |
| True/TRUE/true/False/FALSE/false | BOOLEAN |
| ZNACZNIK CZASU | Sygnatury czasowe w formacie yyyy-MM-dd HH:mm:ss lub yyyy-MM-ddTHH:mm:ssz są analizowane jako typ datetime. Jeśli strefa czasowa jest uwzględniona, wartość jest analizowana jako ciąg znaków. |
Parquet
Pliki Parquet obsługują fizyczne i logiczne typy danych. Fizyczne typy danych określają sposób przechowywania wartości na dysku, takie jak INT32, DOUBLE lub BYTE_ARRAY. Logiczne typy danych nadają znaczenie semantyczne fizycznej reprezentacji, na przykład identyfikując, czy wartość całkowita reprezentuje datę. Gdy typ logiczny jest dołączony do kolumny Parquet i jest obsługiwany w Qlik Open Lakehouse (jak wymieniono poniżej), zadanie umieszczania strumieniowego używa typu logicznego podczas definiowania schematu docelowego, a nie bazowego typu fizycznego. Zapewnia to poprawną interpretację danych, zachowuje zamierzoną semantykę, taką jak precyzja, skala i znaczenie czasowe, oraz skutkuje dokładniejszymi schematami, gdy dane są zapisywane w formatach strumieniowych.
Dane pochodzące z plików Parquet są mapowane w następujący sposób:
| Źródłowe typy danych | Typy logiczne | Qlik Talend Data Integration typu danych |
|---|---|---|
| BOOLEAN | BOOLEAN | |
| INT32 | INT8 | |
| INT64 | INT8 | |
| INT96 | DATETIME | |
| FLOAT | REAL8 | |
| DOUBLE | REAL8 | |
| TABLICA_BAJTÓW | STRING (zakodowany jako Base64) | |
| TABLICA_BAJTÓW_O_STAŁEJ_DŁUGOŚCI | CIĄG ZNAKÓW (Zakodowany jako Base64) | |
| TABLICA_BAJTÓW | STRING | STRING |
| TABLICA_BAJTÓW | ENUM | STRING |
| INT32 | DECIMAL | INT8 |
| INT64 | DECIMAL | INT8 |
| TABLICA_BAJTÓW_O_STAŁEJ_DŁUGOŚCI | DECIMAL | INT8/REAL8 (Zakodowany jako Base64) |
| TABLICA_BAJTÓW | DECIMAL | INT8/REAL8 (Zakodowany jako Base64) |
| INT32 | DATE | DATE |
| INT32 | CZAS (MILISEKUNDY,prawda) | INT8 |
| INT64 | CZAS (MIKROSEKUNDY,prawda) | TIME |
| INT64 | TIMESTAMP(MICROS,true) | DATETIME |
| INT64 | TIMESTAMP(MILLIS,true) | DATETIME |
| NESTED TYPES | STRUKTURA | |
| UTWÓRZ LISTĘ | ARRAY | |
| MAP | ARRAY<STRUCT>. Tablica struktur reprezentujących pary klucz-wartość. |
Avro
Poniższe mapowania mają zastosowanie do plików Avro z rejestrem schematów.
| Źródłowe typy danych | Typy logiczne | Qlik Talend Data Integration typu danych |
|---|---|---|
| BOOLEAN | BOOLEAN | |
| INT | INT8 | |
| LONG | INT8 | |
| FLOAT | REAL8 | |
| DOUBLE | REAL8 | |
| BYTES | STRING | |
| STRING | STRING | |
| RECORD | STRUKTURA | |
| ENUM | STRING | |
| ARRAY | ARRAY | |
| MAP | ARRAY<STRUCT> | |
| UNION | ||
| STAŁE | STRING | |
| BYTES | DECIMAL | DECIMAL |
| STAŁE | DECIMAL | DECIMAL |
| INT | DATE | DATE |
| INT | CZAS-MILISEKUNDY | INT8 |
| INT | TIME-MICROS | TIME |
| LONG | TIMESTAMP-MILLIS | DATETIME |
| LONG | TIMESTAMP-MICROS | DATETIME |
ORC
Poniższe mapowania mają zastosowanie do plików ORC.
| Źródłowe typy danych | Qlik Talend Data Integration typu danych |
|---|---|
| BOOLEAN | BOOLEAN |
| BYTE | INT8 |
| Krótki | INT8 |
| INT | INT8 |
| LONG | INT8 |
| DATE | DATE |
| FLOAT | REAL8 |
| DOUBLE | REAL8 |
| ZNACZNIK CZASU | DATETIME |
| BINARY | STRING |
| DECIMAL | REAL8 |
| STRING | STRING |
| VARCHAR | STRING |
| CHAR | STRING |
| UTWÓRZ LISTĘ | ARRAY |
| MAP | ARRAY<STRUCT>. Tablica struktur reprezentujących pary klucz-wartość. |
| STRUKTURA | STRUKTURA |
| Union |
Ograniczenia i uwagi
-
Jeśli struktura lub tablica zostanie zmodyfikowana przez automatyczną ewolucję schematu w umieszczaniu, widoki podrzędne, które nie zostały utworzone przez zadanie strumieniowe Qlik Talend Cloud, mogą wymagać aktualizacji, aby nie były nieaktualne.
-
Jeśli zadanie ma błędy parsowania, nie przejdzie w stan błędu i nie zostanie oznaczone jako wymagające uwagi. Ponieważ błędy parsowania są stale rosnącą metryką, nie ma kryterium wyjścia ze stanu błędu.
-
Usunięcie możliwości klastra jest dozwolone tylko wtedy, gdy żadne zadania nie korzystają z tej możliwości.
-
Aktualizacje i usunięcia rekordu z tym samym kluczem podstawowym nie mogą przekraczać granicy partycji, to znaczy muszą być zamapowane na tę samą partycję.
-
Jeśli źródło zawiera dużą liczbę kolumn, tylko 500 najczęstszych kolumn jest wyświetlanych w zadaniach i w katalogu. Wszystkie kolumny są zapisywane do plików Avro w obszarze umieszczania S3, ale tylko 500 najczęstszych kolumn jest przechowywanych w tabelach Iceberg. W ewolucji schematu, jeśli zostanie dodana nowa kolumna, nie zostanie ona dodana do kolumn głównych, nawet jeśli jest często używana.