Dołączanie do danych referencyjnych (Azure Stream Analytics)
W typowym scenariuszu używamy aparatu przetwarzania zdarzeń do obliczania danych przesyłanych strumieniowo z bardzo małym opóźnieniem. W wielu przypadkach użytkownicy muszą skorelować utrwalone dane historyczne lub powolny zmieniający się zestaw danych (np. dane referencyjne) ze strumieniem zdarzeń w czasie rzeczywistym w celu podejmowania mądrzejszych decyzji dotyczących systemu. Na przykład dołącz mój strumień zdarzeń do statycznego zestawu danych, który mapuje adresy IP na lokalizacje. Jest to jedyna funkcja JOIN obsługiwana w usłudze Stream Analytics, gdzie ograniczenie czasowe nie jest konieczne. Dane referencyjne mogą być również używane do określania wartości progowych specyficznych dla urządzenia.
Przykład
Jeśli pojazd komercyjny jest zarejestrowany w firmie Toll Company, mogą przejść przez kabinę opłat bez zatrzymania do kontroli. Użyjemy tabeli odnośników rejestracji pojazdów komercyjnych, aby zidentyfikować wszystkie pojazdy komercyjne z wygasłą rejestracją.
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'
Specyfika dołączania danych referencyjnych
- Użycie funkcji Dołączanie danych referencyjnych wymaga, aby zdefiniowano źródło danych wejściowych dla danych referencyjnych.
- Dane referencyjne JOIN są obsługiwane w przypadku sprzężenia wewnętrznego (domyślnego) i lewej zewnętrznej sprzężenia z danymi referencyjnymi po prawej stronie operatora JOIN.
- Typy danych są ważnym aspektem oceny predykatu sprzężenia (
ON
klauzula). Podobne wartości dla różnych typów danych (1.0
i"1"
) mogą nie być zgodne. Zalecane jest jawne konwertowanie kluczy na typ typowy. - Dane referencyjne mogą być statyczne (ładowane tylko raz) lub dynamiczne (odświeżane regularnie). Jednak nawet w przypadku dynamicznym dane referencyjne nie powodują postępu czasu, więc strumień po lewej stronie musi uzyskać nowe zdarzenia w celu wygenerowania danych wyjściowych. Aby uzyskać więcej informacji, zobacz również , jak postępuje czas w usłudze Azure Stream Analytics .
Zagadnienia dotyczące wydajności
Aby zapobiec pogorszeniu wydajności, predykaty sprzężenia referencyjnego (ON
klauzula) powinny być definiowane za pomocą prostych kluczowych równości (ON s.myKey = r.myKey
). Użycie złożonych wyrażeń lub nierówności spowoduje wewnętrzne sprzężenia krzyżowe, po których następują filtry (pełne skanowanie i wyszukiwanie), co może mieć wpływ na ogólne opóźnienie.
Jeśli to możliwe, przenieś te złożone wyrażenia do WHERE
klauzuli kroku zapytania lub sprzężenie tych samych danych referencyjnych wiele razy z prostszymi warunkami.