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.

¿Podemos realizar Transformación en Druid?

Tengo un escenario en el que recibiré datos en archivos CSV y necesito generar algunas columnas con las existentes.
Ejemplo:

Col_1 Col_2 Col_3 Col_4
abc 1 No 123
xyz 2 Yes 123
def 1 Yes 345

Esperado:

Col_1 Col_2 Col_3 Col_4 Col_5 Col_6
abc 1 No 123 1 1
xyz 2 Yes 123 0 0
def 1 Yes 345 0 0

Condición de Col_5: si Col_1 = ‘abc’ entonces 1 else 0 end
Condición de Col_6: max(Col_5) over (Col_2)

Sé que podemos realizar transformaciones en Druid al cargar el archivo en él, intenté una condición más simple que funciona bien para mí, pero tengo muchas dudas para realizar la agregación y otras transformaciones como Col_6 aquí.

También necesitamos realizar una agregación en los datos de diferentes archivos que recibiremos. Supongamos que hoy recibimos 2 archivos y cargamos los datos en una tabla de Druid. Mañana recibimos otros 3 archivos que tienen datos para el mismo (ID) que es Col_2 aquí, luego debemos hacer la agregación en base a todos los registros que tengamos, por ejemplo, la generación de Col_6 aquí…

¿Será posible hacer esto en Druid?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible realizar estas transformaciones y agregaciones en Druid. Druid proporciona varias funciones integradas para realizar dichas transformaciones y agregaciones en los datos.
    Para generar Col_5, puedes utilizar la expresión “dimension”, que te permite transformar una columna en otra columna basándote en una cierta condición. La expresión para Col_5 será:

    "expr": "if(Col_1=='abc',1,0)"
    

    Para generar Col_6, puedes utilizar la función de agregación “max” integrada sobre el campo Col_5. La agregación para Col_6 será:

    "aggregations": [
        {
            "type": "max",
            "name": "Col_6",
            "fieldName": "Col_5"
        }
    ]
    

    Para realizar la agregación en datos de varios archivos, puedes utilizar la función de “rollup” de Druid. Rollup te permite agregar datos en varias dimensiones, incluyendo el tiempo, y realizar el cálculo de agregaciones para cada grupo en el momento de la consulta. Para habilitar rollup, necesitas configurar la propiedad “rollup” en el servicio de indexación. Una vez habilitado rollup, Druid automáticamente agregará datos en el momento de la ingestión y los almacenará en índices de mapas de bits precomputados, los cuales se pueden consultar de manera eficiente utilizando el lenguaje de consulta de Druid.

Comments are closed.