Bienvenue dans ce guide Quickstart Tasty Bytes Débuter avec Snowflake sur la collaboration ! Dans ce guide, nous allons vous montrer comment vous pouvez enrichir vos données internes avec des données météorologiques tierces via la Marketplace Snowflake. La Marketplace Snowflake vous permet de trouver, d'essayer et d'acheter des applications et données tierces, sans avoir à configurer d'ETL, de pipelines de données ou d'intégrations.
Dans ce guide Quickstart, vous allez suivre une histoire de Tasty Bytes via une feuille de calcul SQL Snowsight. Cette page, qui fait office de guide étape par étape, comprend également des commentaires, des images et des liens vers de la documentation.
Cette section vous explique comment vous connecter à Snowflake, comment créer une nouvelle feuille de calcul et la renommer, mais aussi comment copier le fichier SQL que nous allons utiliser dans ce guide Quickstart depuis GitHub et le coller.
Après analyse des données de cette année par rapport à celles de l'année dernière, les analystes financiers de Tasty Bytes nous ont fait savoir que certains jours, dans plusieurs villes, leurs camionnettes n'enregistraient aucune vente et qu'ils n'y voyaient aucune explication. Ils nous ont donné l'exemple de la ville de Hambourg, en Allemagne, en février 2022.
Commençons par exécuter trois requêtes pour définir le contexte de notre rôle et de notre entrepôt sur tasty_data_engineer
et tasty_de_wh
. Une fois le contexte défini, nous interrogerons notre vue d'analyse orders_v
pour fournir un jeu de résultats des ventes pour la ville de Hambourg, en Allemagne, en 2022.
USE ROLE tasty_data_engineer;
USE WAREHOUSE tasty_de_wh;
SELECT
o.date,
SUM(o.price) AS daily_sales
FROM frostbyte_tasty_bytes.analytics.orders_v o
WHERE 1=1
AND o.country = 'Germany'
AND o.primary_city = 'Hamburg'
AND DATE(o.order_ts) BETWEEN '2022-02-10' AND '2022-02-28'
GROUP BY o.date
ORDER BY o.date ASC;
Selon ce que nous observons ci-dessus, nous sommes d'accord avec les analystes pour dire qu'il manque les chiffres des ventes quotidiennes de certains jours du mois de février, ce qui prouve qu'ils ont bien repéré une anomalie. Voyons si nous pouvons en découvrir les raisons dans la section suivante.
D'après ce que nous avons vu dans la section précédente, il semble qu'il manque les chiffres des ventes du 16 au 21 février pour la ville de Hambourg, en Allemagne. Il n'y a pas grand-chose de plus dans nos données internes que nous pouvons utiliser pour y voir plus clair, mais il doit bien y avoir une explication.
En exploitant la Marketplace Snowflake, nous pouvons immédiatement vérifier les conditions météorologiques extrêmes en consultant l'annonce publique gratuite de Weather Source.
La Marketplace Snowflake vous permet de trouver, d'essayer et d'acheter les applications et données dont vous avez besoin pour créer des solutions professionnelles innovantes. Dans cette étape, nous allons accéder à l'annonce Weather Source LLC: frostbyte pour analyser plus en détail le recul de nos ventes à Hambourg.
Depuis votre compte Snowflake, suivez les étapes et la vidéo ci-dessous pour acquérir les données de cette annonce.
Une fois la base de données partagée frostbyte_weathersource
en place, exécutez la requête suivante pour créer une vue harmonized.daily_weather_v
associant les deux tables Weather Source et notre table sur les pays et les villes dans lesquels opèrent les food trucks de Tasty Bytes.
CREATE OR REPLACE VIEW frostbyte_tasty_bytes.harmonized.daily_weather_v
AS
SELECT
hd.*,
TO_VARCHAR(hd.date_valid_std, 'YYYY-MM') AS yyyy_mm,
pc.city_name AS city,
c.country AS country_desc
FROM frostbyte_weathersource.onpoint_id.history_day hd
JOIN frostbyte_weathersource.onpoint_id.postal_codes pc
ON pc.postal_code = hd.postal_code
AND pc.country = hd.country
JOIN frostbyte_tasty_bytes.raw_pos.country c
ON c.iso_country = hd.country
AND c.city = hd.city_name;
Comme nous le voyons dans la définition de la vue ci-dessus, nous associons deux des tables frostbyte_weathersource
dans le schéma onpoint_id
, puis nous les harmonisons avec la table country
de notre base de données frostbyte_tasty_bytes
et notre schéma raw_pos
.
Nous trouvons généralement ce type d'opération dans la couche harmonisée (également appelée zone Silver).
Avec la vue daily_weather_v
de notre schéma harmonisé en place, jetons un œil à la température quotidienne moyenne à Hambourg en février 2022 en exécutant la requête suivante.
Nous allons aussi exploiter les fonctions AVG, YEAR et MONTH.
SELECT
dw.country_desc,
dw.city_name,
dw.date_valid_std,
AVG(dw.avg_temperature_air_2m_f) AS avg_temperature_air_2m_f
FROM frostbyte_tasty_bytes.harmonized.daily_weather_v dw
WHERE 1=1
AND dw.country_desc = 'Germany'
AND dw.city_name = 'Hamburg'
AND YEAR(date_valid_std) = '2022'
AND MONTH(date_valid_std) = '2'
GROUP BY dw.country_desc, dw.city_name, dw.date_valid_std
ORDER BY dw.date_valid_std DESC;
Pour étudier plus en détail les tendances, utilisons des graphiques Snowsight pour créer un graphique linéaire de la température moyenne au fil du temps.
Selon ce que nous avons vu avant, il n'existe aucune raison évidente qui explique les jours sans vente de nos camionnettes. Voyons quelle raison nous pouvons trouver pour expliquer cette situation dans la section suivante.
Comme nous l'avons vu à l'étape précédente, la température quotidienne moyenne ne semble pas être la raison de nos jours sans vente à Hambourg. Heureusement, Weather Source fournit d'autres indicateurs météorologiques sur lesquels nous pouvons également nous pencher.
Exécutez la requête suivante qui va exploiter notre vue harmonisée pour rassembler des indicateurs relatifs au vent. Cette requête va utiliser la fonction MAX.
SELECT
dw.country_desc,
dw.city_name,
dw.date_valid_std,
MAX(dw.max_wind_speed_100m_mph) AS max_wind_speed_100m_mph
FROM frostbyte_tasty_bytes.harmonized.daily_weather_v dw
WHERE 1=1
AND dw.country_desc IN ('Germany')
AND dw.city_name = 'Hamburg'
AND YEAR(date_valid_std) = '2022'
AND MONTH(date_valid_std) = '2'
GROUP BY dw.country_desc, dw.city_name, dw.date_valid_std
ORDER BY dw.date_valid_std DESC;
De nouveau, il se peut qu'un graphique Snowsight soit plus efficace pour dégager les tendances de ce type de données. Suivez les flèches figurant sur les captures d'écran ci-dessous pour passer de l'onglet Results (Résultats) à l'onglet Charts (Graphiques).
Ah ! Les jours où nous n'avons enregistré aucune vente, la ville a connu des vents de force ouragan. Cette information peut expliquer pourquoi nos camionnettes n'ont rien vendu ces jours-là. Toutefois, étant donné que nous avons effectué cette analyse dans la vue harmonisée, mettons ces informations à disposition dans la vue d'analyse afin que nos analystes puissent y accéder eux-mêmes.
Nous avons déterminé que des vents de force ouragan ont probablement exercé une influence sur les jours sans vente, une tendance dont nos analystes financiers nous ont fait part.
Mettons désormais ce type de recherche à disposition de l'ensemble des membres de notre organisation en déployant une vue d'analyse à laquelle tous les employés de Tasty Bytes pourront accéder.
En tant qu'entreprise internationale, commençons par créer deux fonctions SQL pour convertir les degrés Fahrenheit en degrés Celsius et les pouces en millimètres.
Exécutez les deux requêtes de cette étape l'une après l'autre pour créer nos fonctions fahrenheit_to_celsius
et inch_to_millimeter
, qui utilisent la commande CREATE FUNCTION.
CREATE OR REPLACE FUNCTION frostbyte_tasty_bytes.analytics.fahrenheit_to_celsius(temp_f NUMBER(35,4))
RETURNS NUMBER(35,4)
AS
$$
(temp_f - 32) * (5/9)
$$;
CREATE OR REPLACE FUNCTION frostbyte_tasty_bytes.analytics.inch_to_millimeter(inch NUMBER(35,4))
RETURNS NUMBER(35,4)
AS
$$
inch * 25.4
$$;
Avant de déployer notre vue d'analyse, créons la fonction SQL que nous allons utiliser dans celle-ci pour combiner les données relatives aux ventes quotidiennes et les données météorologiques, mais exploitons aussi nos fonctions de conversion SQL.
Exécutez la requête suivante qui filtre la ville de Hambourg, en Allemagne, et qui exploite des fonctions que nous n'avons pas encore vues, à savoir ZEROIFNULL, ROUND et DATE.
SELECT
fd.date_valid_std AS date,
fd.city_name,
fd.country_desc,
ZEROIFNULL(SUM(odv.price)) AS daily_sales,
ROUND(AVG(fd.avg_temperature_air_2m_f),2) AS avg_temperature_fahrenheit,
ROUND(AVG(frostbyte_tasty_bytes.analytics.fahrenheit_to_celsius(fd.avg_temperature_air_2m_f)),2) AS avg_temperature_celsius,
ROUND(AVG(fd.tot_precipitation_in),2) AS avg_precipitation_inches,
ROUND(AVG(frostbyte_tasty_bytes.analytics.inch_to_millimeter(fd.tot_precipitation_in)),2) AS avg_precipitation_millimeters,
MAX(fd.max_wind_speed_100m_mph) AS max_wind_speed_100m_mph
FROM frostbyte_tasty_bytes.harmonized.daily_weather_v fd
LEFT JOIN frostbyte_tasty_bytes.harmonized.orders_v odv
ON fd.date_valid_std = DATE(odv.order_ts)
AND fd.city_name = odv.primary_city
AND fd.country_desc = odv.country
WHERE 1=1
AND fd.country_desc = 'Germany'
AND fd.city = 'Hamburg'
AND fd.yyyy_mm = '2022-02'
GROUP BY fd.date_valid_std, fd.city_name, fd.country_desc
ORDER BY fd.date_valid_std ASC;
Les résultats que nous venons de recevoir semblent optimum. Nous pouvons maintenant insérer cette fonction SQL dans une vue lors de la prochaine étape.
À l'aide de la requête précédente, nous allons devoir supprimer les filtres de la clause WHERE, ajouter une fonction COMMENT et la promouvoir dans notre schéma analytics
en tant que vue daily_city_metrics_v
.
Pour ce faire, exécutez la dernière requête de cette section.
CREATE OR REPLACE VIEW frostbyte_tasty_bytes.analytics.daily_city_metrics_v
COMMENT = 'Daily Weather Source Metrics and Orders Data for our Cities'
AS
SELECT
fd.date_valid_std AS date,
fd.city_name,
fd.country_desc,
ZEROIFNULL(SUM(odv.price)) AS daily_sales,
ROUND(AVG(fd.avg_temperature_air_2m_f),2) AS avg_temperature_fahrenheit,
ROUND(AVG(frostbyte_tasty_bytes.analytics.fahrenheit_to_celsius(fd.avg_temperature_air_2m_f)),2) AS avg_temperature_celsius,
ROUND(AVG(fd.tot_precipitation_in),2) AS avg_precipitation_inches,
ROUND(AVG(frostbyte_tasty_bytes.analytics.inch_to_millimeter(fd.tot_precipitation_in)),2) AS avg_precipitation_millimeters,
MAX(fd.max_wind_speed_100m_mph) AS max_wind_speed_100m_mph
FROM frostbyte_tasty_bytes.harmonized.daily_weather_v fd
LEFT JOIN frostbyte_tasty_bytes.harmonized.orders_v odv
ON fd.date_valid_std = DATE(odv.order_ts)
AND fd.city_name = odv.primary_city
AND fd.country_desc = odv.country
WHERE 1=1
GROUP BY fd.date_valid_std, fd.city_name, fd.country_desc;
Incroyable ! Nous avons désormais démocratisé ce type d'informations pour l'organisation Tasty Bytes. Rassemblons toutes ces informations dans la section suivante pour valider notre travail.
Les données de ventes et météorologiques étant disponibles pour toutes les villes où nos food trucks opèrent, voyons comment nous avons raccourci le délai d'analyse des analystes financiers.
Auparavant, nous devions associer manuellement les données des points de vente et celles de Weather Source pour examiner les problèmes de vente de la ville de Hambourg. Toutefois, nous avons simplifié ce processus via notre vue analytics.daily_city_metrics_v
.
Exécutez la requête suivante, qui montre à quel point nous avons simplifié cette analyse en faisant d'elle une simple instruction Select depuis une seule et même vue.
SELECT
dcm.date,
dcm.city_name,
dcm.country_desc,
dcm.daily_sales,
dcm.avg_temperature_fahrenheit,
dcm.avg_temperature_celsius,
dcm.avg_precipitation_inches,
dcm.avg_precipitation_millimeters,
dcm.max_wind_speed_100m_mph
FROM frostbyte_tasty_bytes.analytics.daily_city_metrics_v dcm
WHERE 1=1
AND dcm.country_desc = 'Germany'
AND dcm.city_name = 'Hamburg'
AND dcm.date BETWEEN '2022-02-01' AND '2022-02-26'
ORDER BY date DESC;
Oui ! Si ces données avaient été disponibles lors des recherches initiales des analystes financiers, ces derniers n'auraient pas eu besoin de faire appel aux équipes dédiées aux données puisque les informations auraient été à leur disposition.
Tout au long de ce guide Quickstart, nous avons vu comment notre travail nous permet d'optimiser réellement nos performances commerciales et à quel point il est facile d'utiliser la Marketplace Snowflake pour tirer davantage d'informations grâce aux données.
Beau travail ! Vous avez terminé le guide Quickstart Tasty Bytes Débuter avec Snowflake sur la collaboration.
Vous avez :
Si vous voulez recommencer ce guide Quickstart, utilisez les scripts de réinitialisation en bas de votre feuille de calcul associée.
Pour continuer à découvrir le Data Cloud Snowflake, cliquez sur le lien ci-dessous pour voir tous les autres guides Quickstart Powered by Tasty Bytes à votre disposition.