Exécuter Python dans Tableau avec Snowflake

March 30, 2026
January 10, 2023
5
min read

Présentation

Les fonctions définies par l'utilisateur (UDF) de Python sont désormais disponibles dans la version préliminaire publique de Snowflake. Ils vous permettent d'écrire du code Python et de l'appeler dans l'interface utilisateur de Snowflake, comme si vous écriviez et exécutiez des requêtes SQL.

Bien qu'il soit probable que la plupart des utilisateurs de Snowflake soient plus familiarisés avec SQL qu'avec Python, l'utilisation des UDF Python présente plusieurs avantages. Selon La documentation de Snowflake, les UDF Python sont particulièrement appropriés si :

  • Vous avez déjà du code Python (source ou compilé) que vous pouvez réutiliser.
  • Votre code utilise des fonctions qui existent déjà dans les packages Python standard.
  • Vous connaissez Python aussi bien, voire mieux, que les autres langages supportant les UDF.
  • Vous souhaitez tirer parti du riche écosystème tiers de Python.

Le fait de pouvoir tirer parti de la polyvalence de Python en tant que langage de programmation au sein de la plateforme Snowflake ouvre un monde de possibilités. Nous explorerons certaines des possibilités dans cet article de blog, à l'aide d'exemples simples.

En outre, étant donné que les UDF Python sont appelés via une requête SQL, nous allons également montrer ici comment utiliser Tableau pour appeler ces fonctions dans Snowflake. Il s'agit d'une fonctionnalité intéressante qui permet aux utilisateurs finaux sans connaissances en programmation de tirer parti de la puissance du code Python préexistant, dans un environnement de visualisation sans code qu'ils connaissent mieux.

Suivez-moi

Si vous souhaitez bénéficier d'une expérience plus pratique et avoir la possibilité d'utiliser Tableau, vous pouvez configurer un Compte d'essai Snowflake et suivez nos exemples.

Vous pourriez également trouver utile de lire nos précédents articles de blog : « Du JSON à l'analyse avec Snowflake » et « Écrire dans Snowflake à l'aide de Tableau Prep » - pour une introduction à Snowflake et un aperçu du chargement des données.

Configuration initiale

Nous allons commencer par configurer l'environnement de notre compte d'essai Snowflake, avec la création d'un entrepôt, d'une base de données et d'une table avec une seule colonne fictive :

CREATE OR REPLACE WAREHOUSE my_warehouse WAREHOUSE_SIZE = 'LARGE' AUTO_SUSPEND = 60 AUTO_RESUME = TRUE;
USE WAREHOUSE my_warehouse;
CREATE OR REPLACE DATABASE my_database;
USE DATABASE my_database;
USE SCHEMA public;
CREATE OR REPLACE TABLE sales (dummy int);

Nous allons jouer avec le célèbre jeu de données Superstore de Tableau, que nous chargerons dans notre nouvelle base de données Snowflake à l'aide de Tableau Prep Builder et en suivant les instructions de notre article de blog précédent « Écrire dans Snowflake à l'aide de Tableau Prep ». Laissons donc Tableau Prep Builder et ouvrons le flux d'exemples Superstore disponible en bas de la fenêtre :

Pour simplifier les choses, nous inscrirons les commandes de l'USCA uniquement sur notre tableau des ventes Snowflake. Nous avons donc légèrement modifié le flux d'échantillonnage de Superstore et ajouté une nouvelle étape de sortie au point pertinent, où nous avons renseigné les informations de notre compte d'essai Snowflake :

Une fois cette nouvelle étape de sortie exécutée, une simple instruction de sélection dans Snowflake indique que notre tableau est rempli de données de vente :

SELECT * FROM sales LIMIT 10;

Notre objectif est maintenant d'analyser les données de ventes en termes de vacances. Par exemple, nous voulons essayer de répondre à la question suivante : vendons-nous plus pendant les fêtes de fin d'année ? Notre base de données ne contient pas immédiatement les informations nécessaires pour répondre à cette question. Nous connaissons les dates auxquelles les commandes ont été passées, mais tous les jours fériés ne sont pas fixes chaque année. De plus, nous savons dans quels États des États-Unis les commandes ont été passées, mais tous les États n'observent pas les mêmes jours fériés.

UDF Python dans Snowflake

Snowflake s'est associé à Anaconda pour fournir plusieurs packages Python tiers open source, à utiliser prêts à l'emploi dans Snowflake sans frais supplémentaires. Pour utiliser ces packages, vous devez prendre connaissance des conditions relatives aux tiers de Snowflake en suivant les instructions ici sur votre interface utilisateur Snowflake. En particulier :

  1. Cliquez sur le menu déroulant à côté de votre nom de connexion, puis cliquez sur Changer de rôle > ORGADMIN pour passer au rôle d'administrateur de l'organisation.
  2. Cliquez sur Administration > Facturation > Conditions et facturation.
  3. Accédez à la section Anaconda et cliquez sur le bouton Activer. La boîte de dialogue Anaconda Packages (fonctionnalité de prévisualisation) s'ouvre.
  4. Cliquez sur le lien pour consulter les conditions relatives aux tiers de Snowflake.
  5. Si vous acceptez les conditions, cliquez sur le bouton Accepter et continuer.

Une fois que vous avez suivi toutes les étapes, n'oubliez pas de revenir au rôle que vous utilisiez auparavant.

De retour dans notre feuille de travail, nous utiliserons une requête SQL pour indiquer quels packages Python sont disponibles :

SELECT * FROM INFORMATION_SCHEMA.packages WHERE LANGUAGE = 'python';

L'un des forfaits disponibles est vacances, une bibliothèque Python rapide et efficace permettant de générer des jours fériés spécifiques à un pays, une province et un État, ce qui permet de déterminer facilement si une date spécifiée est un jour férié. Comme vous pouvez le voir dans la documentation (vérifiez toujours quelle version du package est disponible dans Snowflake et consultez la documentation de cette version), l'utilisation de ce package est simple. Voici quelques exemples de lignes de code :

import holidays
us_pr_holidays = holidays.UnitedStates(state='PR') # or holidays.US(...)
us_pr_holidays.get('2014-01-01')  # "New Year's Day"
'2018-01-06' in us_pr_holidays  # True

Examinons maintenant la syntaxe de base pour créer un UDF python dans Snowflake (gardez à l'esprit que les arguments, les packages et les importations sont facultatifs) :

CREATE OR REPLACE FUNCTION <UDFname>(<argument list>)
RETURNS <data type>
LANGUAGE python
RUNTIME_VERSION = '3.8'
PACKAGES = (‘<package list>’)
IMPORTS = (‘<files on a stage>’)
HANDLER = '<Python function name>'
AS $$
def <Python function name> (<arguments>):
	# your Python code goes here
return <output>
$$;

Pour appeler cette fonction dans Snowflake, il vous suffit d'exécuter la requête SQL suivante dans une feuille de travail :

SELECT <UDFname>(<argument list>);

À ce stade, nous disposons de tous les ingrédients nécessaires pour créer un UDF qui utilise le forfait vacances pour nous indiquer si une date spécifique est un jour férié dans un État américain spécifique :

CREATE OR REPLACE FUNCTION holiday(mydate STRING, mystate STRING)
RETURNS string
LANGUAGE python
RUNTIME_VERSION = 3.8
PACKAGES = ('holidays')
HANDLER = 'id_holiday'
AS $$
import holidays
def id_holiday(mydate, mystate):
	us_holidays = holidays.US(state=mystate)
    return us_holidays.get(mydate)
$$;

Voici un exemple de sortie pour quelques dates et états :

SELECT holiday('31-03-2022', 'CA'), holiday('31-03-2022', 'MI'), holiday('19-06-2022', 'MI');

Nous ne sommes pas encore tout à fait prêts à utiliser ce nouvel UDF pour nos données de ventes. Comme vous pouvez le constater, le forfait vacances utilise le code à deux lettres correspondant aux États-Unis comme argument, et non le nom complet, qui est disponible dans notre tableau des ventes. Ainsi, pour utiliser le forfait vacances sur nos données de vente, nous devons d'abord traduire les noms des États. Pour cela, nous utiliserons à nouveau Python.

Voici un simple dictionnaire python que vous pouvez trouver en ligne dans ce but précis. Vous pouvez télécharger le dictionnaire et le placer n'importe où sur votre ordinateur. Dans notre exemple, nous l'avons placé dans un dossier temporaire : C:\temp\us_state_abbrev.py. Pour rendre ce dictionnaire disponible dans Snowflake, nous devons le télécharger sur une scène en utilisant Snow SQL, le client de ligne de commande de Snowflake.

Pour simplifier les choses, nous avons téléchargé le fichier directement sur la scène utilisateur (pas besoin de créer une nouvelle étape dédiée). Nous avons également veillé à utiliser AUTO_COMPRESS = FALSE, pour pouvoir utiliser le dictionnaire directement dans l'UDF :

PUT file://C:\temp\us_state_abbrev.py @~ AUTO_COMPRESS = FALSE OVERWRITE = TRUE;

De retour dans la feuille de travail Snowflake, nous pouvons voir que le fichier est disponible dans notre phase utilisateur :

LIST @~;

Nous pouvons maintenant écrire un nouvel UDF Python qui importe le dictionnaire depuis la scène et l'utilise pour traduire le nom de l'État américain dans ses codes à deux lettres correspondants (si le nom de l'État n'existe pas dans le dictionnaire, ce qui est possible car notre tableau des ventes contient des données du Canada, nous récupérerons simplement le nom de l'État) :

CREATE OR REPLACE FUNCTION us_state_code(state string)
RETURNS string
LANGUAGE python
RUNTIME_VERSION = 3.8
IMPORTS = ('@~/us_state_abbrev.py')
HANDLER = 'get_code'
AS $$
import us_state_abbrev
def get_code(state):
	code = ''
	if state in us_state_abbrev.us_state_to_abbrev:
		code = us_state_abbrev.us_state_to_abbrev[state]
	else:
		code = state
	return code
$$;

Nous pouvons tester notre nouvel UDF directement à partir des données de notre tableau des ventes. Vous pouvez voir que nous utilisons l'UDF pour traduire les données de la colonne « État/Province » : Californie en Californie, Wisconsin en WI, Utah en UT, etc. :

SELECT "Order ID", "Sales", "Order Date", "State/Province", us_state_code("State/Province") AS "State Code" FROM sales LIMIT 10;

Maintenant que nous avons les codes à deux lettres pour les États-Unis, nous pouvons utiliser notre UDF des fêtes sur les données de vente. Voici un exemple de requête qui nous permet déjà de repérer une vente dans le Wisconsin à l'occasion de la Journée des anciens combattants :

WITH sales_coded AS(
	SELECT "Order ID", "Sales", "Order Date", "State/Province", us_state_code("State/Province") AS "State Code"
	FROM sales)
SELECT "Order ID", "Sales", "Order Date", "State/Province", "State Code", holiday("Order Date", "State Code")
FROM sales_coded
LIMIT 10;

Exécution d'UDF Python dans Snowflake via Tableau

Nous passerons à Tableau Desktop pour la suite de cet exercice. Là, nous pouvons nous connecter à notre compte Snowflake et importer le tableau des ventes pour analyse. Aux fins de cet exercice, nous allons ajouter un filtre de source de données pour nous concentrer sur les ventes en provenance des États-Unis :

Voici un graphique à barres simple montrant la somme des ventes dans chaque État américain :

Essayons maintenant d'appeler nos UDF Snowflake Python à l'aide de Tableau. Pour cela, nous utiliserons Fonctions SQL intermédiaires de Tableau, qui nous permettent d'envoyer des expressions SQL directement à la base de données. Par exemple :

RAWSQL_STR("select public.us_state_code(%1)", [State/Province])

Ce calcul simple utilise la fonction RAWSQL_STR de Tableau pour envoyer la requête SQL suivante à Snowflake :

SELECT public.us_state_code(%1)

où « public » spécifie le schéma de la base de données (cela doit être spécifié), et « %1 » spécifie une valeur dans la base de données, dans notre cas le nom de l'état. Il s'agit exactement de la même requête que nous utiliserions dans la feuille de travail Snowflake.

Si nous ajoutons le champ calculé par code d'État à notre graphique à barres (dans les marques de texte), nous obtenons ce qui suit :

Gardez à l'esprit que le code de l'État lui-même n'existe pas dans nos données. Nous utilisons Tableau pour exécuter du code python dans Snowflake qui traduit le nom de l'état (qui existe dans notre tableau) en code d'état !

Nous pouvons faire quelque chose de similaire et utiliser l'UDF des jours fériés pour récupérer les jours fériés en fonction du code de l'État et de la date de commande :

RAWSQL_str(    "select public.holiday(%1,%2)", str([Order Date]), [State code])

Avec quelques calculs supplémentaires, nous pouvons modifier notre visualisation d'origine pour afficher les ventes quotidiennes moyennes dans chaque État, réparties en jours fériés et non fériés :

not ISNULL([Holiday])
AVG({ FIXED [Order Date], [State/Province]: sum([Sales])})

Ce nouveau graphique à barres montre que des États tels que la Californie et New York réalisent, en moyenne, plus de ventes quotidiennes pendant les fêtes. En revanche, des États comme la Virginie et le Michigan réalisent en moyenne beaucoup moins de ventes pendant les vacances :

Nous pouvons effectuer une autre visualisation simple à l'aide de notre champ Vacances précédemment calculé, pour découvrir quelles vacances sont les plus populaires. Ce graphique montre que le jour du scrutin, le lendemain de Thanksgiving et le jour de Noël sont des jours particulièrement populaires, où les ventes quotidiennes moyennes dans chaque État sont les plus élevées :

Encore une fois, gardez à l'esprit que les jours fériés ne figurent pas sur notre tableau de vente original. Ce sont des informations obtenues par le biais du code Python dans Snowflake que nous ne voyons pas et avec lesquelles nous interagissons uniquement via Tableau !

J'espère que vous pourrez suivre. N'hésitez pas à envoyer vos commentaires ou questions à info@argusa.ch.

Tableau
Snowflake
Tableau
Snowflake
Tableau
Snowflake

Présentation

Les fonctions définies par l'utilisateur (UDF) de Python sont désormais disponibles dans la version préliminaire publique de Snowflake. Ils vous permettent d'écrire du code Python et de l'appeler dans l'interface utilisateur de Snowflake, comme si vous écriviez et exécutiez des requêtes SQL.

Bien qu'il soit probable que la plupart des utilisateurs de Snowflake soient plus familiarisés avec SQL qu'avec Python, l'utilisation des UDF Python présente plusieurs avantages. Selon La documentation de Snowflake, les UDF Python sont particulièrement appropriés si :

  • Vous avez déjà du code Python (source ou compilé) que vous pouvez réutiliser.
  • Votre code utilise des fonctions qui existent déjà dans les packages Python standard.
  • Vous connaissez Python aussi bien, voire mieux, que les autres langages supportant les UDF.
  • Vous souhaitez tirer parti du riche écosystème tiers de Python.

Le fait de pouvoir tirer parti de la polyvalence de Python en tant que langage de programmation au sein de la plateforme Snowflake ouvre un monde de possibilités. Nous explorerons certaines des possibilités dans cet article de blog, à l'aide d'exemples simples.

En outre, étant donné que les UDF Python sont appelés via une requête SQL, nous allons également montrer ici comment utiliser Tableau pour appeler ces fonctions dans Snowflake. Il s'agit d'une fonctionnalité intéressante qui permet aux utilisateurs finaux sans connaissances en programmation de tirer parti de la puissance du code Python préexistant, dans un environnement de visualisation sans code qu'ils connaissent mieux.

Suivez-moi

Si vous souhaitez bénéficier d'une expérience plus pratique et avoir la possibilité d'utiliser Tableau, vous pouvez configurer un Compte d'essai Snowflake et suivez nos exemples.

Vous pourriez également trouver utile de lire nos précédents articles de blog : « Du JSON à l'analyse avec Snowflake » et « Écrire dans Snowflake à l'aide de Tableau Prep » - pour une introduction à Snowflake et un aperçu du chargement des données.

Configuration initiale

Nous allons commencer par configurer l'environnement de notre compte d'essai Snowflake, avec la création d'un entrepôt, d'une base de données et d'une table avec une seule colonne fictive :

CREATE OR REPLACE WAREHOUSE my_warehouse WAREHOUSE_SIZE = 'LARGE' AUTO_SUSPEND = 60 AUTO_RESUME = TRUE;
USE WAREHOUSE my_warehouse;
CREATE OR REPLACE DATABASE my_database;
USE DATABASE my_database;
USE SCHEMA public;
CREATE OR REPLACE TABLE sales (dummy int);

Nous allons jouer avec le célèbre jeu de données Superstore de Tableau, que nous chargerons dans notre nouvelle base de données Snowflake à l'aide de Tableau Prep Builder et en suivant les instructions de notre article de blog précédent « Écrire dans Snowflake à l'aide de Tableau Prep ». Laissons donc Tableau Prep Builder et ouvrons le flux d'exemples Superstore disponible en bas de la fenêtre :

Pour simplifier les choses, nous inscrirons les commandes de l'USCA uniquement sur notre tableau des ventes Snowflake. Nous avons donc légèrement modifié le flux d'échantillonnage de Superstore et ajouté une nouvelle étape de sortie au point pertinent, où nous avons renseigné les informations de notre compte d'essai Snowflake :

Une fois cette nouvelle étape de sortie exécutée, une simple instruction de sélection dans Snowflake indique que notre tableau est rempli de données de vente :

SELECT * FROM sales LIMIT 10;

Notre objectif est maintenant d'analyser les données de ventes en termes de vacances. Par exemple, nous voulons essayer de répondre à la question suivante : vendons-nous plus pendant les fêtes de fin d'année ? Notre base de données ne contient pas immédiatement les informations nécessaires pour répondre à cette question. Nous connaissons les dates auxquelles les commandes ont été passées, mais tous les jours fériés ne sont pas fixes chaque année. De plus, nous savons dans quels États des États-Unis les commandes ont été passées, mais tous les États n'observent pas les mêmes jours fériés.

UDF Python dans Snowflake

Snowflake s'est associé à Anaconda pour fournir plusieurs packages Python tiers open source, à utiliser prêts à l'emploi dans Snowflake sans frais supplémentaires. Pour utiliser ces packages, vous devez prendre connaissance des conditions relatives aux tiers de Snowflake en suivant les instructions ici sur votre interface utilisateur Snowflake. En particulier :

  1. Cliquez sur le menu déroulant à côté de votre nom de connexion, puis cliquez sur Changer de rôle > ORGADMIN pour passer au rôle d'administrateur de l'organisation.
  2. Cliquez sur Administration > Facturation > Conditions et facturation.
  3. Accédez à la section Anaconda et cliquez sur le bouton Activer. La boîte de dialogue Anaconda Packages (fonctionnalité de prévisualisation) s'ouvre.
  4. Cliquez sur le lien pour consulter les conditions relatives aux tiers de Snowflake.
  5. Si vous acceptez les conditions, cliquez sur le bouton Accepter et continuer.

Une fois que vous avez suivi toutes les étapes, n'oubliez pas de revenir au rôle que vous utilisiez auparavant.

De retour dans notre feuille de travail, nous utiliserons une requête SQL pour indiquer quels packages Python sont disponibles :

SELECT * FROM INFORMATION_SCHEMA.packages WHERE LANGUAGE = 'python';

L'un des forfaits disponibles est vacances, une bibliothèque Python rapide et efficace permettant de générer des jours fériés spécifiques à un pays, une province et un État, ce qui permet de déterminer facilement si une date spécifiée est un jour férié. Comme vous pouvez le voir dans la documentation (vérifiez toujours quelle version du package est disponible dans Snowflake et consultez la documentation de cette version), l'utilisation de ce package est simple. Voici quelques exemples de lignes de code :

import holidays
us_pr_holidays = holidays.UnitedStates(state='PR') # or holidays.US(...)
us_pr_holidays.get('2014-01-01')  # "New Year's Day"
'2018-01-06' in us_pr_holidays  # True

Examinons maintenant la syntaxe de base pour créer un UDF python dans Snowflake (gardez à l'esprit que les arguments, les packages et les importations sont facultatifs) :

CREATE OR REPLACE FUNCTION <UDFname>(<argument list>)
RETURNS <data type>
LANGUAGE python
RUNTIME_VERSION = '3.8'
PACKAGES = (‘<package list>’)
IMPORTS = (‘<files on a stage>’)
HANDLER = '<Python function name>'
AS $$
def <Python function name> (<arguments>):
	# your Python code goes here
return <output>
$$;

Pour appeler cette fonction dans Snowflake, il vous suffit d'exécuter la requête SQL suivante dans une feuille de travail :

SELECT <UDFname>(<argument list>);

À ce stade, nous disposons de tous les ingrédients nécessaires pour créer un UDF qui utilise le forfait vacances pour nous indiquer si une date spécifique est un jour férié dans un État américain spécifique :

CREATE OR REPLACE FUNCTION holiday(mydate STRING, mystate STRING)
RETURNS string
LANGUAGE python
RUNTIME_VERSION = 3.8
PACKAGES = ('holidays')
HANDLER = 'id_holiday'
AS $$
import holidays
def id_holiday(mydate, mystate):
	us_holidays = holidays.US(state=mystate)
    return us_holidays.get(mydate)
$$;

Voici un exemple de sortie pour quelques dates et états :

SELECT holiday('31-03-2022', 'CA'), holiday('31-03-2022', 'MI'), holiday('19-06-2022', 'MI');

Nous ne sommes pas encore tout à fait prêts à utiliser ce nouvel UDF pour nos données de ventes. Comme vous pouvez le constater, le forfait vacances utilise le code à deux lettres correspondant aux États-Unis comme argument, et non le nom complet, qui est disponible dans notre tableau des ventes. Ainsi, pour utiliser le forfait vacances sur nos données de vente, nous devons d'abord traduire les noms des États. Pour cela, nous utiliserons à nouveau Python.

Voici un simple dictionnaire python que vous pouvez trouver en ligne dans ce but précis. Vous pouvez télécharger le dictionnaire et le placer n'importe où sur votre ordinateur. Dans notre exemple, nous l'avons placé dans un dossier temporaire : C:\temp\us_state_abbrev.py. Pour rendre ce dictionnaire disponible dans Snowflake, nous devons le télécharger sur une scène en utilisant Snow SQL, le client de ligne de commande de Snowflake.

Pour simplifier les choses, nous avons téléchargé le fichier directement sur la scène utilisateur (pas besoin de créer une nouvelle étape dédiée). Nous avons également veillé à utiliser AUTO_COMPRESS = FALSE, pour pouvoir utiliser le dictionnaire directement dans l'UDF :

PUT file://C:\temp\us_state_abbrev.py @~ AUTO_COMPRESS = FALSE OVERWRITE = TRUE;

De retour dans la feuille de travail Snowflake, nous pouvons voir que le fichier est disponible dans notre phase utilisateur :

LIST @~;

Nous pouvons maintenant écrire un nouvel UDF Python qui importe le dictionnaire depuis la scène et l'utilise pour traduire le nom de l'État américain dans ses codes à deux lettres correspondants (si le nom de l'État n'existe pas dans le dictionnaire, ce qui est possible car notre tableau des ventes contient des données du Canada, nous récupérerons simplement le nom de l'État) :

CREATE OR REPLACE FUNCTION us_state_code(state string)
RETURNS string
LANGUAGE python
RUNTIME_VERSION = 3.8
IMPORTS = ('@~/us_state_abbrev.py')
HANDLER = 'get_code'
AS $$
import us_state_abbrev
def get_code(state):
	code = ''
	if state in us_state_abbrev.us_state_to_abbrev:
		code = us_state_abbrev.us_state_to_abbrev[state]
	else:
		code = state
	return code
$$;

Nous pouvons tester notre nouvel UDF directement à partir des données de notre tableau des ventes. Vous pouvez voir que nous utilisons l'UDF pour traduire les données de la colonne « État/Province » : Californie en Californie, Wisconsin en WI, Utah en UT, etc. :

SELECT "Order ID", "Sales", "Order Date", "State/Province", us_state_code("State/Province") AS "State Code" FROM sales LIMIT 10;

Maintenant que nous avons les codes à deux lettres pour les États-Unis, nous pouvons utiliser notre UDF des fêtes sur les données de vente. Voici un exemple de requête qui nous permet déjà de repérer une vente dans le Wisconsin à l'occasion de la Journée des anciens combattants :

WITH sales_coded AS(
	SELECT "Order ID", "Sales", "Order Date", "State/Province", us_state_code("State/Province") AS "State Code"
	FROM sales)
SELECT "Order ID", "Sales", "Order Date", "State/Province", "State Code", holiday("Order Date", "State Code")
FROM sales_coded
LIMIT 10;

Exécution d'UDF Python dans Snowflake via Tableau

Nous passerons à Tableau Desktop pour la suite de cet exercice. Là, nous pouvons nous connecter à notre compte Snowflake et importer le tableau des ventes pour analyse. Aux fins de cet exercice, nous allons ajouter un filtre de source de données pour nous concentrer sur les ventes en provenance des États-Unis :

Voici un graphique à barres simple montrant la somme des ventes dans chaque État américain :

Essayons maintenant d'appeler nos UDF Snowflake Python à l'aide de Tableau. Pour cela, nous utiliserons Fonctions SQL intermédiaires de Tableau, qui nous permettent d'envoyer des expressions SQL directement à la base de données. Par exemple :

RAWSQL_STR("select public.us_state_code(%1)", [State/Province])

Ce calcul simple utilise la fonction RAWSQL_STR de Tableau pour envoyer la requête SQL suivante à Snowflake :

SELECT public.us_state_code(%1)

où « public » spécifie le schéma de la base de données (cela doit être spécifié), et « %1 » spécifie une valeur dans la base de données, dans notre cas le nom de l'état. Il s'agit exactement de la même requête que nous utiliserions dans la feuille de travail Snowflake.

Si nous ajoutons le champ calculé par code d'État à notre graphique à barres (dans les marques de texte), nous obtenons ce qui suit :

Gardez à l'esprit que le code de l'État lui-même n'existe pas dans nos données. Nous utilisons Tableau pour exécuter du code python dans Snowflake qui traduit le nom de l'état (qui existe dans notre tableau) en code d'état !

Nous pouvons faire quelque chose de similaire et utiliser l'UDF des jours fériés pour récupérer les jours fériés en fonction du code de l'État et de la date de commande :

RAWSQL_str(    "select public.holiday(%1,%2)", str([Order Date]), [State code])

Avec quelques calculs supplémentaires, nous pouvons modifier notre visualisation d'origine pour afficher les ventes quotidiennes moyennes dans chaque État, réparties en jours fériés et non fériés :

not ISNULL([Holiday])
AVG({ FIXED [Order Date], [State/Province]: sum([Sales])})

Ce nouveau graphique à barres montre que des États tels que la Californie et New York réalisent, en moyenne, plus de ventes quotidiennes pendant les fêtes. En revanche, des États comme la Virginie et le Michigan réalisent en moyenne beaucoup moins de ventes pendant les vacances :

Nous pouvons effectuer une autre visualisation simple à l'aide de notre champ Vacances précédemment calculé, pour découvrir quelles vacances sont les plus populaires. Ce graphique montre que le jour du scrutin, le lendemain de Thanksgiving et le jour de Noël sont des jours particulièrement populaires, où les ventes quotidiennes moyennes dans chaque État sont les plus élevées :

Encore une fois, gardez à l'esprit que les jours fériés ne figurent pas sur notre tableau de vente original. Ce sont des informations obtenues par le biais du code Python dans Snowflake que nous ne voyons pas et avec lesquelles nous interagissons uniquement via Tableau !

J'espère que vous pourrez suivre. N'hésitez pas à envoyer vos commentaires ou questions à info@argusa.ch.

By clicking “Accept All Cookies”, you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts. View our Privacy Policy for more information.