Nick Mitchum
01/03/2025, 7:35 PM2025-01-03T19:18:28.866480Z [info ] "message": "(#100) product_id is not valid for fields param. please check <https://developers.facebook.com/docs/marketing-api/reference/ads-insights/> for all valid values", cmd_type=extractor name=tap-facebook run_id=ef447137-2f40-4a42-ba37-c2cf4fddba9f state_id=2025-01-03T191052--tap-facebook--target-gcs stdio=stderr
2025-01-03T19:18:28.866603Z [info ] "type": "OAuthException", cmd_type=extractor name=tap-facebook run_id=ef447137-2f40-4a42-ba37-c2cf4fddba9f state_id=2025-01-03T191052--tap-facebook--target-gcs stdio=stderr
2025-01-03T19:18:28.866731Z [info ] "code": 100, cmd_type=extractor name=tap-facebook run_id=ef447137-2f40-4a42-ba37-c2cf4fddba9f state_id=2025-01-03T191052--tap-facebook--target-gcs stdio=stderr
2025-01-03T19:18:28.866853Z [info ] "fbtrace_id": "AAVY2ctUcCgRvErNc479e_a" cmd_type=extractor name=tap-facebook run_id=ef447137-2f40-4a42-ba37-c2cf4fddba9f state_id=2025-01-03T191052--tap-facebook--target-gcs stdio=stderr
2025-01-03T19:18:28.866972Z [info ] } cmd_type=extractor name=tap-facebook run_id=ef447137-2f40-4a42-ba37-c2cf4fddba9f state_id=2025-01-03T191052--tap-facebook--target-gcs stdio=stderr
2025-01-03T19:18:28.867104Z [info ] }
.yml
extractors:
- name: tap-facebook
config:
api_version: v20.0
account_ids: "${ACCOUNT_IDS}"
start_date: "${START_DATA_DATE}"
end_date: "${END_DATA_DATE}"
access_token: "${FACEBOOK_ACCESS_TOKEN}"
insight_reports_list:
- name: "defaultTest"
level: "ad"
breakdowns: ["product_id"]
action_attribution_windows:
- "1d_click"
- "7d_click"
Any help would be great.Edgar Ramírez (Arch.dev)
01/03/2025, 9:14 PMproduct_id
that causes it to break the request when present in fields
, or is this some more general behavior?
I'm trying to think of a fix of that here: https://github.com/MeltanoLabs/tap-facebook/blob/59a5d96465165aee181d654796918c6608e2f903/tap_facebook/streams/ad_insights.py#L220-L222.Nick Mitchum
01/03/2025, 9:15 PMdef schema(self) -> dict:
properties: list[th.Property] = []
columns = list(AdsInsights.Field.__dict__)[1:]
for field in columns:
if field in EXCLUDED_FIELDS:
continue
if data_type := self._get_datatype(field):
properties.append(th.Property(field, data_type))
properties.extend(
[
th.Property(breakdown, th.StringType())
for breakdown in self._report_definition["breakdowns"]
],
)
return th.PropertiesList(*properties).to_dict()
doesn't seem to be working atmNick Mitchum
01/03/2025, 9:20 PMEdgar Ramírez (Arch.dev)
01/03/2025, 11:13 PMNick Mitchum
01/06/2025, 6:42 PMcolumns = self._get_selected_columns()
breakdowns = self._report_definition.get("breakdowns", [])
fields = [col for col in columns if col not in set(breakdowns)]
while report_start <= sync_end_date:
params = {
"level": self._report_definition["level"],
"action_breakdowns": self._report_definition["action_breakdowns"],
"action_report_time": self._report_definition["action_report_time"],
"breakdowns": breakdowns,
"fields": fields,
"time_increment": time_increment,
"limit": 100,
"action_attribution_windows": [
self._report_definition["action_attribution_windows_view"],
self._report_definition["action_attribution_windows_click"],
],
"time_range": {
"since": report_start.to_date_string(),
"until": report_end.to_date_string(),
},
}