Jointure de données de référence (Azure Stream Analytics)
Dans un scénario habituel, nous utilisons un moteur de traitement des événements pour calculer des données de diffusion en continu avec une latence très faible. Dans de nombreux cas, les utilisateurs doivent corréler des données historiques persistantes ou un jeu de données évoluant lentement (également appelé « données de référence ») avec le flux d'événements en temps réel pour prendre de meilleures décisions concernant le système. Par exemple, ils peuvent joindre leur flux d'événements à un jeu de données statique qui mappe les adresses IP à des emplacements. Il s'agit de la seule opération JOIN prise en charge dans Azure Stream Analytics où une limite temporelle n'est pas nécessaire. Les données de référence peuvent également être utilisées pour avoir des valeurs de seuil spécifiques à l’appareil.
Exemple
Un véhicule commercial inscrit auprès de l'exploitant d'un péage peut franchir la barrière de péage sans être arrêté pour inspection. Nous allons utiliser une table de recherche d'inscription de véhicule commercial pour identifier tous les véhicules commerciaux dont l'inscription a expiré.
SELECT I1.EntryTime, I1.LicensePlate, I1.TollId, R.RegistrationId
FROM Input1 I1 TIMESTAMP BY EntryTime
JOIN Registration R
ON I1.LicensePlate = R.LicensePlate
WHERE R.Expired = '1'
Particularités de join des données de référence
- Une jointure des données de référence requiert qu'une source d'entrée soit définie pour les données de référence.
- Les données de référence JOIN sont prises en charge pour join interne (valeur par défaut) et jointure externe gauche, avec des données de référence sur le côté droit de l’opérateur JOIN.
- Les types de données sont un aspect important dans l’évaluation du prédicat de jointure (
ON
clause ). Des valeurs similaires sur différents types de données (1.0
et"1"
) peuvent ne pas être mises en correspondance. Il est recommandé de convertir explicitement des clés en un type commun. - Les données de référence peuvent être statiques (chargées une seule fois) ou dynamiques (actualisées régulièrement). Toutefois, même dans le cas dynamique, les données de référence ne progressent pas dans le temps, de sorte que le flux sur le côté gauche doit obtenir de nouveaux événements afin de produire des sorties. Pour plus d’informations, consultez également comment le temps progresse dans Azure Stream Analytics .
Considérations relatives aux performances
Pour éviter les dégradations des performances, les prédicats de jointure de référence (ON
clause) doivent être définis via des égalités de clé simples (ON s.myKey = r.myKey
). L’utilisation d’expressions complexes, ou d’inégalités, entraîne en interne des jointures croisées suivies de filtres (analyse complète ou recherche), ce qui peut avoir un impact sur la latence globale.
Dans la mesure du possible, déplacez ces expressions complexes vers la WHERE
clause de l’étape de requête, ou joignez les mêmes données de référence plusieurs fois chacune avec des conditions plus simples.