Despite defining a filter in the table setting for the full load, the "Transferred Count" column in Qlik Replicate Console GUI indicates that all records are transferred from the source table to the target side. The filter criteria have been thoroughly reviewed and no issues have been identified. It appears that the Replicate process is not filtering the records as expected.
Resolution
It is important to understand how the filter works in the Qlik Replicate process:
Filter Conditions: The filter statement is added directly to the query that retrieves data from the source table.
For example:
Qlik Replicate performs following query to retrieve records.
[SOURCE_UNLOAD]T: SELECT [id],[c1],[ts] FROM [dbo].[des2] WHERE ([id] = 1)
In this case, only the record with id = 1 would be returned from the source table, and the "Transferred Count" would show 1.
Record Selection Condition: Qlik Replicate retrieves all records from the source table and then performs the filtering within the Qlik Replicate process itself.
For example,
Qlik Replicate performs following query to retrieve records.
[SOURCE_UNLOAD ]T: SELECT [id],[c1],[ts] FROM [dbo].[des2]
Since all records are initially collected, the "Transferred Count" will show the total number of records (e.g. 200 for this example) from the source table.
Only one record is transferred to the target. Other records are skipped:
[TARGET_LOAD ]I: Load finished for table 'dbo'.'des2' (Id = 1). 200 rows received. 199 rows skipped. Volume transferred 80000.