The primary keys for a table are non-unique (see screenshot below, using the Braze connector for example):
This is expected behavior for all connectors that include the History feature. All tables that have the history tracking feature.
Currently our methods for tracking history are dependent on the connector type and they way the source API is structured.
For many of our connectors with tables that use primary keys, we have build out separate history tables within their schemas to capture this data. Currently, we do not have additional history tables for those with composite keys.
To help improve how we track history, we are in the process of rolling out History Mode (currently in beta) for all of our connectors. This will provide you with more control over tracking history, as well as additional granular data regarding changes.
For Salesforce, the history tables are created within the source, so we are able to easily extract those from Salesforce without the need to implement our own history tracking. This is why we do not implement history tracking on our side for Salesforce.
For tables that have composite keys (such as the
Campaign tables), we will add a new row to capture change (type 2 slowly changing dimension format).