Estoy tratando de crear un procedimiento que elija columnas dinámicamente de dos tablas. Ya tengo una consulta codificada que funciona bien.
#Consulta existente
create table mydb.result_table as select t1.id, t1.name, t1.place, t1.product t1.prize t2.id, t2.name, t2.place, t2.product, t2.prize from source_db.source_table t1 full outer join target_db_target_table t2 on t1.id=t2.id and t1.name=t2.name where t1.place<>t2.place
Ahora necesito crear un procedimiento que básicamente seleccione la columna dinámicamente del nombre de la tabla dada y una ambas con las claves dadas
así que algo como a continuación
CREATE OR REPLACE PROCEDURE result(source_db varchar, source_table VARCHAR, targt_db varchar, target_table VARCHAR, key_join varchar<not sure can pass list>, filter_col varchar ) returns string not null language javascript as $$ var query= `create table mydb.result_table as select t1.<all columns from source_db and source_table> t2.<all columns from targt_db and target_table > from <source_db and source_table> as t1 full outer join <target_db_target_table> as t2 on <key_join> where <t1.filter_col <> t2.filter_col> ` return 'success'; $$;
no veo un ejemplo de selección dinámica de columnas para este tipo de caso de uso. ¿Alguna solución a esto?
Debe consultar el esquema de información para la lista de columnas en cada tabla y usar el resultado para construir dinámicamente su declaración SQL.
También debe tener en cuenta que el mismo nombre de columna existe en varias tablas, ya que obviamente no puede aparecer la misma columna varias veces en una tabla, por lo que deberá cambiar el nombre de las columnas dinámicamente según corresponda.
Simplemente consulta la vista INFORMACION_ESQUEMA.COLUMNAS para acceder a las columnas de la tabla y luego puedes construir tu consulta dinámicamente:
https://docs.snowflake.com/en/sql-reference/info-schema/columns.html