Vous êtes ici :
Récupérations de flux de données Python
Les scripts Python sont une technologie efficace, en pleine expansion et facile à utiliser, et sont maintenant pris en charge dans Marketing Cloud Intelligence comme méthode de récupération des flux de données TotalConnect. Bien que dans certains cas des résultats équivalents peuvent être obtenus en utilisant des requêtes HTTP, les récupérations Python sont plus robustes tout en restant flexibles, puissantes et relativement faciles à configurer.
Configuration
En tant que méthode de connexion de source de données, la procédure est identique à la configuration d'une connexion à une nouvelle source de données, vous devez commencer sous l'onglet Connecter et unifier. Sous la section Liste des flux de données, cliquez sur Ajouter nouveau.
Faites défiler jusqu'à la section Fournisseurs techniques, puis démarrez le processus de configuration du flux de données.
Vous pouvez également le démarrer en créant un flux de données TotalConnect et en définissant Python en tant que méthode de récupération.
Quand l'utiliser ?
Python peut s'avérer utile pour récupérer des données de différentes sources sous différents formats. En tant que script, Python est suffisamment flexible pour gérer une diversité de formats, d'exigences et de scénarios. Nous présentons ci-dessous des exemples plus faciles à gérer avec un connecteur basé sur Python :
- Récupération de données via une connexion d'API lorsque plusieurs appels HTTP sont requis pour traiter l'un des cas suivants :
- Obtenir un jeton OAuth 2.0.
- Récupérer des entités.
- Tourner en boucle sur des appels.
- Paginer la réponse.
- Analyser les données pendant le processus de récupération (avant qu'elles soient disponibles à l'écran de mappage), ce qui facilite l'utilisation dans Marketing Cloud Intelligence.
Implémentation technique
Marketing Cloud Intelligence exécute correctement votre script Python si les critères suivants sont remplis :
- Le script doit être écrit en Python 3.9.
- Le script doit utiliser uniquement des packages pris en charge par Marketing Cloud Intelligence (voir la section sur les packages pris en charge ci-dessous).
- Le jeu de données généré par le script doit pouvoir être chargé dans un flux de données.
- Le temps de traitement du script ne doit pas dépasser 10 minutes.
- La consommation de mémoire du script ne doit pas dépasser 1,5 Go.
Nous recommandons de développer votre script et de le tester en externe (dans votre propre environnement Python), afin de faciliter la validation et le débogage. Vous pouvez utiliser le package public Marketing Cloud Intelligence pour élaborer et tester votre script. Utilisez la commande 'pip install' pour installer le package Marketing Cloud Intelligence dans votre environnement local. Notez que lorsque vous utilisez ‘save_csv’ et ‘save’ dans votre environnement local, les résultats sont imprimés et ne sont pas enregistrés dans Marketing Cloud Intelligence. Procédez comme suit :
- Pour commencer, importez les packages correspondants et incluez le package Marketing Cloud Intelligence.
- Élaborez la logique adaptée à vos besoins à l'aide des packages pris en charge.
- Utilisez le package Marketing Cloud Intelligence pour écrire par programmation des lignes dans un fichier csv, qui sera ensuite chargé dans le flux de données (le tableau ci-dessous synthétise les fonctions prises en charge dans notre package).
| Fonction | Entrée | Description |
|---|---|---|
add_row()
|
Liste (tableau) de valeurs sur une ligne spécifique | Utilisez cette fonction pour écrire une seule ligne de données dans un fichier csv. |
add_rows()
|
Liste de valeurs sur plusieurs lignes | Utilisez cette fonction pour écrire plusieurs lignes dans un fichier csv. |
save()
|
Utilisez cette fonction pour terminer le script et enregistrer le fichier CSV final dans Marketing Cloud Intelligence. Le fichier est chargé dans votre flux de données. | |
save_csv()
|
Une chaîne au format CSV dans le fichier d'entrée complet | Utilisez cette fonction, au lieu des fonctions ci-dessus, si vous avez une chaîne au format CSV contenant toutes les données que vous souhaitez écrire dans Marketing Cloud Intelligence. |
log()
|
Texte | Utilisez cette fonction pour imprimer le texte dans le journal du flux de données lors d'une opération de débogage. |
Il existe deux méthodes pour écrire des scripts Python :
- Interne : le module Python est lu via des flux de données Marketing Cloud Intelligence.
- Externe : le script est lu via un IDE local.
Les exemples ci-dessous montrent comment écrire des scripts internes. Si vous écrivez des scripts externes, vous devez procéder comme suit :
- Appelez le module Marketing Cloud Intelligence via 'from datorama.datorama import *' au lieu de 'import datorama'.
- Retirez « dataorama ». à partir du début de chaque fonction.
Exemples montrant leur fonctionnement :
from datorama.datorama import *
#Generating a list of values for our headers' row
row_values_list = ['date','campaign','impression','clicks']
# Writing a new row to the csv input file from values list
add_row(row_values_list)
Exemple 1 - utilisation de add_row() et save() :
import datorama
#Generating a list of values for our headers' row
row_values_list = ['date','campaign','impression','clicks']
# Writing a new row to the csv input file from values list
datorama.add_row(row_values_list)
#Generating two more lists containing row values
#Note that the values of a specific column are in the same position in their row's list as the position of their header in the headers' row
row2 = ['01-12-2017','Campaign 1',15,6] row3 = ['02-12-2017','Campaign 2',20,10]
# Creating a list of the two rows we want to write at once
multiple_rows = [row2,row3]
# Writing several rows at once to the csv by sending a list of multiple values' lists
datorama.add_rows(multiple_rows)
# Saving the csv file to upload it to our data stream
datorama.save()
Exemple 2 - utilisation de save_csv() :
import datorama
#Generate the exact same file by providing a csv formatted string of the file's content
csv_string = '''"date","campaign","impression","clicks"\n\ "01-12-2017","Campaign 1", 15, 6\n\ "02-12-2017","Campaign 2", 20, 10'''
#Saving the csv file, based on the input string
datorama.save_csv(csv_string)
Les deux scripts produisent le fichier CSV suivant :
| Date | Campagne | Impressions | Clics |
|---|---|---|---|
| 01-12-2017 | Campagne 1 | 15 | 6 |
| 02-12-2017 | Campagne 2 | 20 | 10 |
Packages Python pris en charge
La méthode de récupération Python prend en charge une liste limitée de packages Python couramment utilisés pour traiter la récupération de données. L'importation et l'utilisation d'un package non pris en charge entraînent l'échec du script. Si vous ne pouvez utiliser aucun package de cette liste, mais utiliser uniquement un package non pris en charge, consignez une requête de fonctionnalité auprès de votre CSM pour lui demander d'ajouter ce nouveau package à la liste. Les packages pris en charge sont ceux pris en charge par ‘AWS Lambda’ ainsi que les packages suivants :
- Requêtes
- re
- ftplib
- Pandas
- oauthlib
- cloudstorage
- boto3
- requests_oauthlib
- webapp2
- boto
- Numpy
- logging
- json
- tweepy
- datetime
- oauth2client
- googleapiclient
- apiclient
- httplib2
- Googleads
- pyasn1
- Facebookads
- tabula-py (la syntaxe d'importation de ce package est : 'import tabula')
- xlrd
- mlxtend
- Selenium
- simple_salesforce
- scrapy
- heure
- base64
- crypt
Une fois votre script validé, cliquez sur Suivant pour récupérer un fichier, puis accédez à l'écran Mappage où vous mappez le fichier de la même façon que n'importe quel autre flux de données TotalConnect.
Exemples
Ce script récupère les données des statistiques démographiques, par code postal, publiées par data.cityofnewyork.us.
import datorama import urllib2
import jsonurl = "https://data.cityofnewyork.us/api/views/kku6-nxdu/rows.json?accessType=DOWNLOAD"
req = urllib2.Request(url)
response = urllib2.urlopen(req)
response_str = response.read().decode('utf-8')
response_json = json.loads(response_str)
columns_js = response_json["meta"]["view"]["columns"]
rows_list = response_json["data"]
headers = []
for column in columns_js: headers.append(column["name"])
datorama.add_row(headers)
datorama.add_rows(rows_list)
datorama.save()Il récupère des données publiques disponibles sur Twitter pour différents noms d'écran, avec des métriques telles que Abonnés, Commentaires, etc. Son utilisation nécessite une application valide enregistrée dans Twitter :
import datoramaimport tweepyimport datetimeimport jsonimport
pandas as pdscreen_names = ["NASCAR", "F1", "PGATOUR", "MotoGP", "IndyCar", "ufc", "WWE"]
report_fields = ["screen_name", "statuses_count","followers_count","friends_count","listed_count","favourites_count" ]
#Twitter API
credentialsconsumer_key = ""consumer_secret = ""access_key = ""access_secret = ""
#Calculating the date of the run
now = datetime.datetime.now()
date = now.strftime("%d-%m-%Y")
#authorize twitter, initialize
tweepyauth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)
full_report = pd.DataFrame()
#Pulling the report from Twitter per screen namefor screen_name in screen_names:
get_user = api.get_user(screen_name = screen_name)
#Using pandas DataFrame to manipulate the report
df = pd.DataFrame(get_user._json)
#Filtering the report only on requested fields
requested_df = df[report_fields]
#Adding the screen name to the data set
requested_df["account"] = screen_name
#Appending the current screen name's data set to the full report of all screen names
full_report =full_report.append(requested_df, ignore_index=True)
#Adding the run date in the "date" column of the data
setfull_report["date"] = date
#Creating a csv string of the data
setcsv_string = full_report.to_csv()
#Saving the csv
datorama.save_csv(csv_string)
