串流資料
上線程序會從來源傳輸資料並將其儲存在 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 表格。按一下 下一步。
選取內容類型
選擇來源事件內容類型。
-
在 選擇資料事件的類型 中選取您要擷取的事件類型。
-
如需詳細資訊,請參閱 連接資料串流。
選取的內容類型適用於所有主題、資料集或資料事件。您必須為要擷取的每個內容類型建立新工作。
-
展開 驗證事件已正確載入 以確認可以剖析資料。最好在此階段確保資料正確,否則您需要重新建立管道並再次載入資料。使用 選取資料集 來檢查特定資料集,並檢查任何可能影響資料載入的警告。按一下任何 struct 欄位旁邊的眼睛圖示以檢視資料。
-
按一下 下一步。
設定擷取屬性
設定您的管道設定:
-
讀取資料自
-
從最早的事件開始:擷取所有歷史資料。
-
從現在開始:擷取從管道啟動時到達的新資料。
-
-
欄位取消巢狀
-
保留巢狀欄位:不套用任何轉換。
-
取消巢狀至個別欄位:資料會分割成個別欄位。
-
-
新資料集的載入設定
-
僅附加:通常是事件資料的最佳選項,因為它通常生命週期短且不會更新,例如 訂單。
-
套用變更:這最適合隨時間更新的資料,例如 客戶。根據索引鍵欄位更新現有記錄並插入新記錄。稍後在定義工作時,您將需要指定索引鍵欄位。
-
-
目標表格分割區
目標表格分割區選項適用於管道中的所有表格。您稍後可以在表格層級覆寫此設定以定義自訂分割區。
資訊備註只有在 載入設定 中選取 僅附加 時,才能使用此選項。-
無分割區:建立表格時不進行任何分割。
-
依事件擷取日期分割:表格會依擷取事件的日期進行分割。
資訊備註當此選項與 hdr__from_timestamp 標頭欄位選項一起選取時,hdr__from_timestamp 將用作預設分割區欄位。如需有關將 hdr__from_timestamp 標頭欄位新增至標準檢視的資訊,請參閱 表格定義。
-
-
資料變更處理
資訊備註只有在 載入設定 中選取 套用變更 時,才能使用此選項。-
包含軟刪除:輸入運算式以定義要標記為刪除的記錄。
-
建立歷史資料存放區 (類型 2):這將保留已變更記錄的先前版本。
-
-
按一下 下一步。
摘要
摘要畫面提供管道的視覺化顯示:
-
選擇性地,對於串流登陸和串流轉換工作,您可以按一下 編輯名稱和描述 以提供新值。
-
選取您希望在 建立管道之後 發生的選項。
-
設定所有設定後,按一下 建立 以建立串流管道。
-
顯示專案時,您可以準備並執行每個工作以開始擷取資料。
-
準備並執行串流登陸工作。
如需詳細資訊,請參閱 將串流資料登陸至 Qlik 開放湖倉庫。
-
準備並執行串流轉換工作。
如需詳細資訊,請參閱 儲存串流資料集。
-
資料類型對應
初始來源結構描述是根據建立管道專案時在 PREPARE 階段之前取得的資料樣本,且結構描述演進會在讀取時處理。不支援 STRUCT 和 ARRAY 的鏡像工作和其他下游工作會使用 JSON 類型。可以使用 SQL 剖析資料。
下列資料類型對應適用於所有支援的資料來源,但會根據來源檔案類型而有所不同,且應注意下列事項:
-
資料類型是從正在上線的資料樣本推斷而來。例如,如果欄位在樣本中僅包含整數值,則在串流登陸和轉換工作中會將其建立為 INT8。如果後續資料包含雙精確度小數值,則登陸檔案會包含這些值;但是,在串流轉換工作中,如果 變更欄位資料類型 設定設為 忽略,則欄位會保持為 INT8,且小數值會被截斷。為避免意外截斷,請確保樣本資料在上線前包含預期值的完整範圍,或在早期階段將 變更欄位資料類型 設定為 停止工作,並視需要調整資料類型。
-
如果將欄位新增至來源中的 struct,則一律會將其新增至登陸目標。對於串流轉換,會根據在 串流轉換工作設定 > 結構描述演進 > 將欄位新增至 struct (套用至目標、忽略、停止工作) 中選擇的選項來套用行為。
-
如果在特定記錄中遺失欄位,或陣列為空,則會將其視為 null。
-
如果資料集由陣列壓平合併,且到達的記錄中該陣列為空或 null,系統會建立一個資料列,且壓平合併的欄位為 null。它不會自動被排除。如果您想要排除這些資料列,請手動新增篩選條件,例如 array_element IS NOT NULL。
-
UI 中顯示的資料類型反映了選取的資料集細微度。對於壓平合併的陣列,會顯示個別元素的資料類型,而不是陣列結構本身。
-
無法在巢狀 JSON 欄位內的 struct 中新增屬性,只能在根層級新增。
-
在串流轉換工作中,僅支援單一層級陣列的壓平合併。當壓平合併套用至多層級陣列時,例如 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 資料類型 |
|---|---|
| STRING | STRING |
| NUMBER | INT8 |
| NUMBER | REAL8 |
| NUMBER | STRING |
| BOOLEAN | BOOLEAN |
| ARRAY | ARRAY |
| OBJECT | STRUCT |
CSV、TSV、REGEX 和 SPLIT
依預設,所有來源資料類型都會擷取為字串。使用 自動推斷類型 選項,將來源和目標類型對應如下:
| 來源資料類型 | Qlik 資料類型 |
|---|---|
| NUMERIC | INT8/REAL8 |
| True/TRUE/true/False/FALSE/false | BOOLEAN |
| TIMESTAMP | 格式為 yyyy-MM-dd HH:mm:ss 或 yyyy-MM-ddTHH:mm:ssz 的時間戳記會剖析為 datetime 類型。如果包含時區,則該值會剖析為字串。 |
Parquet
Parquet 檔案支援實體和邏輯資料類型。實體資料類型定義值在磁碟上的儲存方式,例如 INT32、DOUBLE 或 BYTE_ARRAY。邏輯資料類型在實體表示之上提供語意意義,例如,識別整數值是否代表日期。當邏輯類型附加至 Parquet 欄位且在 Qlik 開放湖倉庫 中受支援時 (如下所列),串流登陸工作在定義目標結構描述時會使用邏輯類型,而不是底層的實體類型。這可確保正確解譯資料,保留預期的語意 (例如精確度、小數位數和時間意義),並在將資料寫入下游格式時產生更準確的結構描述。
來自 Parquet 檔案的資料對應如下:
| 來源資料類型 | 邏輯類型 | Qlik Talend Data Integration 資料類型 |
|---|---|---|
| BOOLEAN | BOOLEAN | |
| INT32 | INT8 | |
| INT64 | INT8 | |
| INT96 | DATETIME | |
| FLOAT | REAL8 | |
| DOUBLE | REAL8 | |
| BYTE_ARRAY | STRING (編碼為 Base64) | |
| FIXED_LEN_BYTE_ARRAY | STRING (編碼為 Base64) | |
| BYTE_ARRAY | STRING | STRING |
| BYTE_ARRAY | ENUM | STRING |
| INT32 | DECIMAL | INT8 |
| INT64 | DECIMAL | INT8 |
| FIXED_LEN_BYTE_ARRAY | DECIMAL | INT8/REAL8 (編碼為 Base64) |
| BYTE_ARRAY | DECIMAL | INT8/REAL8 (編碼為 Base64) |
| INT32 | DATE | DATE |
| INT32 | TIME(MILLIS,true) | INT8 |
| INT64 | TIME(MICROS,true) | TIME |
| INT64 | TIMESTAMP(MICROS,true) | DATETIME |
| INT64 | TIMESTAMP(MILLIS,true) | DATETIME |
| NESTED TYPES | STRUCT | |
| LIST | ARRAY | |
| MAP | ARRAY<STRUCT>。代表鍵值對的 struct 陣列。 |
Avro
下列對應適用於具有結構描述登錄的 Avro 檔案。
| 來源資料類型 | 邏輯類型 | Qlik Talend Data Integration 資料類型 |
|---|---|---|
| BOOLEAN | BOOLEAN | |
| INT | INT8 | |
| LONG | INT8 | |
| FLOAT | REAL8 | |
| DOUBLE | REAL8 | |
| BYTES | STRING | |
| STRING | STRING | |
| RECORD | STRUCT | |
| ENUM | STRING | |
| ARRAY | ARRAY | |
| MAP | ARRAY<STRUCT> | |
| UNION | ||
| FIXED | STRING | |
| BYTES | DECIMAL | DECIMAL |
| FIXED | DECIMAL | DECIMAL |
| INT | DATE | DATE |
| INT | TIME-MILLIS | INT8 |
| INT | TIME-MICROS | TIME |
| LONG | TIMESTAMP-MILLIS | DATETIME |
| LONG | TIMESTAMP-MICROS | DATETIME |
ORC
下列對應適用於 ORC 檔案。
| 來源資料類型 | Qlik Talend Data Integration 資料類型 |
|---|---|
| BOOLEAN | BOOLEAN |
| BYTE | INT8 |
| SHORT | INT8 |
| INT | INT8 |
| LONG | INT8 |
| DATE | DATE |
| FLOAT | REAL8 |
| DOUBLE | REAL8 |
| TIMESTAMP | DATETIME |
| BINARY | STRING |
| DECIMAL | REAL8 |
| STRING | STRING |
| VARCHAR | STRING |
| CHAR | STRING |
| LIST | ARRAY |
| MAP | ARRAY<STRUCT>。代表鍵值對的 struct 陣列。 |
| STRUCT | STRUCT |
| UNION |
限制和考量事項
-
如果結構或陣列在登陸中被自動結構描述演進修改,則非由 Qlik Talend Cloud 串流工作建立的下游檢視可能需要更新,以免過時。
-
如果工作有剖析錯誤,它不會進入錯誤狀態,也不會標記為需要注意。由於剖析錯誤是持續增加的指標,因此沒有錯誤狀態的結束標準。
-
只有在沒有工作使用該叢集功能時,才允許移除叢集功能。
-
對具有相同主索引鍵的記錄進行更新和刪除不得跨越分割區邊界,也就是說,它們需要對應至相同的分割區。
-
如果來源包含大量欄位,則在工作和目錄中僅會顯示頻率最高的前 500 個欄位。所有欄位都會儲存至 S3 登陸中的 Avro 檔案,但只有前 500 個欄位會儲存在 Iceberg 表格中。在結構描述演進中,如果新增了新欄位,即使它很頻繁,也不會新增至頂端欄位中。