Semaine 29 - intermédiaire

Les compétences en Snowpark seront de plus en plus utiles à mesure que le temps passe, et c'est pourquoi nous vous proposons un autre défi Snowpark !

Cette semaine, nous allons créer une UDF (User-Defined Function). Vous pouvez répondre au défi en SQL, en python, en java ou en scala ! Voici votre code de démarrage. Il créera une table pour vous contenant des employés et leurs dates de début.

create or replace file format frosty_csvtype = csvskip_header = 1field_optionally_enclosed_by = '"';create stage w29_stageurl = 's3://frostyfridaychallenges/challenge_29/'file_format = frosty_csv;list @w29_stage;create table week29 asselect t.$1::int as id,t.$2::varchar(100) as first_name,t.$3::varchar(100) as surname,t.$4::varchar(250) as email,t.$5::datetime as start_datefrom @w29_stage (pattern=>'.*start_dates.*') t;

Vous devez créer une UDF qui produira une année fiscale (FY) en fonction de la date de début (start_date). La logique est que si le mois est à partir de mai, alors l'année fiscale devrait être l'année en cours + 1, sinon, l'année en cours.

Par exemple :

2022-05-13 = FY23

2022-02-11 = FY22

Une fois que vous aurez écrit votre UDF, exécutez le code suivant :

data = session.table("week29").select(col("id"),col("first_name"),col("surname"),col("email"),col("start_date"),fiscal_year("start_date").alias("fiscal_year"))data.show()

et

data.group_by("fiscal_year").agg(col("*"), "count").show()

le résultat :

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é.

Previous
Previous

Semaine 29 - Snowpark & Python

Next
Next

Semaine 28 - Applications Natives et Marketplace