# 變更表格

您可以對目標端點使用工具，以使用變更表格中的中繼資料取得資訊。此資料由新增至變更表格結構描述的標頭欄定義。這些標頭如下表所述。

對於複寫任務中的每個目標表格，具有對應名稱的變更表格在具有目標表格的資料庫中維護。如需詳細資訊，請參閱[使用變更表格](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/use_change_table_model.htm)。變更表格包含原始表格欄和標頭欄。標頭欄包含前置詞，因此名稱不會與來源表格欄名稱衝突。預設前置詞為 `header__`。如需關於如何變更此前置詞的資訊，請參閱任務設定的中繼資料之下的變更表格清單。下表列出預設變更表格標頭欄。

| 欄位名稱 | 類型 | 描述 |
| --- | --- | --- |
| `[header__]change_seq` | varchar (35) | 一律增加對所有任務變更表格通用的變更排序器。變更順序有下列格式：<br><br>YYYYMMDDHHmmSShhxxxxxxxxxxxxxxxxxxx<br><br>其中：<br><br><ul> <li>YYYY 是四位數的年份 (例如 2012)</li> <li>MM 是二位數的月份 (範圍從 01-12)</li> <li> <p>DD 是二位數的日期 (範圍從 01-31)</p> </li> <li>HH 是一天當中的小時 (範圍從 00-23)</li> <li>mm 是小時當中的分鐘 (範圍從 00-59)</li> <li>mm 是分鐘當中的秒鐘 (範圍從 00-59)</li> <li>是秒鐘的百分數 (範圍從 00-99)</li> <li>xxxxxxxxxxxxxxxxxxx 是 19 位數的零前置變更號碼 (每個任務全域)</li> </ul><br><br>時間部分通常指交易進行時間，包括變更記錄。Qlik Talend Data Integration 包含維持序號單一性的邏輯，因此修改或調整端點時間可能會造成多個變更看起來在相同的時間戳記內，但變更號碼增加。<br><br>xxx...xxx 通常是來自資料記錄的內部變更號碼，但「之前影像」記錄除外，這與相符「更新」記錄的變更號碼相同 (例如，若「之前影像」的變更號碼為 1000，而「更新」為 1001，則兩者都有 1001)。這允許在表格和本身之間進行簡單的左方外部聯結，在左方我們會在時間點之前掃描但篩選掉 `operation=before-image`，而在右方我們會在相同的 `change_seq` 與成為「B」的 `change_oper` 聯結。 |
| `[header__]change_oper` | varchar (1) | 操作類型。這可以是下列內容之一：<br><br><ul> <li><code>I</code>：插入</li> <li><code>D</code>：刪除</li> <li><code>U</code>：更新</li> <li><code>B</code>：之前影像</li> </ul> |
| `[header__] change_mask` | varbinary (128) | 變更遮罩指示變更表格中的哪些資料欄與來源表格中變更的欄有關聯。<br><br>變更遮罩中的位元位置是根據變更表格中的欄序數。這表示，若有 5 個標頭欄，這會占用位元 0 至 4，而第一個資料欄則為變更遮罩中的位元 5。<br><br>變更遮罩是二進位欄 (位元組陣列)，以由小至大順序呈現變更遮罩：<br><br>位元組 0 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0<br><br>位元組 1 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8<br><br>在此範例中，`bit#N` 指示序數 N 的變更表格欄與來源表格中變更的欄有關。若更新遮罩為 11000，而欄序數為 3，則欄不會變更。<br><br>以下描述位元語意：<br><br><ul> <li>對於 INSERT (插入) 記錄，所有插入的欄有關聯的位元集合。</li> <li>對於 DELETE (刪除) 記錄，只有主要金鑰 (或獨特索引) 欄有關聯的位元集合。這允許套用者建構 DELETE 陳述式，不必從另一個來源尋找主要金鑰欄位。</li> <li>對於 BEFORE-IMAGE (之前影像) 記錄，所有位元都會清除 (變更遮罩可以是空的)。</li> <li>對於 UPDATE (更新) 記錄，在 BEFORE-IMAGE (之前影像) 和 UPDATE (更新) 之間變更值的每個欄將有關聯的位元集合。</li> </ul><br><br>為了空間和處理效率，儲存在變更遮罩中的實際位元組數可以進行 Null 修剪。這表示不需要儲存後置零。處理邏輯應將此納入考量。 |
| `[header__] stream_position` | varchar (128) | 來源 CDC 串流位置。 |
| `[header__] operation` | varchar (12) | 與變更記錄關聯的操作。這可以是下列內容之一：<br><br><ul> <li>插入</li> <li>更新</li> <li>刪除</li> <li>之前影像</li> </ul> |
| `[header__] transaction_id` | varchar (32) | 變更記錄所屬的交易 ID。<br><br>值是 128 位元交易 ID 的十六進位字串。 |
| `[header__] timestamp` | 時間戳記 | 原始變更 UTC 時間戳記 (值可以鄰近)。<br><br>資訊備註 透過 PostgreSQL 來源，認可發生之後才會知道時間戳記。因此，對來源表格認可變更之前，將會顯示預設日期 (例如 1970-01-01)。 |
| [header\_\_] `partition_name` | 字串 | 啟用變更資料分割時在目標上建立的分割名稱。分割名稱包括分割開始和結束時間。<br><br>範例：<br><br>20170313T123000\_20170313T170000 |