Przeskocz do zawartości głównej Przejdź do treści uzupełniającej

Łączenie ze strumieniami danych

Następujące usługi strumieniowe są obsługiwane w projektach Qlik Open Lakehouse. Dane zdarzeń są stale pozyskiwane, aby zapewnić dostępność niemal w czasie rzeczywistym dla dalszej integracji danych, analiz i sztucznej inteligencji, umożliwiając potoki o niskim opóźnieniu, które odzwierciedlają najbardziej aktualną aktywność operacyjną.

Usługi strumieniowe, takie jak Apache Kafka i Amazon Kinesis, zapewniają trwałe potoki o wysokiej przepustowości do przechwytywania zdarzeń operacyjnych w miarę ich występowania. W przeciwieństwie do źródeł opartych na plikach, które opierają się na pozyskiwaniu wsadowym, źródła strumieniowe dostarczają dane w sposób ciągły w miarę generowania zdarzeń, umożliwiając przetwarzanie niemal w czasie rzeczywistym bez czekania na wygenerowanie lub zaplanowanie plików. Producenci publikują ustrukturyzowane lub częściowo ustrukturyzowane komunikaty, które zachowują swój schemat i obsługują partycjonowanie. Wszystkie aktualizacje i usunięcia dla tego samego rekordu muszą używać tego samego klucza partycji. Kafka i Kinesis gwarantują kolejność tylko w ramach pojedynczej partycji lub fragmentu, a nie w całym temacie lub strumieniu, więc użycie spójnego klucza partycji zapewnia, że zmiany dla danego rekordu są przetwarzane w prawidłowej kolejności. Qlik obsługuje również Amazon S3 jako źródło strumieniowe do ciągłego pozyskiwania danych zdarzeń.

Pozyskiwanie strumieniowe a pozyskiwanie wsadowe

Różnica między strumieniowymi i wsadowymi źródłami danych jest następująca:

  • W przypadku obu źródeł zdarzenia są efektywnie pozyskiwane co minutę, co wspiera przetwarzanie z niskim opóźnieniem i analizy niemal w czasie rzeczywistym.

  • W przypadku źródeł niestrumieniowych najpierw następuje pełne ładowanie istniejących danych, a następnie pozyskiwane są zmiany. Możesz również ponownie załadować dane pełnego ładowania ze źródła.

  • W przypadku źródeł strumieniowych nie ma wyraźnego rozróżnienia między początkowym ładowaniem a późniejszymi zdarzeniami. Qlik może zarządzać przechowywaniem i obsługuje również partycje.

InformacjaZadania strumieniowe są rozliczane na podstawie zużycia zasobów obliczeniowych (rdzenie wirtualne x czas działania), a nie wolumenu danych.

W projekcie Qlik Open Lakehouse źródła strumieniowe mogą być używane tylko z zadaniem umieszczania strumieniowego i zadaniem transformacji strumieniowej:

  • Dane strumieniowe są pozyskiwane za pomocą zadania umieszczania strumieniowego i zamiast przetwarzać dyskretne pliki, zadanie umieszczania strumieniowego odczytuje zdarzenia w miarę ich napływania, umieszcza dane w Amazon S3 i utrwala zdarzenia jako pliki Avro. Takie podejście zachowuje ewolucję schematu, obsługuje złożone typy danych, takie jak struktury, i zapewnia wydajne przechowywanie z zoptymalizowaną wydajnością zapytań, jednocześnie utrzymując ciągły model pozyskiwania.

  • Podczas dołączania danych ze źródła strumieniowego, zadanie transformacji strumieniowej jest automatycznie dodawane dla każdego zestawu danych, który będzie przechowywany w formacie Iceberg. Opcjonalnie, zadanie transformacji strumieniowej może być używane do standaryzacji struktur, wzbogacania ładunków zdarzeń lub dopasowywania danych do modeli konsumpcji w dalszych etapach.

  • Zadanie dublowania danych umożliwia dublowanie zestawów danych ze źródeł strumieniowych do hurtowni danych w chmurze, pozwalając systemom w dalszych etapach konsumować zdarzenia strumieniowe bez duplikowania danych.Więcej informacji można znaleźć w temacie Mirroring danych do hurtowni danych w chmurze.

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.

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

Obowiązują następujące ograniczenia dla wszystkich źródeł danych:

  • Jeśli pliki są różnych typów, co może się zdarzyć, gdy pochodzą z wielu źródeł lub wersji, zadanie transformacji utworzone przy użyciu pojedynczego pliku przykładowego (na przykład podczas wdrażania) nie uwzględnia automatycznie tych różnic.

  • Jeśli zmienisz typy danych w zadaniu umieszczania, na przykład dlatego, że musisz zahaszować dane, upewnij się, że typy danych transformacji odpowiadają nowym typom danych.

Obsługiwane źródła

Czy ta strona była pomocna?

Jeżeli natkniesz się na problemy z tą stroną lub jej zawartością — literówkę, brakujący krok lub błąd techniczny — daj nam znać!