J'ai une longue liste de noms de campagnes que je dois réduire à un vecteur de caractères de longueur 1, puis passer en tant que clause "where" dans un appel à l'API Google AdWords via le " RAdwords "package.Chaîne de caractères tronquée lors de la transmission à la fonction
La création de cette chaîne de caractères n'est pas un problème tant que sa longueur n'atteint pas un certain point de troncature des valeurs, ce qui provoque une erreur dans l'appel de l'API AdWords.
Voici un exemple de la configuration qui ne provoque pas une erreur:
campaigns <- paste0("Campaign ", seq(1,5))
collapsed_campaigns <- paste0(campaigns, collapse = "','")
campaign_filter1 <- paste("CampaignName IN ['", collapsed_campaigns, "']")
Et voici une configuration qui provoquera une erreur:
campaigns <- paste0("Campaign ", seq(1,50))
collapsed_campaigns <- paste0(campaigns, collapse = "','")
campaign_filter2 <- paste("CampaignName IN ['", collapsed_campaigns, "']")
Inspecter la structure de chaque montre variables :
> str(campaign_filter1)
chr "CampaignName IN [' Campaign 1','Campaign 2','Campaign 3',
'Campaign 4','Campaign 5 ']"
> str(campaign_filter2)
chr "CampaignName IN [' Campaign 1','Campaign 2','Campaign 3',
'Campaign 4','Campaign 5','Campaign 6','Campaign 7','Campaign 8','Camp"| __truncated__
Si je passe 'campaign_filter1' comme mon clause where RAdwords, les choses se passent comme attendues d' ré.
Si je passe 'campaign_filter2' comme la clause where, je reçois cette erreur:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><reportDownloadError>
<ApiError><type>QueryError.INVALID_WHERE_CLAUSE</type><trigger></trigger>
<fieldPath></fieldPath></ApiError></reportDownloadError>
Il semble que le "| tronquée" est littéralement se passer à la fonction RAdwords.
Voici le résultat d'une inspection de la structure de « traffic_data » dans un appel a échoué RAdwords:
> str(traffic_data)
Classes ‘data.table’ and 'data.frame': 1 obs. of 1 variable:
$ ads: chr "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>
<reportDownloadError><ApiError><type>QueryError.INVALID_WHERE_CLAU"| __truncated__
- attr(*, ".internal.selfref")=<externalptr>
De toute évidence, je pouvais contourner ce une sorte de fonction en boucle et appeler les données de l'API un campagne à la fois, mais ce serait horriblement inefficace. Comment puis-je transmettre l'intégralité de la chaîne de caractères à RAdwords?
Êtes-vous sûr à 100% que le '| truncated' se termine dans votre requête? Avez-vous inspecté le texte de requête envoyé et vérifié? Je demande seulement parce que je trouverais cela très surprenant. Quoi qu'il en soit, inspecter le texte de la requête sera informatif car il révélera l'erreur de syntaxe spécifique en jeu. – joran
... donc par exemple quand j'exécute 'RAdwords :: statement' et que je fournis juste ta longue clause WHERE, tout est clairement inséré, pas tronqué. Peut-être qu'il y a une limite d'API sur la longueur ...? – joran
Ah, oui, je peux le voir maintenant. Donc, alors la réponse sera, je dois savoir quelle est cette limite d'API et l'adresser à partir de là. Merci! – holemanm