Integración de funciones en vistas de cálculo

Filtrar datos

Objective

After completing this lesson, you will be able to implemente un filtro para restringir los datos.

Utilizar operaciones de filtro

El filtrado de datos con frecuencia es necesario al analizar datos para reducir el conjunto de resultados para que sea más significativo para el usuario empresarial. Normalmente, es posible que desee recuperar los detalles de ventas para un país o región en particular, para una determinada gama de productos o clientes específicos (nuevos clientes, clientes que no han pedido ningún producto durante más de un año). Estos tres ejemplos se refieren al filtrado basado en atributos.

Por otro lado, es posible que desee filtrar datos basados en indicadores. Por ejemplo, es posible que desee enumerar solo los pedidos de cliente para los que el importe total supera un umbral.

Los dos enfoques también se pueden combinar, por ejemplo, cuando desea recuperar la lista de clientes de EE. UU. que han creado más de 10 pedidos durante el último mes. En este caso, el filtrado de datos por país (EE. UU.) se puede realizar lo antes posible en el flujo de datos, pero debe calcular el número total de pedidos por cliente (para el último mes) antes de aplicar el umbral (10).

Por lo tanto, el filtrado a veces es una cuestión de mitigar entre el rendimiento (filtrar lo antes posible) y la consistencia del resultado que obtiene (filtrar demasiado pronto sin cuidado puede provocar resultados incorrectos). Esto es especialmente cierto cuando se agregan datos.

Comparación de diferentes opciones para restringir datos. Un filtro fijo en una vista de cálculo define el valor de restricción en el tiempo de diseño. La petición flexible permite a los usuarios seleccionar un valor para la restricción en tiempo de ejecución.

Criterios de filtro: ¿de codificación fija en la vista de cálculo o flexible en tiempo de ejecución?

Una pregunta clave al definir filtros es si deben codificarse de forma fija en la vista de cálculo o proporcionarse en tiempo de ejecución para proporcionar más flexibilidad. Es posible ejecutar una consulta con una herramienta de informes que transfiere diferentes criterios de filtro a la vista de cálculo.

Un objetivo principal durante el modelado es minimizar las transferencias de datos entre la base de datos y las herramientas de consumo del front end. Por ejemplo, un usuario final nunca necesitará mostrar un millón de filas de datos. Una cantidad tan grande de información simplemente no puede ser consumida de una manera significativa.

Siempre que sea posible, los datos deben agregarse y filtrarse a un tamaño manejable antes de dejar la capa de datos en su camino hacia la herramienta de informes front end.

Filtros en nodos de vista de cálculo

En las vistas de cálculo, los filtros se pueden aplicar a muchos tipos de nodo. Por ejemplo:

  • Proyección

  • Unión

  • Join

  • Clasificación

  • Agregación

  • Star Join

Para definir un filtro, visualice la ficha Expresión de filtro y defina una expresión válida utilizando el lenguaje SQL.

Un ejemplo de expresión de filtro es "COUNTRY"='US'. La expresión puede combinar varias columnas y operadores lógicos, por ejemplo, "COUNTRY"='US' OR "COUNTRY"='CA'.

Atención

Cuando una columna de una fuente de datos (por ejemplo, COUNTRY) se asigna a la salida del nodo con un nombre diferente (por ejemplo, COUNTRY_CODE), el nombre de la columna de salida debe utilizarse en la expresión. En este caso, la expresión correcta sería algo así como "COUNTRY_CODE"='US'. Si introduce la expresión "COUNTRY"='US', es posible que la expresión se valide, pero la creación de la vista de cálculo fallará.

¿Dónde y cuándo se aplica el filtro?

El comportamiento de las expresiones de filtro depende del nodo en el que se define el filtro.

  • Filtros definidos en el nodo superior

    En el nodo superior, generalmente se aplica una expresión de filtro antes del procesamiento de datos definido en este nodo. Por ejemplo, en un nodo Agregación o Combinación en estrella, el filtro se aplica a los datos antes de que se ejecute la agregación.

  • Filtros definidos en otros nodos

    En otros nodos (NON nodos superiores), la expresión de filtro se aplica generalmente a la salida del nodo.

Definir y utilizar filtros

Pushdown de filtro

Desbloquear filtro descendente

Por defecto, los nodos que consumen varios nodos evitan la transferencia de filtros desde los nodos de consumo para garantizar la corrección semántica.

Si la inserción no viola la corrección semántica, se puede fijar el indicador "Ignorar varias salidas para el filtro" para forzar la inserción del filtro.

Captura de pantalla de un escenario de vista de cálculo con una proyección de origen, luego dos ramas y un nodo de unión en la parte superior. La propiedad Ignorar varias salidas para el filtro está seleccionada en la proyección de origen.

En su vista de cálculo, si ha definido un nodo que es una fuente para más de un nodo (es decir, las particiones del flujo de datos), debe tener en cuenta que esto puede bloquear potencialmente la transferencia de filtros. El optimizador SQL no desea romper la semántica de la consulta y, por lo tanto, por defecto mantiene el filtro en el nodo en el que se define (y este nodo puede estar alto en la pila, lo que provoca que grandes conjuntos de datos viajen por la pila).

Puede fijar el indicador Ignorar varias salidas para el filtro para que se elimine el bloqueo del push de filtro y el optimizador pueda enviar el filtro al nivel más bajo para obtener el mejor rendimiento, pero tenga mucho cuidado de verificar que la semántica de la consulta no se rompa y se produzcan resultados incorrectos.

Nota

Se puede aplicar una opción similar en el nivel de vista en el nodo semántico Propiedades de vista > Avanzado. Tiene el mismo efecto, pero se aplica a escenarios en los que otra vista de cálculo consume varias veces una vista de cálculo.

Visualización de bloqueadores de inserción de filtro

Con SAP HANA Cloud 2026 QRC1, el escenario de cálculo materializa la ubicación (nodo) en la que se bloquea el envío de un filtro. Esto le ayuda a verificar la situación, encontrar la causa raíz que evita el envío de filtros hacia abajo y, si es necesario, forzar el envío hacia abajo de filtros cuando sea relevante.

El estado de un filtro que está bloqueado en un nodo particular se materializa with con un icono en la parte superior derecha del nodo.

Nota

Al modificar el diseño del nodo en el que está bloqueada la inserción del filtro (en particular, al seleccionar una de las opciones Ignorar varias salidas para el filtro o Permitir pulsar filtro hacia abajo), se elimina el icono ⛔.

Vistas dependientes de mandante

El CLIENTE (a veces también llamado cliente SAP para evitar cualquier confusión con el concepto de cliente) es un concepto general en sistemas SAP como SAP S/4HANA, SAP BW/4HANA y sus predecesores. El objetivo principal es aislar diferentes tipos de datos (por ejemplo, desarrollo frente a datos de test) en función de una columna específica (generalmente denominada CLIENT o MANDT, que significa Mandante (una palabra alemana para Cliente). Los valores de esta columna son números de tres dígitos, como 001, 200, 800.

Casi todas las tablas de las aplicaciones SAP dependen del mandante. Cuando selecciona datos de una tabla de aplicación SAP, normalmente solo tiene sentido solicitar datos para un número de cliente. No tiene sentido mezclar datos de cliente.

La buena noticia es que una vista de cálculo puede utilizar la columna de cliente SAP para habilitar el filtrado automático de clientes cuando trabaja en datos de aplicaciones SAP. No es necesario definir un filtro explícito en la columna de cliente cada vez que crea una vista de cálculo.

Siempre que cree vistas de cálculo en fuentes de datos SAP que incluyan una columna de cliente, le recomendamos que siempre defina combinaciones en esta columna. De lo contrario, su vista podría devolver resultados inconsistentes si hay datos para varios mandantes. Por ejemplo, puede unir datos para los clientes 200 y 800 (producto cartesiano), lo que en general no tendría sentido.

Definición de filtros específicos de cliente en vistas de cálculo

El filtrado específico de cliente solo tiene sentido cuando algunas (o todas) las tablas de origen tienen una columna de cliente SAP.

Cómo definir una vista dependiente de mandante:

  1. Defina la columna de cliente en las propiedades de la tabla.
  2. Establezca la propiedad Cliente predeterminado en Cliente de sesión.
  3. En la aplicación Gestión de usuarios de su cockpit de SAP HANA (o mediante una sentencia SQL), asigne un Cliente de sesión al usuario.

Cuando el usuario ejecuta una consulta basada en el modelo visualizado, el cliente de sesión del usuario (en este ejemplo: 800) se utiliza para filtrar los datos de origen.

Vea este vídeo para obtener información sobre la creación de una vista dependiente de mandante.

Para implementar el filtrado basado en mandante, proceda de la siguiente manera:

  • Para todas las tablas de fuente de datos relevantes, defina la columna de cliente SAP.

    Esto se realiza en la pestaña Asignación del nodo en el que se hace referencia a la tabla de origen, con la propiedad Columna de cliente.

  • Defina cómo desea recuperar los datos.

    Esto se realiza en el nodo Semántica de la vista de cálculo. Seleccione una de las tres opciones siguientes para la opción Cliente predeterminado:

    • Válido para todos los mandantes: Todos los datos se recuperan independientemente del número de mandante.

    • Cliente fijo: especifica un número de cliente SAP (por ejemplo, 200) y las fuentes de datos se filtran automáticamente para incluir solo las filas con este número de cliente.

    • Cliente de sesión: las tablas de origen se filtran dinámicamente en función de un valor de cliente que se especifica para cada usuario en la tabla USERS de SAP HANA Cloud.

      El cliente de sesión es la configuración predeterminada aplicada a una vista nueva.

Consideremos una tabla simple que contiene datos para dos clientes diferentes, 200 y 800. Esta información se almacena en una columna llamada MANDT. Cree y cree una vista de cálculo basada en esta tabla y, a continuación, consulte los datos con su usuario. La siguiente tabla muestra los datos que se recuperan en función de la opción de cliente predeterminada para la vista de cálculo y de si la columna MANDT se ha definido o no como Columna de cliente (SAP) en las propiedades de la vista.

Efecto de configuración de cliente predeterminado

Opción de cliente estándarEfecto cuando no se especifica ninguna columna de clienteEfecto cuando MANDT se define como columna de cliente
Válido en todos los mandantesTodas las filasTodas las filas
Mandante fijo: 200Todas las filasSolo filas para las que MANDT=200
Cliente de sesión (caso de uso 1: el usuario no tiene ningún cliente predeterminado asignado)Todas las filasNinguna fila
Cliente de sesión (caso de uso 2: el usuario tiene el cliente predeterminado 800)Todas las filasSolo filas para las que MANDT=800

Nota importante sobre el usuario técnico en SAP Business Application Studio

Cuando trabaja en SAP Business Application Studio, la mayoría de las tareas que realiza al definir una vista de cálculo y previsualizar sus datos son ejecutadas en su nombre por un usuario técnico, <HDI_container _schema_name>_..._RT.

Como el usuario técnico no tiene ningún cliente predeterminado asignado, si especifica una propiedad Cliente de columna para una vista de cálculo y fija el Cliente predeterminado en Cliente de sesión, la vista previa de datos en la perspectiva Desarrollador no recuperará datos.

Para omitir el usuario técnico y aplicar el filtrado de cliente basado en un usuario de base de datos clásico, puede realizar una de las siguientes acciones con este usuario:

  • Utilizar la función de vista previa de datos Vista previa de datos con otro usuario de base de datos
  • Visualice los datos de vista de columna en el explorador de base de datos SAP HANA desde una conexión a la base de datos clásica. Una consulta de la conexión de base de datos clásica no implica al usuario técnico.

    Esto se puede hacer abriendo la vista de columna desde el catálogo o ejecutando una consulta SQL en su parte superior en una consola SQL.

Definir filtrado en cliente SAP