Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Independent validation for trusted, AI-ready data integration. See why IDC named Qlik a Leader: Read the Excerpt!
cancel
Showing results for 
Search instead for 
Did you mean: 
MoeE
Partner - Specialist
Partner - Specialist

What does the header__timestamp in the Audit table represent exactly?

Hi,

 

I am wondering about the specifics of the header__timestamp column in the Audit table. Can someone please help with helping us understand this? I did a bit of research and found the following facts:

Fact 1The documentation states that it is the "original change timestamp (the value may be approximate)". (But what exactly does this mean and how is the "original change timestamp" defined?)

Fact 2 - Furthermore, this Qlik Community post says,  that the header__timestamp column "is the timestamp of the Change operation, which is represented as the local time on the Replicate Server". This means that the timestamp is obtained from the Qlik Replicate server machine. I've tested this by changing the Qlik Replicate server time forwards by adding 2 minutes to the clock, then running a change on the source database. The result was that the header__timestamp value was 2 minutes in the future. This strongly indicates to me that the header__timestamp value is obtained from the local Qlik Replicate server, which seems a little strange.

This information is a little vague, and if possible can someone please clarify somethings for me?

 

My Questions

1. Regarding Fact 1, the first thing that I'd like to have clarified is, what exactly does this timestamp represent? Does it represent the time at which the transaction that contained the change was committed in the source database? How exactly is "original change timestamp" defined? A detailed explanation would be much appreciated.

2. Fact 2 strongly indicates that the timestamp for this column is actually obtained from the local Qlik Replicate server and not from the source database server.  Can someone please explain why the timestamp is obtained from the local Qlik Replicate server and not directly from the source database server? 

3. Another question is that, based on the facts that we know what would happen in following scenario. Suppose:

  • I begin a transaction to update a record in the source database at August 8, 2025, 12:00 am

  • I commit the transaction at August 8, 2025, 12:10 am

  • Qlik Replicate processes the change at August 8, 2025, 12:20 am

  • Then due to latency, the target table is updated at August 8, 2025, 12:30 am

I am aware the the header__change_seq timestamp will display the commit timestamp of 12:10 am on the 8th of August. However, what value will the header__timestamp column say?

  • a) Will it be the time at which the transaction was started (12 am)?
  • b) Will it be the time it was committed on the source (12:10 am) (assuming the QR server and Source are synced)?
  • c) Or will it be the time at which the changes are processed on the Replicate server (12:20am)?

My guess would be that it will get either a) the time at which the transaction was started or b) the time at which the transaction was committed. Also, the time will be dependent on whether the Qlik Replicate server's time is accurate because if it isn't then the header__timestamp value will be inaccurate.

 

Help understanding this is greatly appreciated.

Kind regards,

Mohammed

Labels (1)
1 Reply
MoeE
Partner - Specialist
Partner - Specialist
Author

Update: I did some testing and can answer Question 2 I believe.

 

I created a task that goes from Oracle to SQL server. It only sends data to the Audit table. 

1. I updated a record without committing it at 14:26:44 

2. I committed the update at 14:27:21

3. I inspected the Audit table and the "timestamp" column showed 14:26:44

 

Therefore, this shows that for Oracle as a source, the "timestamp" column represents the time at which a record was changed but not committed.