Naveen Jakad
05/18/2026, 2:59 PMkapa.ai
05/18/2026, 2:59 PMstat_time_day field in the ad_groups_reports_by_country_daily stream changed from a timestamp type to a struct type.
What I can share from the available documentation is that for related streams like Ad Groups Reports Daily, the stat_time_day field is documented as type string (in YYYY-MM-DD HH:MM:SS format) [Ad Groups Reports Daily]. There is no mention of ad_groups_reports_by_country_daily specifically in the knowledge sources, nor any documented change in the data type behavior for stat_time_day.
A few things worth noting:
⢠The stream you're referencing (ad_groups_reports_by_country_daily) is not covered in the available documentation, so I cannot confirm its expected schema.
⢠A similar type-related issue was previously reported for the TikTok Marketing connector (wrong type for create_time), but it was closed as resolved in connector version 5.0.8 [Github Issue].
Recommended next steps:
1. Check which version of the TikTok Marketing connector you are running ā a recent update may have changed the schema.
2. File a bug report or open a discussion on the Airbyte GitHub repository with details about the connector version and the observed schema change, so the maintainers can investigate. š 0 button š 0 button ā¹ļø Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Naveen Jakad
05/18/2026, 3:48 PMkapa.ai
05/18/2026, 3:49 PMfix_date_time method that normalizes specific time fields ā including created_time, updated_time, event_time, first_fired_time, and last_fired_time ā into a standardized ISO 8601 format (e.g., 2023-01-19T20:38:59+0000). [test_base_streams.py]
Known related issue (S3/Parquet destinations):
If you are syncing to an S3 destination in Parquet or Avro format, there is a known historical issue where datetime/timestamp fields were stored as dictionary/struct types (e.g., {"member0": "2020-02-04T17:01:27.000+0000", "member1": null}) instead of proper datetime types. This was a known bug related to how Avro logical type unions were handled. [S3 Migration Guide]
A more recent S3 destination update simplified this: all time types are now converted to integral logical types, and the old union-based struct representation has been removed. If you recently upgraded your S3 destination connector, this schema change could explain why the column type appears different now. [S3 Migration Guide]
Recommended steps:
1. Check your destination connector version ā if you're on S3/Parquet, a recent upgrade may have changed how datetime fields are represented.
2. Refresh your schema in the affected connections (Connections ā Schema tab ā Refresh source schema) to ensure Airbyte picks up the latest schema. [Facebook Marketing Migration Guide]
3. If the issue persists, consider filing a bug report on the Airbyte GitHub repository with your connector versions and destination type.
The knowledge sources do not explicitly document a recent breaking change to `created_time`/`updated_time` in the ad_sets or ads_insights streams specifically, so I'd recommend the above investigation steps to pinpoint the root cause. š 0 button š 0 button ā¹ļø Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Naveen Jakad
05/18/2026, 3:51 PMkapa.ai
05/18/2026, 3:52 PM{"member0": "2020-02-04T17:01:27.000+0000", "member1": null}) was a known bug in both S3 and GCS Parquet/Avro destinations. It was caused by how Avro logical type unions were handled ā datetime types were stored as a union of an integral logical type and a string, which in Parquet appeared as a disjoint record (struct). [S3 Migration Guide; Forum Post]
The S3 destination version 1.0.0 introduced a fix that simplified all time types to integral logical types, eliminating the struct representation. [S3 Migration Guide]
However, the GCS destination changelog in the knowledge sources does not show an equivalent fix being applied. The GCS connector appears to still be on an older version (latest listed is 0.4.9), and no similar datetime simplification is documented for it. [GCS Changelog]
So the most likely explanation is:
⢠Your S3 destination was upgraded to v1.0.0+, which fixed the struct issue and now correctly outputs timestamps.
⢠Your GCS destination has not received the same fix, so it still outputs the old struct/dictionary format.
This would be a connector version difference, not an AWS vs GCS platform difference per se. I'd recommend checking the GCS connector version you're running and monitoring the GCS destination changelog for a similar fix. š 0 button š 0 button ā¹ļø Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Naveen Jakad
05/18/2026, 4:15 PMkapa.ai
05/18/2026, 4:15 PM_airbyte_raw_id ā VARCHAR
⢠_airbyte_extracted_at ā TIMESTAMP WITH TIME ZONE
⢠_airbyte_meta ā JSONB
⢠_airbyte_generation_id ā BIGINT
Could you clarify what you mean by "GCS defined schema for Postgres"? Are you asking about syncing from GCS to Postgres, or something else? That would help me give a more targeted answer. š 0 button š 0 button ā¹ļø Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help., with interactive elementsNaveen Jakad
05/18/2026, 4:16 PMkapa.ai
05/18/2026, 4:16 PM["null", <type>]). [JSON to Avro Conversion]
For CSV/JSONL formats, the data is written as flat text/JSON without strict type enforcement. Root-level fields can be flattened into columns, but nested objects/arrays remain as JSON blobs. [GCS Output Schema]
Important note on datetime fields: As discussed earlier, older versions of the GCS connector stored datetime types as a union of an integral logical type and a string, which appeared as a struct in Parquet. The current documented behavior converts them to integral logical types directly. [S3 Migration Guide]
The GCS destination does not have a native SQL type mapping like Postgres does ā it maps to file-format types (Avro/Parquet logical types), not database column types. š 0 button š 0 button ā¹ļø Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help., with interactive elementsNaveen Jakad
05/18/2026, 4:34 PMkapa.ai
05/18/2026, 4:34 PMOptional Record { member0: Optional Int64(logical_type=Timestamp(Microseconds)), member1: Optional String }
This is the same bug that was reported in forum discussions where users saw datetime fields as dictionaries/structs. [Forum Post; S3 Migration Guide]
The S3 destination received a fix (in its migration to v1.0.0) that simplified this to a proper:
Optional Int64(logical_type=Timestamp(Microseconds))
[S3 Migration Guide]
However, the knowledge sources do not document an equivalent fix being applied to the GCS destination. The GCS changelog available does not show a similar datetime simplification update. [GCS Changelog]
So to directly answer your question: if you are using an older version of the GCS destination with Parquet output, timestamps are likely still written as structs. I'd recommend checking the current GCS connector version and its release notes for any recent fixes to this behavior. š 0 button š 0 button ā¹ļø Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Naveen Jakad
05/18/2026, 4:35 PMkapa.ai
05/18/2026, 4:36 PM