串流資料
上線程序會從來源傳輸資料,並將其儲存在 Iceberg 表格中。串流資料來源中的變更會近乎即時地持續套用於儲存表格。
上線資料
資料會在管道專案中上線,而資料集則儲存在專案設定中定義的 S3 位置。
-
在專案中,按一下建立,然後按一下上線資料。
-
為上線新增任務名稱和選用描述。
按一下下一步。
-
選取來源連線。
您可以選取現有串流來源連線,也可以建立與來源的新連線。
如需詳細資訊,請參閱 連接資料串流
按一下 下一步,並追蹤以下適用於您資料來源的指示。
選取資料
Apache Kafka
此清單會顯示來源連線中定義之叢集的可用的 Kafka 主題。
選取主題時,您可以選取特定的資料集。您也可以使用選取規則以納入或排除資料集群組:
-
使用 % 作為萬用字元,為資料集定義選取標準。
如果使用選取規則選取主題,您可以選擇將所有資料集載入相同的目標表格,或為每個來源主題建立個別的目標表格:
-
依預設,目標 Iceberg 表格名稱衍生自主題名稱,並依據命名慣例進行格式化,例如小寫、移除空格、將破折號取代為底線。在 定義目標資料集名稱 中,您可以編輯目標表格的名稱
-
當使用選取規則將多個主題載入單一資料表時,您必須提供目標名稱。
-
當使用選取規則且資料載入個別資料表 (每個主題一個資料集) 時,預設目標名稱為主題名稱。在此階段,您無法在精靈中編輯名稱,但稍後可以在登陸任務中完成此操作。
-
如果規則設定為選取要擷取的主題,則如果登陸任務設定中結構描述演進下的新主題 > 新增至目標選項已勾選,任何符合規則條件的新主題也會登陸。
選取一或多個資料集,或使用選取規則,然後按一下 新增。按一下下一步。
Amazon Kinesis
此清單會顯示來源連線中定義的可用 Kinesis 串流。
選取一或多個資料集,然後按一下新增。您可在選取的串流之下看見新增的資料集。按一下下一步。
Amazon S3
目錄瀏覽器會顯示位於來源連線的 S3 值區中的所有目錄清單。
-
選取登陸資料時要納入的目錄:
-
針對每個目錄,在新增路徑中,輸入路徑和檔案名稱模式:
-
使用 * 作為萬用字元以比對任何字元。
-
若要輸入日期模式,請使用 <yyyy> 作為四位數年份的預留位置、<MM> 作為兩位數月份的預留位置、<dd> 作為兩位數日期的預留位置,以及 <HH> 作為兩位數小時的預留位置。例如:
-
MyDir3/<yyyy>_<MM>_<dd>_<HH>_orders.csv
-
MyDir3/<yyyy>/<MM>/<dd>/<HH>_orders.csv
-
-
-
-
按一下 預覽 以開啟 預覽資料 對話方塊。已包含和已排除檔案的清單會顯示。
-
按一下 驗證,檢查路徑和檔案名稱模式是否正確且正常運作。
-
在 定義目標資料集名稱 中,提供名稱以將主題對應至目標 Iceberg 表格。按一下下一步。
選取內容類型
選擇來源事件內容類型。
-
在 選擇資料事件類型 中選取您正在擷取的事件類型。
-
如需詳細資訊,請參閱連接資料串流。
選取的內容類型適用於所有主題、資料集或資料事件。您必須針對您要擷取的每個內容類型建立新任務。
-
展開 驗證事件已正確載入 以確認資料可被剖析。建議在此階段確保資料正確無誤,否則您需要重新建立管道並再次載入資料。使用 選取資料集 來檢查特定資料集,並檢查任何可能影響資料載入的警告。按一下任何結構欄旁的眼睛圖示以檢視資料。
-
按一下下一步。
設定擷取屬性
設定管道的組態:
-
讀取資料自
-
從最早的事件開始:擷取所有歷史資料。
-
從現在開始:擷取管道啟動時到達的新資料。
-
-
欄取消巢狀
-
保留巢狀欄:不套用任何轉換。
-
解除巢狀結構為個別欄:資料會分割成個別欄。
-
-
新資料集的載入設定
-
僅附加:通常是事件資料的最佳選項,因為其生命週期通常很短且不會更新,例如訂單。
-
套用變更:這最適合隨時間更新的資料,例如客戶。更新現有記錄並根據索引鍵欄位插入新的記錄。您之後需要在定義任務時指定索引鍵欄位。
-
-
目標表格分割
目標表格分割選項適用於管道中的所有表格。您稍後可以在表格層級覆寫此設定,以定義自訂分割。
資訊備註只有在載入設定中選取僅附加時,此選項才可用。-
無分割:將會建立沒有任何分割的表格。
-
依事件擷取日期分割:將會透過擷取事件的日期分割表格。
-
-
資料變更處理
資訊備註只有在載入設定中選取套用變更時,此選項才可用。-
包含軟刪除:輸入運算式以定義要標記為刪除的記錄。
-
建立歷史資料存放區 (類型 2):這將保留已變更記錄的先前版本。
-
-
按一下下一步。
摘要
摘要畫面會以視覺方式顯示您的管道:
-
您可以選擇性地針對串流登陸和串流轉換任務,按一下 編輯名稱和描述 以提供新值。
-
選取您希望在 管道建立後 執行的選項。
-
設定所有設定後,按一下 建立 以建立串流管道。
-
專案顯示後,您可以準備並執行每個任務以開始擷取資料。
-
準備和執行串流登陸任務。
如需詳細資訊,請參閱將串流資料登陸至 Qlik 開放湖倉庫。
-
準備和執行串流轉換任務。
如需詳細資訊,請參閱儲存串流資料集。
-
資料類型對應
初始來源結構描述是根據在建立管道專案時,於 PREPARE 階段之前擷取的資料樣本,且結構描述演進會在讀取時處理。不支援 STRUCT 和 ARRAY 的鏡像任務和其他下游任務會使用 JSON 類型。資料可使用 SQL 進行剖析。
下列資料類型對應適用於所有支援的資料來源,但會依據來源檔案類型而異,且應注意下列事項:
-
資料類型是從正在上線的資料樣本推斷而來。例如,如果欄位在樣本中只包含整數值,它會在串流登陸和轉換任務中建立為 INT8。如果後續資料包含雙精確度小數值,登陸檔案會包含這些值;然而,在串流轉換任務中,如果 變更欄位資料類型 設定為 忽略,欄位會維持 INT8 且小數值會被截斷。為避免意外截斷,請確保樣本資料在上線前包含所有預期值的完整範圍,或在早期階段將變更欄位資料類型設定為停止任務,並視需要調整資料類型。
-
如果在來源的結構中新增欄位,則該欄位一律會新增至登陸目標。對於串流轉換,行為會根據串流轉換任務設定 > 結構描述演進 > 將欄位新增至結構 (套用至目標、忽略、停止任務) 中選擇的選項來套用。
-
如果特定記錄中缺少欄位,或陣列為空,則會將其視為 null。
-
如果資料集由陣列扁平化,且記錄到達時該陣列為空或 null,系統會建立一個資料列,且扁平化欄位為 null。它不會自動排除。如果您要排除這些列,請手動新增篩選器,例如array_element IS NOT NULL。
-
UI 中顯示的資料類型反映選取的資料集精細度。對於扁平化陣列,會顯示個別元素的資料類型,而非陣列結構本身。
-
無法在巢狀 JSON 欄位內的結構中新增屬性,只能在根層級新增。
-
在串流轉換任務中,僅支援單層陣列的扁平化。當扁平化套用至多層陣列時,例如 ARRAY<ARRAY<STRUCT>>,只會扁平化外部陣列,產生 ARRAY<STRUCT>,而非完全扁平化的 STRUCT。此外,目前的 UI 僅允許在欄位層級設定扁平化。因此,選取多層陣列會隱含地將扁平化套用至第一個陣列層級。
-
當您參考基本類型陣列時,如果粒度是陣列,則使用元素的資料類型。否則,將使用陣列資料類型。
在此範例中,OrderDetails 具有資料類型為 INT 的 CustomerID 陣列。如果粒度是 OrderDetails.CustomerID,則 OrderDetails.CustomerID 表示 INT;如果粒度是 OrderDetails,則表示 ARRAY<INT>。
JSON
在 JSON 檔案中,來源中的數值決定目標資料類型:
-
INT8 用於符合支援的整數範圍且不包含小數部分的整數值。
-
REAL8 (DOUBLE) 用於值包含小數部分 (浮點數) 的情況。
-
STRING 用於數值超出支援的最大整數範圍的情況。
資料類型對應如下:
| 來源資料類型 | Qlik Talend Data Integration 個資料類型 |
|---|---|
| 字串 | 字串 |
| NUMBER | INT8 |
| NUMBER | REAL8 |
| NUMBER | 字串 |
| 布林值 | 布林值 |
| 陣列 | 陣列 |
| 物件 | STRUCT |
CSV、TSV、REGEX 和 SPLIT
預設情況下,所有來源資料類型都會被擷取為字串。使用選項 自動推斷類型,以對應來源和目標類型,如下所示:
| 來源資料類型 | Qlik 個資料類型 |
|---|---|
| 數字 | INT8/REAL8 |
| 真/TRUE/真/假/FALSE/假 | 布林值 |
| 時間戳記 | 格式為 yyyy-MM-dd HH:mm:ss 或 yyyy-MM-ddTHH:mm:ssz 的時間戳記會剖析為日期時間類型。如果包含時區,該值會被解析為字串。 |
Parquet
Parquet 檔案支援實體和邏輯資料類型。實體資料類型定義值在磁碟上的儲存方式,例如 INT32、DOUBLE 或 BYTE_ARRAY。邏輯資料類型在實體表示之上提供語義,例如,識別整數值是否代表日期。當邏輯類型附加到 Parquet 欄位並在 Qlik 開放湖倉庫 中受支援 (如下所列) 時,串流登陸任務會在定義目標結構描述時使用邏輯類型,而不是底層的實體類型。這可確保資料正確解譯,保留預期的語意 (例如精確度、小數位數和時間意義),並在將資料寫入下游格式時產生更精確的結構描述。
從 Parquet 檔案取得的資料對應如下:
| 來源資料類型 | 邏輯類型 | Qlik Talend Data Integration 個資料類型 |
|---|---|---|
| 布林值 | 布林值 | |
| INT32 | INT8 | |
| INT64 | INT8 | |
| INT96 | 日期時間 | |
| 浮動 | REAL8 | |
| 雙重 | REAL8 | |
| BYTE_ARRAY | STRING (編碼為 Base64) | |
| FIXED_LEN_BYTE_ARRAY | 字串 (以 Base64 編碼) | |
| BYTE_ARRAY | 字串 | 字串 |
| BYTE_ARRAY | ENUM | 字串 |
| INT32 | 小數 | INT8 |
| INT64 | 小數 | INT8 |
| FIXED_LEN_BYTE_ARRAY | 小數 | INT8/REAL8 (以 Base64 編碼) |
| BYTE_ARRAY | 小數 | INT8/REAL8 (以 Base64 編碼) |
| INT32 | 日期 | 日期 |
| INT32 | 時間(毫秒,true) | INT8 |
| INT64 | 時間(微秒,true) | 時間 |
| INT64 | TIMESTAMP(MICROS,true) | 日期時間 |
| INT64 | TIMESTAMP(MILLIS,true) | 日期時間 |
| 巢狀類型 | STRUCT | |
| 列示 | 陣列 | |
| 地圖 | 陣列<結構>。代表鍵值對的結構陣列。 |
Avro
下列對應適用於具有結構描述登錄檔的 Avro 檔案。
| 來源資料類型 | 邏輯類型 | Qlik Talend Data Integration 個資料類型 |
|---|---|---|
| 布林值 | 布林值 | |
| INT | INT8 | |
| 長 | INT8 | |
| 浮動 | REAL8 | |
| 雙重 | REAL8 | |
| 位元組 | 字串 | |
| 字串 | 字串 | |
| RECORD | STRUCT | |
| ENUM | 字串 | |
| 陣列 | 陣列 | |
| 地圖 | 陣列<結構> | |
| 聯集 | ||
| 固定式 | 字串 | |
| 位元組 | 小數 | 小數 |
| 固定式 | 小數 | 小數 |
| INT | 日期 | 日期 |
| INT | TIME-MILLIS | INT8 |
| INT | TIME-MICROS | 時間 |
| 長 | TIMESTAMP-MILLIS | 日期時間 |
| 長 | TIMESTAMP-MICROS | 日期時間 |
ORC
下列對應適用於 ORC 檔案。
| 來源資料類型 | Qlik Talend Data Integration 個資料類型 |
|---|---|
| 布林值 | 布林值 |
| 位元組 | INT8 |
| 短 | INT8 |
| INT | INT8 |
| 長 | INT8 |
| 日期 | 日期 |
| 浮動 | REAL8 |
| 雙重 | REAL8 |
| 時間戳記 | 日期時間 |
| 二進位 | 字串 |
| 小數 | REAL8 |
| 字串 | 字串 |
| VARCHAR | 字串 |
| CHAR | 字串 |
| 列示 | 陣列 |
| 地圖 | 陣列<結構>。代表鍵值對的結構陣列。 |
| STRUCT | STRUCT |
| 聯集 |
限制和考慮事項
-
如果結構或陣列在登陸中透過自動結構描述演進修改,則非由 Qlik Talend Cloud 串流任務建立的下游檢視可能需要更新,以免過時。
-
如果任務有剖析錯誤,它將不會進入錯誤狀態,也不會被標記為需要注意。由於剖析錯誤是持續增加的指標,因此錯誤狀態沒有退出準則。
-
只有在沒有任務使用該叢集功能的情況下,才允許移除叢集功能。
-
對具有相同主索引鍵的記錄進行更新和刪除時,不得跨越分割區界限,也就是說,它們需要對應到相同的分割區。
-
如果來源包含大量資料行,則在任務和目錄中只會顯示依頻率排序的前 500 個資料行。所有資料行都會儲存到 S3 登陸中的 Avro 檔案,但只有前 500 個資料行會儲存在 Iceberg 資料表中。在結構描述演進中,如果新增資料行,即使該資料行很常用,也不會將其新增到熱門資料行。