Skip to content

Estudiar parámetro union_by_name en read_parquet #181

Description

@GregorioBlazquez

Tengo una duda, si dejamos un FDA particionado con SELECT * y se realiza un cambio de versión en las tablas (añadiendo una columna nueva):

• Las particiones anteriores no tendrán esa columna.
• Las particiones nuevas de la última ventana sí la tendrán.
• Si una consulta analítica (DA) intenta seleccionar esta nueva columna, ¿como se comportara la consulta actualmente?
(o si se elimina o renombra una columna de la tabla que usa un FDA con SELECT *, si el DA tiene una consulta valida, que consulta todo el historico, funciona normal?)

para ver si conviene o no eliminar el fda, si las tablas de la base de datos cambian su esquema, es obligatorio regenerar el FDA para que todas las particiones históricas se actualicen?

@JuanMartinP , @GregorioBlazquez

Originally posted by @orianar in #1604

Consultando la documentación de DuckDB hay un parámetro (union_by_name) que permite ese tipo de situaciones.

Con este parámetro a true en caso de renombrado, añadir o eliminar columnas no habría problema pues se mostrarían la antigua con sus datos y los que no tiene a NULL y la nueva con sus datos y los que no tiene a NULL. Pueden consultarse ejemplos en la siguiente documentación de DuckDB.

Actualmente no usamos ese parámetro, por defecto no está activado y aunque no hemos llegado a probarlo debería fallar una consulta así en la que haya diferentes esquemas en diferentes particiones. Deberíamos estudiar si activar este flag y sus consecuencias.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions