Semana 52 – Intermedio
En el último Snowflake Summit , la Tabla Dinámica fue uno de los grandes anuncios. Este tipo de tabla añade otra opción a la lista de Streams y Materialized Views.
Nos gustaría que utilizara nuestra función de inicio para afrontar este reto a toda velocidad. La función crea una tabla si aún no existe y la llena de datos si ya existe. Perfecta para nuestro reto (y una función decente en la que "inspirarse")
CREATE OR REPLACE PROCEDURE check_and_generate_data(tableName STRING) RETURNS STRING LANGUAGE JAVASCRIPT EXECUTE AS CALLER AS $$ try { var tableName = TABLENAME; var command1 = `SELECT count(*) as count FROM information_schema.tables WHERE table_schema = CURRENT_SCHEMA() AND table_name = '${tableName.toUpperCase()}'`; var statement1 = snowflake.createStatement({sqlText: command1}); var result_set1 = statement1.execute(); result_set1.next(); var count = result_set1.getColumnValue('COUNT'); if (count == 0) { var command2 = `CREATE TABLE ${tableName} (payload VARIANT, ingested_at TIMESTAMP_NTZ default CURRENT_TIMESTAMP())`; var statement2 = snowflake.createStatement({sqlText: command2}); statement2.execute(); return `Table ${tableName} has been created.`; } else { for(var i=0; i<40; i++) { var jsonObject = { "id": i, "name": "Name_" + i, "address": "Address_" + i, "email": "email_" + i + "@example.com", "transactionValue": Math.floor(Math.random() * 10000) + 1 }; var jsonString = JSON.stringify(jsonObject); var command3 = `INSERT INTO ${tableName} (payload) SELECT PARSE_JSON(column1) FROM VALUES ('${jsonString}')`; var statement3 = snowflake.createStatement({sqlText: command3}); statement3.execute(); } return `40 records have been inserted into the ${tableName} table.`; } } catch (err) { return "Failed: " + err; } $$;El reto de esta semana consiste en utilizar una tabla dinámica para crear los siguientes resultados:
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.