Share via


Ejemplo: usar valores altos de datos de eventos para impedir notificaciones duplicadas

En el ejemplo siguiente se muestra cómo utilizar una tabla de crónica de eventos para impedir notificaciones duplicadas mediante el uso de los valores más altos para datos de eventos durante un período de tiempo especificado. En este ejemplo, una aplicación de notificación de acciones le proporciona notificaciones cuando las acciones seleccionadas superan umbrales predefinidos.

Escenario

La aplicación obtiene nuevos datos de eventos de acciones de un servicio Web cada 20 minutos. El dato de la mañana se muestra en la tabla siguiente.

Hora de entrada Símbolo de la acción Precio de la acción ($ USD)

9:00 GMT

AWKS

69.98

9:20 GMT

AWKS

70.35

9:40 GMT

AWKS

70.87

10:00 GMT

AWKS

71.55

10:20 GMT

AWKS

72.00

Su propia suscripción controlada por eventos emite una notificación cuando la acción de AWKS alcanza un valor de 71,00 $ (dólares EE.UU.) o mayor. Por tanto, recibe una notificación basada en los datos 10:00 GMT. Después de procesar el lote de eventos y una vez generada su notificación, el valor más alto del día hasta ahora, 71,55 $, se escribe o actualiza en la tabla de crónica de eventos mediante una regla de crónica de eventos que se ha definido en esta aplicación.

Regla de suscripción

Los datos de eventos de las 10:20 GMT llegan para su proceso. La acción de generación de notificación definida para la regla de suscripción utiliza la tabla de crónica de eventos para impedir notificaciones duplicadas. Esto se hace excluyendo notificaciones duplicadas una vez pasado el precio desencadenador, a menos que se haya alcanzado un valor superior:

-- Generate notifications 
SELECT dbo.StockNotificationNotify(S.SubscriberId,
    S.SubscriberDeviceName, S.SubscriberLocale,
    E.StockSymbol, E.StockPrice)
FROM dbo.StockSubscriptions S 
    JOIN dbo.StockEvents E
        ON S.StockSymbol = E.StockSymbol
    JOIN dbo.StockEventChron C
        ON S.StockSymbol = C.StockSymbol
WHERE S.StockTriggerPrice <= E.StockPrice
    AND S.StockTriggerPrice > C.StockHighPrice

-- Insert new events into event chronicle
INSERT dbo.StockEventChron(StockSymbol, StockHighPrice)
SELECT E.StockSymbol, E.StockPrice
FROM dbo.StockEvents E
WHERE E.StockSymbol
    NOT IN (SELECT StockSymbol FROM dbo.StockEventChron)

-- Update existing events in event chronicle
UPDATE dbo.StockEventChron
SET C.StockHighPrice = E.StockPrice
FROM dbo.StockEvents E JOIN dbo.StockEventChron C
ON E.StockSymbol = C.StockSymbol
WHERE E.StockPrice > C.StockHighPrice
ms166492.note(es-es,SQL.90).gifImportante:
Si está definiendo una aplicación en un archivo XML, debe reemplazar caracteres reservados de XML como '>', con sus referencias de entidad. Para obtener más información, vea XML Reserved Characters.

Resultados

Una suscripción con un precio desencadenador de 71,55 $ o inferior ya ha recibido una notificación y no recibe otra. Todas las suscripciones que tengan un precio desencadenador mayor que el precio almacenado más alto de 71,55 $, pero menor o igual que el nuevo precio máximo de 72,00$, reciben una notificación. Después de generar las notificaciones, la regla de crónica de eventos actualiza de nuevo la tabla de crónica de eventos con los datos más recientes.

Vea también

Conceptos

Definir crónicas para una clase de evento
Definir tablas de crónica de eventos
Definir reglas de suscripción
Ejemplo: Usar una crónica de eventos para suscripciones programadas
Ejemplo: comparar datos de eventos para evitar notificaciones duplicadas

Ayuda e información

Obtener ayuda sobre SQL Server 2005