Uso avanzado del asignador de datos
Antes de entrar en las capacidades avanzadas del asignador de datos, conviene repasar brevemente su funcionamiento básico.
Configuración del asignador de datos
Sección titulada «Configuración del asignador de datos»El asignador de datos se usa para asignar las columnas de los datos de origen a la tabla de datos de destino.
Inspección y relleno del asignador
Sección titulada «Inspección y relleno del asignador»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.
Eliminación de columnas
Sección titulada «Eliminación de columnas»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.
Cambio del orden de las columnas
Sección titulada «Cambio del orden de las columnas»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.
Agregación y agrupación
Sección titulada «Agregación y agrupación»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.
Uso avanzado
Sección titulada «Uso avanzado»Opciones de agregación
Sección titulada «Opciones de agregación»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 |
Ordenación de filas
Sección titulada «Ordenación de filas»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.
Constantes
Sección titulada «Constantes»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.
Limpiadores
Sección titulada «Limpiadores»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.
Expresiones
Sección titulada «Expresiones»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.
Conversión a Float
Sección titulada «Conversión a Float»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
Numericsin 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.
Lectura de otra tabla desde una expresión
Sección titulada «Lectura de otra tabla desde una expresión»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:
# Refusedsqlalchemy.literal_column('(SELECT rate FROM fx WHERE fx.cc = t.cc)')
# Supported — a single value in a columnsqlalchemy.select(fx.c.rate).where(fx.c.cc == t.c.cc).scalar_subquery()
# Supported — a table to select fromsqlalchemy.select(fx.c.rate).subquery()Use paréntesis en un OR de nivel superior
Sección titulada «Use paréntesis en un OR de nivel superior»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:
# Refusedsqlalchemy.literal_column("status = 'open' OR status = 'pending'")
# Supportedsqlalchemy.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:
# Refusedsqlalchemy.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:
# Supportedsqlalchemy.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.