No todas las novedades tuvieron un gran anuncio en la Cumbre 2023, ¡pero eso no significa que no podamos destacarlas!
Esta semana tenemos un acertijo para que lo resuelvas y, sin estropearlo todo, veamos si puedes resolver el acertijo a partir del código inicial:
Código de inicio
-- Crear la base de datos y el esquema
CREATE DATABASE F_F_WEEK_54;
CREATE SCHEMA WEEK_54;
--Crear la tabla
CREATE TABLE table_a (
id INT,
name VARCHAR,
age INT
);
CREATE TABLE table_b (
id INT,
name VARCHAR,
age INT
);
--Crear la fecha
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);
--Crear el 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;
Como puede ver, creamos 2 tablas simples y un nuevo rol que podemos seleccionar e insertar desde estas tablas. Ahora deseamos usar ese rol para crear y ejecutar un procedimiento almacenado para mover datos de la tabla A a la tabla B. SIN EMBARGO, el rol que hemos creado no tiene el privilegio CREAR PROCEDIMIENTO.
El desafío de hoy es crear y ejecutar el siguiente procedimiento sin otorgar el privilegio CREAR PROCEDIMIENTO:
Procedimiento
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" $$ ;
Su solución debe mantener el procedimiento intacto y este fragmento de código debe ser parte de su solución:
CALL copy_to_table('table_a', 'table_b', 5);
Recuerda que si deseas participar:
- Regístrate como miembro de Frosty Friday. Puedes hacerlo haciendo clic en la barra lateral y luego yendo a «REGISTRARSE» (ten en cuenta que unirte a nuestra lista de correo no te proporcionará una cuenta de Frosty Friday).
- Publica tu código en GitHub y asegúrate de que sea de acceso público (consulta nuestra guía si no sabes cómo hacerlo).
- Publica la URL en los comentarios del desafío.
Si tienes alguna pregunta técnica que te gustaría plantear a la comunidad, puedes hacerlo aquí, en nuestro hilo dedicado a estos retos.