Distribution de charges de travail qui récupèrent des résultats avec le connecteur Snowflake pour Python¶
Si vous utilisez un environnement distribué pour paralléliser les charges de travail, vous pouvez utiliser le connecteur Snowflake pour Python pour répartir le travail d’extraction et de traitement des résultats.
Introduction¶
Après avoir utilisé l’objet Curseur pour exécuter une requête, vous pouvez répartir le travail de récupération des résultats en utilisant des lots de résultats. Un lot de résultats encapsule une fonction qui récupère un sous-ensemble de résultats. Vous pouvez affecter différents employés à l’utilisation de différents lots de résultats pour récupérer et traiter les résultats en parallèle.
Récupération de la liste des lots de résultats¶
Après avoir exécuté une requête, vous pouvez récupérer les résultats dans l’un des formats suivants :
Objets ResultBatch.
Pour ce faire, appelez la méthode
obtenir_lot_résultats()dans l’objet Curseur. Cela renvoie une liste d’objetsResultBatchque vous pouvez affecter à différents employés pour le traitement. Par exemple :Tables PyArrow.
Pour plus d’informations, voir les tables PyArrow.
Vous pouvez utiliser les méthodes suivantes pour récupérer les lots de résultats en tant que tables PyArrow :
récupérer_arrow_tout(): appelez cette méthode pour renvoyer une table PyArrow contenant tous les résultats.récupérer_arrow_lots(): appelez cette méthode pour renvoyer un itérateur que vous pouvez utiliser pour renvoyer une table PyArrow pour chaque lot de résultats.
Par exemple :
-
Si vous avez installé la version compatible avec Pandas du connecteur Snowflake pour Python, vous pouvez utiliser les méthodes suivantes pour récupérer les lots de résultats sous forme d’objets DataFrame Pandas :
fetch_pandas_all(): appelez cette méthode pour renvoyer un DataFrame Pandas contenant tous les résultats.fetch_pandas_batches(): appelez cette méthode pour renvoyer un itérateur que vous pouvez utiliser pour renvoyer un DataFrame Pandas pour chaque lot de résultats.
Par exemple :
Sérialisation des lots de résultats¶
Pour déplacer les lots de résultats vers d’autres employés ou nœuds, vous pouvez sérialiser et désérialiser les lots de résultats. Exemple :
Utilisation de lots de résultats¶
Les sections suivantes expliquent comment travailler avec les objets ResultBatch :
Obtention du nombre de lignes et la taille d’un lot de résultats
Conversion d’un lot de résultats Arrow en une table PyArrow ou un DataFrame Pandas
Itération sur les lignes d’un lot de résultats¶
Avec un objet ResultBatch, vous pouvez itérer sur les lignes qui font partie de ce lot. Par exemple :
Lorsque vous créez un itérateur d’un objet ResultBatch, l’objet récupère et convertit le sous-ensemble de lignes pour ce lot.
Matérialisation des lignes d’un lot de résultats¶
Pour matérialiser le sous-ensemble de lignes dans un lot de résultats en passant cet objet ResultBatch à la fonction list(). Par exemple :
Obtention du nombre de lignes et la taille d’un lot de résultats¶
Si vous devez déterminer le nombre de lignes dans un lot de résultats et la taille des données, vous pouvez utiliser les attributs rowcount, compressed_size et uncompressed_size de l’objet ResultBatch. Par exemple :
Notez que ces attributs sont disponibles avant que vous n’itériez sur le lot de résultats. Il n’est pas nécessaire de récupérer le sous-ensemble de lignes pour le lot afin d’obtenir les valeurs de ces attributs.
Conversion d’un lot de résultats Arrow en une table PyArrow ou un DataFrame Pandas¶
Pour convertir un ArrowResultBatch en une table PyArrow ou un DataFrame Pandas, utilisez les méthodes suivantes :
to_pandas(): appelez cette méthode pour renvoyer un DataFrame Pandas contenant les lignes d’unArrowResultBatch, si vous avez installé la version compatible avec Pandas du connecteur Snowflake pour Python.vers_arrow(): appelez cette méthode pour retourner une table PyArrow contenant les lignes d’unResultBatch.
Par exemple :