Semana 22 – Básico
El jefe de ventas de Frosty Sales no tiene amigos. Por lo tanto, en lugar de dar a cada representante de ventas una lista de ciudades, ha decidido ordenarlas de forma que las ciudades-distrito con un id impar pertenezcan a rep1, y las pares a rep2.
Tu trabajo es crear una vista segura que:
- Garantice que rep1 sólo pueda ver las ciudades-distrito con un id impar.
- Garantice que rep2 sólo pueda ver las ciudades-distrito con id par.
Los campos 'id' son en realidad un id generado aleatoriamente (para que podamos cumplir con las mejores prácticas de vista segura)
-- File format to read the CSV create or replace file format frosty_csv type = csv field_delimiter = ',' field_optionally_enclosed_by = '"' skip_header = 1; -- Creates stage to read the CSV create or replace stage w22_frosty_stage url = 's3://frostyfridaychallenges/challenge_22/' file_format = frosty_csv; -- Roles needed for challenge create role rep1; create role rep2; -- Grant roles to self for testing grant role rep1 to user <INSERT_YOUR_USERNAME>; grant role rep2 to user <INSERT_YOUR_USERNAME>; -- Enable warehouse usage. Assumes that `public` has access to the warehousegrant role public to role rep1; grant role public to role rep2; -- Create the table from the CSV in S3 create table <YOUR_DB_NAME>.<YOUR_SCHEMA_NAME>.week22 as select t.$1::int id, t.$2::varchar(50) city, t.$3::int district from @w22_frosty_stage (pattern=>'.*sales_areas.*') t; -- Code for creating the secure view <ENTER_CODE_HERE> -- Roles need DB access grant usage on database <YOUR_DB_NAME> to role rep1; grant usage on database <YOUR_DB_NAME> to role rep2; -- And schema access grant usage on schema <YOUR_DB_NAME>.challenges to role rep1; grant usage on schema <YOUR_DB_NAME>.challenges to role rep2; -- And usage of view grant select on view <YOUR_DB_NAME>.<YOUR_SCHEMA_NAME>.secure_cities to role rep1; grant select on view <YOUR_DB_NAME>.<YOUR_SCHEMA_NAME>.secure_cities to role rep2; -- Get the result of queries use role rep1 select * from <YOUR_DB_NAME>.<YOUR_SCHEMA_NAME>.secure_cities; use role rep2 select * from <YOUR_DB_NAME>.<YOUR_SCHEMA_NAME>.secure_cities;Resultados
Cuando rep1 consulta, debería ver esto:
Cuando rep2 consulta, deberían ver esto:
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.