Cette semaine, les Fermes Frosty cherchent à créer une série de tâches (Snowflake task) chaînées – deux pour être précis ! Les fermes ont beaucoup de vaches qui produisent du lait, dont une partie est transformée en lait écrémé. Nous voulons que nos données soient transformées pour refléter le fait que le pourcentage de matières grasses du lait a un impact sur les données industrielles disponibles pour chaque lot.
Le lait écrémé subit en effet le processus de réduction des matières grasses dans une centrifugeuse. Les lignes liées à des lots de lait entier n’auront pas de colonnes liées à ce processus, mais les lignes pour les lots de lait écrémé en auront.
Créez une tâche parent et une tâche enfant qui effectueront différentes actions sur les lignes de données en fonction du pourcentage de matières grasses du lait.
Voici le squelette de script:
-- Set the database and schema
use database <insert_db_name_here>
use schema <insert_schema_name_here>
-- Create the stage that points at the data.
create stage week_11_frosty_stage
url = 's3://frostyfridaychallenges/challenge_11/'
file_format = <insert_csv_file_format;
-- Create the table as a CTAS statement.
create or replace table frosty_friday.challenges.week11 as
select m.$1 as milking_datetime,
m.$2 as cow_number,
m.$3 as fat_percentage,
m.$4 as farm_code,
m.$5 as centrifuge_start_time,
m.$6 as centrifuge_end_time,
m.$7 as centrifuge_kwph,
m.$8 as centrifuge_electricity_used,
m.$9 as centrifuge_processing_time,
m.$10 as task_used
from @week_11_frosty_stage (file_format => '<insert_csv_file_format>', pattern => '.*milk_data.*[.]csv') m;
-- TASK 1: Remove all the centrifuge dates and centrifuge kwph and replace them with NULLs WHERE fat = 3.
-- Add note to task_used.
create or replace task whole_milk_updates
schedule = '1400 minutes'
as
<insert_sql_here>
-- TASK 2: Calculate centrifuge processing time (difference between start and end time) WHERE fat != 3.
-- Add note to task_used.
create or replace task skim_milk_updates
after frosty_friday.challenges.whole_milk_updates
as
<insert_sql_here>
-- Manually execute the task.
execute task whole_milk_updates;
-- Check that the data looks as it should.
select * from week11;
-- Check that the numbers are correct.
select task_used, count(*) as row_count from week11 group by task_used;
RÉSULTAT
Lorsque vous exécutez la première requête, les données à 3 % de matières grasses devraient ressembler à ceci :
Et les lignes non à 3 % devraient ressembler à ceci :
La deuxième requête devrait produire quelque chose comme :
Et n’oubliez pas, si vous souhaitez participer aux défis:
1. Inscrivez-vous en tant que membre de Frosty Friday. –> Vous pouvez le faire en cliquant sur la barre latérale, puis en cliquant sur ‘REGISTER‘ (notez que s’inscrire à notre liste de diffusion ne vous donne pas de compte Frosty Friday).
2. Publiez votre code sur GitHub et rendez-le accessible au public (consultez notre guide si vous ne savez pas comment faire, disponible ici)
3. Postez l’URL dans les commentaires du défi.
Si vous avez des questions techniques que vous souhaitez poser à la communauté, vous pouvez les poser ici, sur notre thread dédié.
Laisser un commentaire
Vous devez vous connecter pour publier un commentaire.