Share

Metadata Column __hevo_source_modified_at

For Pipelines created with some Sources, Hevo captures the time when an Event is created, modified, or deleted, using the __hevo_source_modified_at metadata field. This is a timestamp value extracted from the Source. You can use this information to filter Events for loading or applying transformations. The Sources for which this feature is currently available include:

  • Amazon DynamoDB (DynamoDB Streams and Kinesis Data Streams ingestion modes).

  • MongoDB (OpLog and Change Streams ingestion modes)

  • MySQL (BinLog ingestion mode)

  • File-based Sources: Drive, Amazon S3, GCS and FTP/SFTP. Prior to Release 1.66, __hevo_source_modified_at was available as a field that could be mapped via the Schema Mapper.

The _hevo_source_modified_at field contains the timestamp of the update in the form of number of milliseconds since January 1, 1970, 00:00:00 GMT.

This field is not available for mapping in the Schema Mapper. However, you can access it in Transformations using the event.getSourceModifiedAt() method.


Example: Using __hevo_source_modified_at Timestamp to Transform Events

from io.hevo.api import Event
from datetime import datetime
def transform(event):

    modifiedTs = event.getSourceModifiedAt()
    properties = event.getProperties()

    # get particular time in ms format
    startDate = datetime(2021, 1, 1)
    epoch = datetime.utcfromtimestamp(0)
    startTsInMillis = (startDate - epoch).total_seconds() * 1000.0


    # Add a new field to the event based on modifiedTs
    if modifiedTs is None :
        properties['employeeInfoUpdate'] = 'Not Specified'
    elif modifiedTs >= startTsInMillis :
        properties['employeeInfoUpdate'] = 'New'
    else :
        properties['employeeInfoUpdate'] = 'Old'

    return event

The above transformation uses the event.getSourceModifiedAt() method to retrieve the time when the Event was modified in the Source. Next, it compares this value against the startTsInMillis field, which is the date 1 Jan, 2021 in Millisecond format. Based on the result of the comparison, the appropriate value is assigned to the new field employeeInfoUpdate. If modifiedTs is not present, then the new field gets the value Not Specified. Else, it is assigned the value Old or New if it is earlier or later than 1 Jan, 2021, respectively.

Result:


Last updated on Jun 12, 2023

Tell us what went wrong

Skip to the section