Saltar al contenido

Operadores Flex personalizados con CCL avanzado en SAP HANA Smart Data Streaming

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.

  1. Hacer clic Cambiar a texto o presione F6.

  2. 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;
    

    secuencia de comandos ccl

  3. Errores en el Problemas vista.

    Compilacion

  4. 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.

    Compilacion

Hecho

Inicie sesión para responder la pregunta