Ir al contenido

Filter DataTable

Tipo: filter-datatable  ·  Paquete: DataTable Activities v1.0.5  ·  Salida: DataTable

Filtra una DataTable y devuelve una tabla nueva solo con las filas que cumplen las condiciones. Es la operación más común al procesar datos: quedarte con los pendientes, los mayores a un monto, los de un cliente. Soporta varias condiciones combinadas con lógica Y (todas) u O (alguna).

Evalúa cada fila contra las conditions. En el Designer, las condiciones se arman con un editor visual: por cada una eliges una columna, un operador y un valor, y defines si se combinan con Y (and) u O (or). Devuelve una tabla nueva, con las mismas columnas, solo con las filas que pasan el filtro; la tabla original no cambia.

  • Columna: por nombre (sin distinguir mayúsculas de minúsculas) o por posición contando desde 0 (0, 1…).
  • Valor: se compara tal como lo escribes en el editor; no se evalúa como expresión. Las comillas que lo rodean se quitan ("Pendiente" y Pendiente son lo mismo).
  • Lógica: or exige que se cumpla alguna condición; cualquier otro valor (por defecto and) exige todas. Las condiciones se evalúan en orden y la evaluación se detiene en cuanto el resultado está decidido.
  • La estructura que guarda el editor es { logic, items: [ { column, operator, value } ] }; también se acepta una lista plana de condiciones. Los playbooks antiguos que expresaban una sola condición con los campos sueltos column / operator / value / logic siguen funcionando.
ParámetroTipoPor defectoDescripción
tableDataTable—La DataTable a filtrar.
ParámetroTipoPor defectoDescripción
conditionsobject—Condiciones del filtro (columna · operador · valor) con lógica Y/O, como { logic, items }. Aunque el esquema la marca como opcional, la actividad necesita al menos una condición para ejecutarse.
OperadorSignificado
equals / not-equalsIgual / distinto. Si la celda y el valor son números, compara como números (5 = 5.0); si no, como texto sin distinguir mayúsculas.
containsContiene el texto (sin distinguir mayúsculas).
starts-with / ends-withEmpieza / termina con (sin distinguir mayúsculas).
greater-than / less-thanMayor / menor que. Solo numérico: la celda y el valor deben ser números.
greater-or-equal / less-or-equalMayor-igual / menor-igual. Solo numérico.
is-empty / is-not-emptyCelda vacía (o solo espacios) / no vacía. No usan el valor.

Los números se leen con punto decimal (1500.50); la coma se interpreta como separador de miles.

Devuelve una DataTable con las mismas columnas que la original y solo las filas que cumplen, en su orden original. Si ninguna fila cumple, devuelve una tabla vacía (0 filas, mismas columnas), no null.

MensajeCausa y solución
'table' debe ser una DataTable.table no evalúa a una DataTable (variable vacía o de otro tipo). Revisa la actividad que la produce.
Se requiere al menos una condición ('column'+'value' o 'conditions').No hay condiciones. Agrega al menos una en el editor.
No se encontró la columna '…'. Columnas disponibles: ….La columna de una condición no existe en la tabla. El mensaje lista las columnas reales; corrige el nombre.
El índice de columna … está fuera de rango (la tabla tiene … columna(s)).Usaste una posición de columna mayor que las disponibles.
Value '…' is not numeric. / Comparison value '…' is not numeric.Un operador numérico (greater-than, less-than…) encontró una celda o un valor que no es número; también ocurre con celdas vacías. Antepón una condición is-not-empty sobre la misma columna con lógica Y: como la evaluación se detiene en la primera condición falsa, las filas vacías ya no llegan a la comparación.
Unrecognized operator: '…'El operador no es uno de la tabla anterior (pasa al editar el playbook a mano).

Quedarse con las facturas pendientes y mayores a 1.000.000:

Filter DataTable
table = facturas
conditions:
Estado equals "Pendiente" Y
Total greater-than 1000000
→ output: importantes
Log message = "Filas que cumplen: " + rowCount(importantes) + " de " + rowCount(facturas)