Toutes les nouvelles fonctionnalités n’ont pas eu une grande annonce au Summit 2023, mais cela ne signifie pas que nous ne pouvons pas les mettre en avant !
Cette semaine, nous avons un puzzle pour vous, voyons si vous pouvez le résoudre à partir du code de démarrage :
--Create the database and schema
CREATE DATABASE F_F_WEEK_54;
CREATE SCHEMA WEEK_54;
--Create table
CREATE TABLE table_a (
id INT,
name VARCHAR,
age INT
);
CREATE TABLE table_b (
id INT,
name VARCHAR,
age INT
);
--Create date
INSERT INTO table_a (id, name, age)
VALUES
(1, 'John', 25),
(2, 'Mary', 30),
(3, 'David', 28),
(4, 'Sarah', 35),
(5, 'Michael', 32),
(6, 'Emily', 27),
(7, 'Daniel', 29),
(8, 'Olivia', 31),
(9, 'Matthew', 26),
(10, 'Sophia', 33),
(11, 'Jacob', 24),
(12, 'Emma', 29),
(13, 'Joshua', 32),
(14, 'Ava', 30),
(15, 'Andrew', 28),
(16, 'Isabella', 34),
(17, 'James', 27),
(18, 'Mia', 31),
(19, 'Logan', 25),
(20, 'Charlotte', 29);
--Create rol
CREATE ROLE week_54_role;
GRANT ROLE week_54_role to user <user_name> ;
GRANT USAGE ON database F_F_WEEK_54 TO ROLE week_54_role;
GRANT USAGE ON schema WEEK_54 TO ROLE week_54_role;
GRANT SELECT ON ALL TABLES IN SCHEMA F_F_WEEK_54.WEEK_54 TO ROLE week_54_role;
GRANT INSERT ON ALL TABLES IN SCHEMA F_F_WEEK_54.WEEK_54 TO ROLE week_54_role;
GRANT USAGE ON WAREHOUSE TO ROLE week_54_role;
Comme vous pouvez le voir, nous créons 2 tables simples et un nouveau rôle qui peut sélectionner et insérer des données dans ces tables. Nous souhaitons maintenant utiliser ce rôle pour créer et exécuter une procédure stockée pour déplacer des données de la table A vers la table B. CEPENDANT, le rôle que nous avons créé n’a pas le privilège CREATE PROCEDURE !
Le défi d’aujourd’hui est de créer et d’exécuter la procédure suivante sans accorder le privilège CREATE PROCEDURE :
CREATE OR REPLACE copy_to_table(fromTable STRING, toTable STRING, count INT) RETURNS STRING LANGUAGE PYTHON RUNTIME_VERSION = '3.8' PACKAGES =
('snowflake-snowpark-python') HANDLER = 'copyBetweenTables' AS $$ def copyBetweenTables(snowpark_session, fromTable, toTable, count): snowpark_session.table(fromTable).limit(count).write.mode("append").save_as_table(toTable) return "Success" $$ ;
Votre solution doit maintenir la procédure intacte, et ce morceau de code doit faire partie de votre solution :
CALL copy_to_table('table_a', 'table_b', 5);
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.