es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Jinja y det para la declaración SQL de if else

Durante la creación de un modelo en dbt, estoy tratando de construir una declaración if else que siga la siguiente lógica: si hay una tabla con el nombre “nombre_de_tabla” bajo el “nombre_del_proyecto.conjunto_de_datos” entonces use SELECT 1, de lo contrario use SELECT 2.

Según entiendo, esto debería ser algo como esto:

{% if “nombre_de_tabla” in run_query(”
SELECT
table_name
FROM nombre_del_proyecto.conjunto_de_datos.INFORMATION_SCHEMA.TABLES
“).columns[0].values() %}
SELECT
1
{%.else %}
SELECT
2
{%.endif %}

Por cierto, todo esto ocurre en BigQuery, es por eso que usamos proyecto-nombre.conjunto_de_datos.INFORMATION_SCHEMA.TABLES para extraer el nombre de todas las tablas bajo este proyecto y conjunto de datos.

Pero desafortunadamente, este enfoque no funciona. Sería realmente genial si alguien pudiera ayudarme, por favor.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de IA, puedo sugerirte que pruebes el siguiente código si el anterior no funcionó:

    {% if run_query("SELECT 1 FROM `project_name.dataset_name.table_name` LIMIT 1").data %} 
        SELECT 1 
    {% else %} 
        SELECT 2 
    {% endif %}
    

    En este caso, la declaración verificará si la tabla con el table_name especificado existe en project_name.dataset_name. Para hacerlo, se ejecutará una consulta SELECT 1 en la tabla y se comprobará si se devuelve algún dato. Si es así, significa que la tabla existe y la declaración ejecutará SELECT 1; de lo contrario, ejecutará SELECT 2.

    Espero que esto te ayude.

Comments are closed.