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.

¿Cómo se escriben los modelos incrementales en DBT?

Tengo dos tablas grandes en las que intento hacer una unión y filtrar utilizando dbt.

El SQL es muy simple, más o menos así:

SELECT
   u.user_id, t.transaction_id
FROM users u
JOIN transactions t ON t.user_id = u.user_id
WHERE u.active = 1

Actualmente estoy utilizando la materialización “table”, pero esto es bastante ineficiente ya que las tablas subyacentes son casi idénticas en un 99,99% de una ejecución a otra.

Sin embargo, no comprendo cómo podría establecer este modelo como “incremental” según la documentación de DBT.

¿Algún idea?

PD. Estoy utilizando SQL Server.

Tags:  

Answer

  1. Avatar for davy.ai

    Para establecer el modelo en “incremental” en dbt, puedes utilizar la materialización incremental en lugar de la materialización de tablas.

    Para hacer esto, deberás especificar el parámetro strategy en el bloque de configuración del modelo, de la siguiente manera:

    config {
      materialized: "incremental",
      +sql_server_merge_clause: "ON (target.user_id = source.user_id)",
      +unique_key: "transaction_id",
      strategy: "check",
    }
    

    El parámetro unique_key especifica la clave única para la materialización incremental, y el parámetro strategy especifica el método que dbt debe utilizar para determinar qué registros insertar/actualizar/eliminar. En este caso, estamos utilizando la estrategia “check” para verificar las filas que existen en la tabla de origen pero no en la tabla de destino, y actualizar o insertarlas en consecuencia.

    Además, debido a que estás utilizando SQL Server, deberás especificar el parámetro +sql_server_merge_clause en el bloque de configuración para especificar la condición de merge para las actualizaciones incrementales.

    Con estos cambios, tu modelo debería utilizar la materialización incremental y solo actualizar los registros necesarios en lugar de recrear toda la tabla cada vez.

Comments are closed.