Ir al contenido

Antes de entrar en las capacidades avanzadas del asignador de datos, conviene repasar brevemente su funcionamiento básico.

El asignador de datos se usa para asignar las columnas de los datos de origen a la tabla de datos de destino.

El botón de menú Inspeccionar origen ofrece otras formas de asignar columnas del origen al destino:

  • Rellenar ambas tablas de asignación: propaga todos los valores de la tabla de datos de origen a la tabla de datos de destino. Es el comportamiento predeterminado.
  • Rellenar solo la tabla de asignación de origen: asigna únicamente los valores de la tabla de datos de origen. Resulta útil al modificar un flujo de trabajo existente cuando ha cambiado la estructura de columnas del origen.
  • Rellenar solo la tabla de asignación de destino: propaga todos los valores únicamente a la tabla de datos de destino.

Si las opciones de columnas de origen y de destino no son suficientes, puede agregar otras columnas a la tabla de datos de destino de varias maneras:

  • Propagar todo inserta todas las columnas de origen en la tabla de datos de destino, existieran o no ya.
  • Propagar seleccionadas inserta únicamente las columnas de origen seleccionadas.
  • Haga clic con el botón derecho en el lado de destino y seleccione Insertar fila para insertar una fila inmediatamente encima de la fila seleccionada.
  • Haga clic con el botón derecho en el lado de destino y seleccione Anexar fila para insertar una fila al final (extremo derecho) de la tabla de datos de destino.

Para eliminar columnas de la tabla de datos de destino, seleccione las columnas que desee, haga clic con el botón derecho y seleccione Eliminar.

Para reorganizar las columnas de la tabla de datos de destino, seleccione las columnas que desee. Puede usar cualquiera de estas opciones:

  • Flechas de movimiento masivo: seleccione la opción de movimiento que desee con las flechas de la esquina superior derecha.
  • Menú contextual: haga clic con el botón derecho y seleccione Mover al principio, Subir, Bajar o Mover al final.

Reducir el resultado a registros distintos únicamente

Sección titulada «Reducir el resultado a registros distintos únicamente»

Para devolver solo opciones distintas, seleccione la opción de menú Distinto. Se mostrará un conjunto de casillas de verificación para cada columna del origen. Basta con marcar la casilla junto a la columna correspondiente para devolver solo resultados distintos.

Para agregar resultados, seleccione la opción de menú Resumir. Se mostrará un conjunto de cuadros de selección para cada columna de la tabla de datos de destino. Elija un método de resumen adecuado para cada columna.

columnas de origencust_idamtdtnotecolumnas de destinocustomer_idamountorder_daterenombrarconvertir → decimalrenombrarsin asignar → descartada
El asignador conecta cada columna de origen con una columna de destino, renombrándola y convirtiendo su tipo por el camino. Las columnas de origen sin asignar quedan fuera del resultado.

Para agregar resultados, seleccione la opción de menú Resumir. Se mostrará un conjunto de cuadros de selección para cada columna de la tabla de datos de destino. Están disponibles las siguientes opciones de resumen:

Función Descripción
Agrupar por Agrupa los resultados por el valor
Recuento Número de observaciones no nulas del grupo
Recuento (incluidos los nulos) Número de observaciones del grupo
Suma Suma de los valores del grupo
Media Media de los valores del grupo
Mediana Mediana de los valores del grupo
Moda Moda de los valores del grupo
Mínimo Mínimo de los valores del grupo
Máximo Máximo de los valores del grupo
Primero Primero de los valores del grupo según el orden establecido
Último Último de los valores del grupo según el orden establecido
Desviación estándar Desviación estándar insesgada del grupo
Desviación estándar muestral Desviación estándar muestral del grupo
Desviación estándar poblacional Desviación estándar poblacional del grupo
Varianza Varianza insesgada del grupo
Varianza muestral Varianza muestral del grupo
Varianza poblacional Varianza poblacional del grupo
Avanzado sin agrupar por Selección de agregación especial para cuando se usan funciones de ventana

Elija el método de resumen adecuado para la columna.

Claves de agregación para REST y asistentes de IA

Sección titulada «Claves de agregación para REST y asistentes de IA»

Cuando configura un paso mediante la API REST o un asistente de IA, cada columna de destino lleva su resumen en agg, y el aggregation_type del paso selecciona las mismas opciones. Todos los pasos con un asignador de datos aceptan estos valores:

Clave Resumen
group Agrupar por
dont_group Avanzado sin agrupar por: la columna ni se agrupa ni se agrega, para expresiones que agregan o usan ventanas por sí mismas
count Recuento de observaciones no nulas del grupo
count_null Recuento incluidos los nulos
count_distinct Recuento de valores distintos del grupo
sum Suma
avg Media
median Mediana
min Mínimo
max Máximo
stddev Desviación estándar
stddev_samp Desviación estándar muestral
stddev_pop Desviación estándar poblacional
variance Varianza
var_samp Varianza muestral

Cada columna de destino puede llevar un sort: asc, desc o none, o un objeto {ascending, order}. ascending es true o false. order es un entero que establece la prioridad de la clave: las columnas con un order se ordenan primero, empezando por el número más bajo, y después siguen las demás columnas ordenadas según su posición.

Cuando use una función de ventana, seleccione Avanzado sin agrupar por como método de agregación. Esta selección especial es necesaria porque la función de ventana ya lleva implícita la agregación.

Si especifica un valor en la columna Constante, este reemplaza el valor de la columna de origen, si se ha indicado, y rellena la columna con el valor constante especificado.

Origen, constante y expresión conjuntamente

Sección titulada «Origen, constante y expresión conjuntamente»

Una columna de destino toma su valor de lo que haya completado entre estas opciones, en este orden: una Constante prevalece, luego una Expresión y por último la columna de Origen.

Por tanto, una columna que calcula su valor no necesita un Origen. Déjelo en blanco en una constante o una expresión: la constante o la expresión ya indica cuál es el valor, y un Origen junto a ellas se ignora. Complete Origen cuando asigne una columna directamente desde los datos entrantes, cuando la renombre o cuando la convierta por el camino.

Una expresión lee las columnas entrantes por nombre, con get_column(table, 'Column Name'), en lugar de a través de la celda Origen.

El asignador de datos ofrece una práctica función de limpieza con la que, con unos pocos clics, se aplican conversiones a los datos de una columna.

Las operaciones de limpieza incluyen las siguientes categorías:

  • Recorte de texto
  • Formato de texto
  • Transformaciones de texto
  • Conversión desde y hacia valores NULL
  • Formato de números
  • Análisis de fechas

El resultado de las selecciones del limpiador se convierte en una expresión consolidada que puede verse en la información de la expresión.

Las expresiones del asignador de datos son uno de los conceptos más potentes y flexibles de PlaidCloud. Ofrecen una flexibilidad casi ilimitada y, al mismo tiempo, un rendimiento excepcional, incluso con datos extremadamente grandes.

Las expresiones se escriben con la sintaxis de Python SQLAlchemy junto con algunas funciones auxiliares adicionales disponibles en PlaidCloud. Esto permite a PlaidCloud exponer directamente todo el conjunto de capacidades del almacén de datos subyacente (por ejemplo, Greenplum, SAP HANA, Redshift, etc.). Además, hay muchos recursos públicos que ofrecen referencias rápidas sobre el uso de las operaciones de SQLAlchemy. Al usar la sintaxis estándar de SQLAlchemy, PlaidCloud evita el error habitual de crear otra sintaxis específica de dominio más.

El editor de expresiones se abre haciendo doble clic en la celda de expresión de la columna. Una vez abierto, a la izquierda se muestra la lista de columnas y a la derecha una extensa biblioteca de funciones.

Aunque es perfectamente posible escribir la expresión directamente en el editor, normalmente resulta más fácil empezar con la selección de funciones y columnas con unos pocos clics. La biblioteca de funciones incluye los siguientes grupos:

  • Condiciones
  • Condiciones específicas de columna
  • Conversiones
  • Fechas
  • Matemáticas
  • Texto
  • Resúmenes
  • Operaciones de función de ventana
  • Matrices
  • JSON
  • PostGIS (geoespacial)
  • Trigonometría

Cuando haya terminado la expresión, guárdela para que se aplique a la columna.

Consulte ejemplos y funciones de expresión en el área de expresiones.

cast(x, Float) devuelve un número de doble precisión de 64 bits en todos los almacenes de datos, de modo que un importe como 1225541207.71 conserva todos sus dígitos. En StarRocks, ahora se aplica la conversión a Float, que antes se omitía, y en Databend es de doble precisión en lugar de precisión simple. Una columna Float que PlaidCloud crea a partir de datos de coma flotante también es de doble precisión. Una tabla que ya tiene una columna de precisión simple pasa a doble precisión la próxima vez que un paso la reconstruye con Overwrite.

En StarRocks:

  • Una conversión a entero grande admite valores superiores a unos 2100 millones.
  • Una conversión a Numeric sin precisión conserva los decimales, hasta 10 posiciones, en lugar de redondear a un número entero.
  • Se aplica una conversión a JSON.

En todos los almacenes de datos, un valor que no se puede convertir, como un texto no numérico convertido a número, pasa a ser nulo en lugar de detener el paso.

sqlalchemy.literal_column pasa un fragmento de SQL al almacén de datos sin modificarlo y acepta un único valor: una columna, un cálculo, un CASE, una llamada a función, una conversión, una función de ventana. Un literal_column que contenga una subconsulta ((SELECT ... FROM ...)) se rechaza, porque una subconsulta accede a una tabla que el paso nunca declaró.

Las reglas de esta sección se aplican allí donde se escriba la expresión: aquí en el asignador, en el filtro de un paso y en una consulta armada en otro lugar y enviada a la plataforma. Se comprueban al guardar el paso y de nuevo cuando la expresión se convierte en SQL.

Construya la subconsulta con sqlalchemy.select(...) en su lugar: .scalar_subquery() cuando necesite un único valor en una columna, o .subquery() cuando seleccione a partir de ella:

# Refused
sqlalchemy.literal_column('(SELECT rate FROM fx WHERE fx.cc = t.cc)')
# Supported — a single value in a column
sqlalchemy.select(fx.c.rate).where(fx.c.cc == t.c.cc).scalar_subquery()
# Supported — a table to select from
sqlalchemy.select(fx.c.rate).subquery()

También se rechaza un literal_column cuyo operador más externo sea OR. PlaidCloud pasa el texto sin modificarlo, de modo que una condición añadida después se aplicaría solo a la mitad: a OR b seguido de AND region = 'East' se lee como a OR (b AND region = 'East'), y vuelven las filas que usted pretendía excluir.

Agregue paréntesis y funciona como antes:

# Refused
sqlalchemy.literal_column("status = 'open' OR status = 'pending'")
# Supported
sqlalchemy.literal_column("(status = 'open' OR status = 'pending')")

Una disyunción en cualquier punto dentro de la expresión, en un CASE o ya entre paréntesis, no se ve afectada.

XOR se rechaza dondequiera que aparezca, con o sin paréntesis: los almacenes de datos no coinciden en la precedencia de este operador, por lo que no hay ninguna lectura que sea segura en todos. Escríbalo en su lugar de forma explícita, como (a AND NOT b) OR (NOT a AND b).

Un literal_column que lleve un comentario se rechaza por el mismo motivo: un comentario se extiende hasta el final de la instrucción, por lo que borra lo que PlaidCloud agrega después de su expresión y no solo lo que usted escribió.

-- se rechaza cuando alcanzaría el resto de la instrucción. # se rechaza en cualquier parte del texto, sin excepción, incluso dentro de una cadena entre comillas y también en los operadores de ruta JSON #> y #>> de Postgres:

# Refused
sqlalchemy.literal_column("attrs #> '{a,b}'")
sqlalchemy.literal_column("code || '#'")

# abre un comentario en los almacenes de datos compatibles con MySQL, como StarRocks, y PlaidCloud no sabe qué almacén de datos ejecutará la expresión en el momento en que usted la escribe. Por eso no hay ninguna posición del texto en la que sea seguro de forma fiable, y un # que a un motor le parece entre comillas es el inicio de un comentario para otro. Si necesita el carácter como dato, páselo como valor:

# Supported
sqlalchemy.func.concat(table.code, sqlalchemy.literal('#'))

Las mismas dos grafías se rechazan en .op('...').

Todo lo demás para lo que se usa normalmente literal_column no se ve afectado: literal_column('current_date'), literal_column("CASE WHEN amount > 0 THEN 'p' ELSE 'n' END") y func.count() funcionan como antes. Los nombres de columna que contienen espacios, puntos o comillas tampoco se ven afectados; el almacén de datos los entrecomilla por usted.