Ahora estás haciendo algo diferente. Está a punto de construir otro operador Flex. Esta flexión produce el «Panel de control» que tiene información de estado actual para cada máquina. El desafío es que obtienes diferentes tipos de eventos en la misma transmisión, con diferentes usos para el campo «valor». Este es un problema común. Pero nos impide hacer una simple agregación o actualización, ya que un evento puede tener una lectura de temperatura en el rango de valores y otro evento puede tener «Apagado» en el mismo flujo en el rango de valores. Por lo tanto, use CCL Script para crear una nueva ventana llamada DASHBOARD que mantiene un conjunto de resumen para cada máquina. Con cada evento entrante, el guión examina el evento y actualiza la serie de resumen relevante.
– El bloque de confirmación local crea un diccionario que mantiene la última información recibida para cada máquina. Este diccionario comienza en blanco, pero la información se agrega / actualiza a medida que ocurren los eventos.
– El método ON EVENTS se invoca para todos los eventos entrantes del flujo EVENTS.
– El método recupera el conjunto de información anterior para la máquina específica del diccionario (si hay una entrada para esta máquina en el diccionario).
– A continuación, actualiza la información de esta máquina utilizando los datos del caso.
– Finalmente, publica un conjunto de resumen actualizado para esta máquina y actualiza el diccionario con la información actual.
-
Hacer clic Cambiar a texto o presione F6.
-
Copie el siguiente script CCL al final del script.
Secuencia de comandos CCL:
CREATE FLEX DASHBOARD IN DEVICE_EVENTS OUT OUTPUT WINDOW DASHBOARD SCHEMA(MACHINEID string, POWER_STATUS string, CURR_TEMP double ) PRIMARY KEY (MACHINEID) BEGIN DECLARE typeof(DASHBOARD) outrec; dictionary(string, typeof (DASHBOARD)) prev; END; ON DEVICE_EVENTS{ if (not isnull(prev[EVENTS.MACHINEID])){ outrec := prev[EVENTS.MACHINEID]; } outrec.MACHINEID := EVENTS.MACHINEID; if(EVENTS.EVENT_NAME = 'POWER') { outrec.POWER_STATUS := EVENTS.EVENT_VALUE; } if (EVENTS.EVENT_NAME = 'TEMP') { outrec.CURR_TEMP := to_decimal(EVENTS.EVENT_VALUE, 4, 2); } output setOpcode(outrec,upsert); prev[EVENTS.MACHINEID] := outrec; }; END;
-
Errores en el Problemas vista.
-
Sa Desarrollo de SAP HANA Flush perspectiva, haga clic en el botón Ejecutar para iniciar el proyecto. Consulte la sección 7 de este tutorial sobre cómo ejecutar y volver a probar el proyecto de actualización.