2017-07-12 1 views
2

J'ai créé un emploi ASA et a également créé un alias d'entrée et un alias de sortie
like thisAzure Stream Analytics Comment gérer plusieurs tables de sortie?

et j'édité section de recherche comme celui-ci

WITH 
[StreamData] 
AS (
SELECT 
    employee_id, 
    first_name, 
    last_name, 
    age, 
    salary 
FROM 
    [DeviceDataStream] 
WHERE 
    [ObjectType] IS NULL -- Filter out device info and command responses 
) 

SELECT 
    employee_id, 
    first_name, 
    last_name, 
    age, 
    salary 
INTO 
    [Telemetry] 
FROM 
    [StreamData] 

Je table créée dans la base de données SQL
like this

et mon entrée du périphérique IOT est comme ceci

{"employee_id":4,"first_name":"Joseph","last_name":"Marshal","age":34,"salary":890000} 

jusqu'à ce que tout fonctionne correctement.

maintenant je veux conserver mon JSON d'entrée aux tables différentes en fonction de type et ma nouvelle JSON entrée sera comme cette

{"type":"emp","employee_id":4,"first_name":"Joseph","last_name":"Marshal","age":34,"salary":890000} 

différents champs seront là avec différents types et selon que je veux stocker données dans un tableau différent, alors quels changements j'ai besoin et où veuillez me guider pour cela. merci

+0

Je suis à la recherche dans l'exacte même sujet aujourd'hui. Tout ce que je peux trouver jusqu'à présent implique que vous devez créer une sortie par table ... ce qui semble fou, mais si vous basez la cible sur l'entrée, vous pourriez avoir des données à venir pour les cibles invalides ... – Timbo

+0

Hey @Timbo regarde ma réponse –

+1

@Timbo: Sous le capot, il utilise BCP pour charger ces tables. Vous pouvez valider en surveillant l'activité via Query Performance Insight dans le portail. Une fois que vous voyez cela se produire, il est plus logique de vous obliger à traiter chaque table comme une sortie individuelle. C'est également un facteur à prendre en compte si vous envisagez d'utiliser plusieurs cibles dans la même table en raison d'un conflit de verrous de table. –

Répondre

1

hey finalement je me suis solution facile pour cela, je l'ai créé une sortie pour chaque table de sortie

like this

et ma requête est comme ce

WITH 
    [StreamData] 
AS (
    SELECT 
    * 
    FROM 
     [DeviceDataStream] 
    WHERE 
     [ObjectType] IS NULL -- Filter out device info and command responses 
) 

SELECT 
    EventProcessedUtcTime, 
    PartitionId, 
    EventEnqueuedUtcTime, 
    IoTHub, 
    employee_id, 
    first_name, 
    last_name, 
    age, 
    salary 
INTO 
    [Telemetry] 
FROM 
    [StreamData] 
WHERE type = 'emp' --Table 1 

SELECT 
    EventProcessedUtcTime, 
    PartitionId, 
    EventEnqueuedUtcTime, 
    PersonID, 
    FirstName, 
    LastName, 
    City, 
    height 
INTO 
    [TelemetryP] 
FROM 
    [StreamData] 
WHERE type = 'prsn' --Table 2