Leandro Vieira
11/27/2025, 4:36 PMtap-facebook extractor to get data from the adsinsight_default data stream, but all my data has been duplicated for some reason as seen in the screenshot. Can anyone help me figure out what's happening? I've selected only this specific stream in my yml file and it seems like the first day of the extraction it's not duplicated, it feels like it's extracting data for Day 1 and Day 2, then Day 2 and Day 3, Day 3 and Day 4, and so on...Andy Carter
11/28/2025, 9:53 AMdate_start and date_stop cols for the duplicated rows? Are they the same values?Andy Carter
11/28/2025, 9:54 AMLeandro Vieira
11/28/2025, 2:03 PMAndy Carter
11/28/2025, 2:42 PMLeandro Vieira
11/28/2025, 3:26 PMWITH META_ADS AS (
SELECT
data
FROM my_database i
WHERE STRING(JSON_EXTRACT(data , '$.campaign_name')) LIKE '%pace%'
),
BASE AS (
SELECT
DATE(PARSE_DATETIME('%Y-%m-%d', STRING(JSON_EXTRACT(data, '$.date_start')))) AS date,
DATE(PARSE_DATETIME('%Y-%m-%d', STRING(JSON_EXTRACT(data, '$.date_stop')))) AS date_stop,
'meta' AS channel,
SPLIT(STRING(JSON_EXTRACT(data , '$.campaign_name')), '_')[SAFE_OFFSET(0)] AS campaign_id,
SPLIT(STRING(JSON_EXTRACT(data , '$.ad_name')), '_')[SAFE_OFFSET(0)] AS ad_id,
STRING(JSON_EXTRACT(data , '$.campaign_name')) AS campaign_name,
STRING(JSON_EXTRACT(data , '$.ad_name')) AS ad_name,
SAFE_CAST(STRING(JSON_EXTRACT(data , '$.spend')) AS FLOAT64) AS spend,
SAFE_CAST(STRING(JSON_EXTRACT(data , '$.impressions')) AS INT64) AS impressions,
SAFE_CAST(STRING(JSON_EXTRACT(data , '$.inline_link_clicks')) AS INT64) AS clicks,
SAFE_CAST(JSON_VALUE(data, '$.video_15_sec_watched_actions[0].value') AS INT64) AS complete_views
FROM META_ADS
)
SELECT
date,
date_stop,
campaign_id,
ad_id,
--COUNT(*) AS qtd_registros,
--SUM(spend) AS soma_spend,
--ARRAY_AGG(spend) AS valores_spend,
spend,
impressions
FROM BASE
WHERE ad_id LIKE '%200-09%'
AND date BETWEEN '2025-11-19' AND '2025-11-21'Leandro Vieira
11/28/2025, 3:29 PMLeandro Vieira
11/28/2025, 3:32 PMLeandro Vieira
11/28/2025, 3:51 PMLeandro Vieira
11/28/2025, 3:51 PMplugins:
extractors:
- name: tap-facebook
# ...
select:
- ad_insights!ad_id:
primary_key: true
- ad_insights!date_start:
primary_key: true
- ad_insights!attribution_setting: # <<< ADD THIS FIELD
primary_key: trueLeandro Vieira
11/28/2025, 3:52 PMLeandro Vieira
11/28/2025, 7:55 PMAndy Carter
12/01/2025, 8:44 AMmeltano run tap-facebook target-jsonl first and inspect the output jsonl file. Are there any duplicates present? If so it's a tap issue need to investigate how/why the API or tap produces them.
If not then you know the issue is on the target side