Używanie danych referencyjnych do wyszukiwania w usłudze Stream Analytics

Dane referencyjne to skończony zestaw danych, który jest statyczny lub powoli zmienia się w naturze. Służy do wyszukiwania lub rozszerzania strumieni danych. Dane referencyjne są również nazywane tabelą odnośników.

Weźmy przykładowy scenariusz IoT. Metadane dotyczące czujników, które nie zmieniają się często, można przechowywać w danych referencyjnych. Następnie można połączyć je ze strumieniami danych IoT w czasie rzeczywistym.

Usługa Azure Stream Analytics ładuje dane referencyjne w pamięci w celu osiągnięcia przetwarzania strumienia o małych opóźnieniach. Aby korzystać z danych referencyjnych w zadaniu usługi Stream Analytics, zazwyczaj użyjesz sprzężenia danych referencyjnych w zapytaniu.

Przykład

Możesz mieć strumień zdarzeń generowanych w czasie rzeczywistym, gdy samochody przechodzą przez tollbooth. Tollbooth może przechwytywać tablice rejestracyjne w czasie rzeczywistym. Te dane mogą łączyć się ze statycznym zestawem danych zawierającym szczegóły rejestracji w celu zidentyfikowania tablic rejestracyjnych, które wygasły.

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'

Usługa Stream Analytics obsługuje usługi Azure Blob Storage, Azure Data Lake Storage Gen2 i Azure SQL Database jako warstwę magazynu dla danych referencyjnych. Jeśli masz dane referencyjne w innych magazynach danych, spróbuj użyć usługi Azure Data Factory do wyodrębniania, przekształcania i ładowania danych do jednego z obsługiwanych magazynów danych. Aby uzyskać więcej informacji, zobacz Działanie kopiowania w usłudze Azure Data Factory — omówienie.

Azure Blob Storage lub Azure Data Lake Storage Gen 2

Dane referencyjne są modelowane jako sekwencja obiektów blob w kolejności rosnącej daty/godziny określonej w nazwie obiektu blob. Obiekty blob można dodawać tylko na końcu sekwencji przy użyciu daty/godziny większej niż określona przez ostatni obiekt blob w sekwencji. Obiekty blob są definiowane w konfiguracji wejściowej.

Aby uzyskać więcej informacji, zobacz Use reference data from Blob Storage for a Stream Analytics job (Używanie danych referencyjnych z usługi Blob Storage dla zadania usługi Stream Analytics).

Konfigurowanie danych referencyjnych obiektów blob

Aby skonfigurować dane referencyjne, należy najpierw utworzyć dane wejściowe, które są danymi referencyjnymi typu. W poniższej tabeli opisano każdą właściwość, którą należy podać podczas tworzenia danych referencyjnych wraz z opisem.

Nazwa właściwości Opis
Alias danych wejściowych Przyjazna nazwa używana w zapytaniu zadania do odwoływanie się do tych danych wejściowych.
Konto magazynu Nazwa konta magazynu, na którym znajdują się obiekty blob. Jeśli znajduje się ona w tej samej subskrypcji co zadanie usługi Stream Analytics, wybierz ją z listy rozwijanej.
Klucz konta magazynu Klucz tajny skojarzony z kontem magazynu. Ten klucz jest wypełniany automatycznie, jeśli konto magazynu znajduje się w tej samej subskrypcji co zadanie usługi Stream Analytics.
Kontener magazynu Kontenery zapewniają logiczne grupowanie obiektów blob przechowywanych w usłudze Blob Storage. Podczas przekazywania obiektu blob do usługi Blob Storage należy określić kontener dla tego obiektu blob.
Wzorzec ścieżki Ta wymagana właściwość służy do lokalizowania obiektów blob w określonym kontenerze. W ramach ścieżki można określić co najmniej jedno wystąpienie zmiennych {date} i {time}.
Przykład 1: products/{date}/{time}/product-list.csv
Przykład 2: products/{date}/product-list.csv
Przykład 3: product-list.csv

Jeśli obiekt blob nie istnieje w określonej ścieżce, zadanie usługi Stream Analytics czeka na udostępnienie obiektu blob na czas nieokreślony.
Format daty [opcjonalnie] Jeśli użyto elementu {date} w określonym wzorcu ścieżki, wybierz format daty, w którym obiekty blob są zorganizowane z listy rozwijanej obsługiwanych formatów.
Przykład: RRRR/MM/DD lub MM/DD/RRRRRR
Format czasu [opcjonalnie] Jeśli użyto elementu {time} w określonym wzorcu ścieżki, wybierz format czasu, w którym obiekty blob są zorganizowane z listy rozwijanej obsługiwanych formatów.
Przykład: HH, HH/mm lub HH-mm
Format serializacji zdarzeń Aby upewnić się, że zapytania działają zgodnie z oczekiwaniami, usługa Stream Analytics musi wiedzieć, którego formatu serializacji używasz dla przychodzących strumieni danych. W przypadku danych referencyjnych obsługiwane formaty to CSV i JSON.
Kodowanie UTF-8 jest obecnie jedynym obsługiwanym formatem kodowania.

Statyczne dane referencyjne

Dane referencyjne mogą nie zostać zmienione. Aby włączyć obsługę statycznych danych referencyjnych, określ ścieżkę statyczną w konfiguracji wejściowej.

Usługa Stream Analytics pobiera obiekt blob z określonej ścieżki. Tokeny podstawienia {date} i {time} nie są wymagane. Ponieważ dane referencyjne są niezmienne w usłudze Stream Analytics, zastępowanie statycznego obiektu blob danych referencyjnych nie jest zalecane.

Generowanie danych referencyjnych zgodnie z harmonogramem

Dane referencyjne mogą być powoli zmieniające się zestaw danych. Aby odświeżyć dane referencyjne, określ wzorzec ścieżki w konfiguracji wejściowej przy użyciu tokenów podstawienia {date} i {time}. Usługa Stream Analytics pobiera zaktualizowane definicje danych referencyjnych na podstawie tego wzorca ścieżki.

Na przykład wzorzec sample/{date}/{time}/products.csv z formatem daty RRRR-MM-DD i formatem czasu HH-mm nakazuje usłudze Stream Analytics odebranie zaktualizowanego obiektu blob sample/2015-04-16/17-30/products.csv 16 kwietnia 2015 r. o 15:30 CZASU UTC.

Usługa Stream Analytics automatycznie skanuje w poszukiwaniu odświeżonych obiektów blob danych referencyjnych w odstępie jednej minuty. Obiekt blob ze znacznikiem czasu 10:30:00 może zostać przekazany z małym opóźnieniem, na przykład 10:30:30. Zauważysz niewielkie opóźnienie w zadaniu usługi Stream Analytics odwołującym się do tego obiektu blob.

Aby uniknąć takich scenariuszy, przekaż obiekt blob wcześniej niż docelowy efektywny czas, czyli 10:30:00 w tym przykładzie. Zadanie usługi Stream Analytics ma teraz wystarczająco dużo czasu, aby odnajdywać i ładować obiekt blob w pamięci i wykonywać operacje.

Uwaga

Obecnie zadania usługi Stream Analytics szukają odświeżania obiektu blob tylko wtedy, gdy czas maszyny przechodzi do czasu zakodowanego w nazwie obiektu blob. Na przykład zadanie szuka sample/2015-04-16/17-30/products.csv tak szybko, jak to możliwe, ale nie wcześniej niż 16 kwietnia 2015 r., o 17:30 CZASU UTC. Nigdy nie będzie szukać obiektu blob z zakodowanym czasem wcześniej niż ostatni, który został odnaleziony.

Na przykład po znalezieniu obiektu blob sample/2015-04-16/17-30/products.csvzadanie ignoruje wszystkie pliki z zakodowaną datą wcześniej niż 16 kwietnia 2015 r. o godzinie 17:30. Jeśli obiekt blob o opóźnionej sample/2015-04-16/17-25/products.csv locie zostanie utworzony w tym samym kontenerze, zadanie nie będzie go używać.

W innym przykładzie sample/2015-04-16/17-30/products.csv jest generowany tylko 16 kwietnia 2015 r., o godzinie 10:03, ale w kontenerze nie ma obiektu blob z wcześniejszą datą. Następnie zadanie używa tego pliku od 16 kwietnia 2015 r. o godzinie 10:03 i używa poprzednich danych referencyjnych do tego czasu.

Wyjątkiem od tego zachowania jest to, że zadanie musi ponownie przetwarzać dane z powrotem w czasie lub po pierwszym uruchomieniu zadania.

W momencie rozpoczęcia zadanie wyszukuje najnowszy obiekt blob utworzony przed określonym czasem rozpoczęcia zadania. To zachowanie gwarantuje, że podczas uruchamiania zadania istnieje niepusty zestaw danych referencyjnych. Jeśli nie można go znaleźć, zadanie wyświetla następującą diagnostykę: Initializing input without a valid reference data blob for UTC time <start time>.

Po odświeżeniu zestawu danych referencyjnych jest generowany dziennik diagnostyczny: Loaded new reference data from <blob path>. Z wielu powodów zadanie może wymagać ponownego załadowania poprzedniego zestawu danych referencyjnych. Najczęściej przyczyną jest ponowne przetwarzanie poprzednich danych. W tym czasie jest generowany ten sam dziennik diagnostyczny. Ta akcja nie oznacza, że bieżące dane strumienia używają poprzednich danych referencyjnych.

Usługa Azure Data Factory może służyć do organizowania zadania tworzenia zaktualizowanych obiektów blob wymaganych przez usługę Stream Analytics w celu zaktualizowania definicji danych referencyjnych.

Data Factory jest usługą integracji danych w chmurze, która służy do aranżacji i automatyzacji przenoszenia i przekształcania danych. Usługa Data Factory obsługuje nawiązywanie połączenia z dużą liczbą magazynów danych opartych na chmurze i lokalnych. Dane można łatwo przenosić zgodnie z ustalonym harmonogramem.

Aby uzyskać więcej informacji na temat konfigurowania potoku usługi Data Factory w celu generowania danych referencyjnych dla usługi Stream Analytics odświeżanych zgodnie ze wstępnie zdefiniowanym harmonogramem, zobacz ten przykład usługi GitHub.

Wskazówki odświeżania danych referencyjnych obiektów blob

  • Nie zastępowaj obiektów blob danych referencyjnych, ponieważ są one niezmienne.
  • Zalecanym sposobem odświeżania danych referencyjnych jest:
    • Użyj elementu {date}/{time} we wzorcu ścieżki.
    • Dodaj nowy obiekt blob przy użyciu tego samego kontenera i wzorca ścieżki zdefiniowanego w danych wejściowych zadania.
    • Użyj daty/godziny większej niż określona przez ostatni obiekt blob w sekwencji.
  • Obiekty blob danych referencyjnych nie są uporządkowane* przez czas ostatniej modyfikacji obiektu blob. Są one uporządkowane tylko według daty i godziny określonej w nazwie obiektu blob przy użyciu podstawień {date} i {time}.
  • Aby uniknąć konieczności wyświetlania listy dużej liczby obiektów blob, usuń stare obiekty blob, dla których przetwarzanie nie będzie już wykonywane. Usługa Stream Analytics może mieć możliwość ponownego przetworzenia niewielkiej ilości w niektórych scenariuszach, takich jak ponowne uruchomienie.

Azure SQL Database

Zadanie usługi Stream Analytics pobiera dane referencyjne usługi SQL Database i przechowuje je jako migawkę w pamięci na potrzeby przetwarzania. Migawka danych referencyjnych jest również przechowywana w kontenerze na koncie magazynu. Konto magazynu należy określić w ustawieniach konfiguracji.

Kontener jest tworzony automatycznie podczas uruchamiania zadania. Jeśli zadanie zostanie zatrzymane lub zostanie wprowadzone w stanie niepowodzenia, kontenery utworzone automatycznie zostaną usunięte po ponownym uruchomieniu zadania.

Jeśli dane referencyjne są powoli zmieniającym się zestawem danych, należy okresowo odświeżyć migawkę używaną w zadaniu.

Za pomocą usługi Stream Analytics można ustawić częstotliwość odświeżania podczas konfigurowania połączenia wejściowego usługi SQL Database. Środowisko uruchomieniowe usługi Stream Analytics wysyła zapytanie do wystąpienia usługi SQL Database w interwale określonym przez częstotliwość odświeżania. Najszybsza szybkość odświeżania jest obsługiwana raz na minutę. W przypadku każdego odświeżania usługa Stream Analytics przechowuje nową migawkę na udostępnionym koncie magazynu.

Usługa Stream Analytics oferuje dwie opcje wykonywania zapytań dotyczących wystąpienia usługi SQL Database. Zapytanie migawki jest obowiązkowe i musi zostać uwzględnione w każdym zadaniu. Usługa Stream Analytics okresowo uruchamia zapytanie migawki na podstawie interwału odświeżania. Używa on wyniku zapytania (migawki) jako zestawu danych referencyjnych.

Zapytanie migawki powinno pasować do większości scenariuszy. Jeśli wystąpią problemy z wydajnością dużych zestawów danych i szybkość odświeżania, użyj opcji zapytania różnicowego. Zapytania, które zwracają zestaw danych referencyjnych, przez ponad 60 sekund, powodują przekroczenie limitu czasu.

W przypadku opcji zapytania różnicowego usługa Stream Analytics uruchamia początkowo zapytanie migawki, aby uzyskać zestaw danych referencyjnych punktu odniesienia. Następnie usługa Stream Analytics okresowo uruchamia zapytanie różnicowe na podstawie interwału odświeżania w celu pobrania zmian przyrostowych. Te zmiany przyrostowe są stale stosowane do zestawu danych referencyjnych w celu ich aktualizowania. Użycie opcji zapytania różnicowego może pomóc zmniejszyć koszt magazynowania i operacje we/wy sieci.

Konfigurowanie danych referencyjnych usługi SQL Database

Aby skonfigurować dane referencyjne usługi SQL Database, należy najpierw utworzyć dane wejściowe danych referencyjnych. W poniższej tabeli opisano każdą właściwość, którą należy podać podczas tworzenia danych referencyjnych wraz z opisem. Aby uzyskać więcej informacji, zobacz Use reference data from a SQL Database for a Stream Analytics job (Używanie danych referencyjnych z usługi SQL Database dla zadania usługi Stream Analytics).

Możesz użyć usługi Azure SQL Managed Instance jako danych wejściowych referencyjnych. Należy skonfigurować publiczny punkt końcowy w usłudze SQL Managed Instance. Następnie ręcznie skonfigurujesz następujące ustawienia w usłudze Stream Analytics. Maszyna wirtualna platformy Azure z uruchomionym programem SQL Server z dołączoną bazą danych jest również obsługiwana przez ręczne konfigurowanie tych ustawień.

Nazwa właściwości Opis
Alias danych wejściowych Przyjazna nazwa używana w zapytaniu zadania do odwoływanie się do tych danych wejściowych.
Subskrypcja Twoja subskrypcja.
baza danych Wystąpienie usługi SQL Database zawierające dane referencyjne. W przypadku usługi SQL Managed Instance należy określić port 3342. Może to być na przykład sampleserver.public.database.windows.net,3342.
Username Nazwa użytkownika skojarzona z wystąpieniem usługi SQL Database.
Hasło Hasło skojarzone z wystąpieniem usługi SQL Database.
Okresowo odświeżaj Ta opcja umożliwia wybranie częstotliwości odświeżania. Wybierz pozycję Włączone , aby określić częstotliwość odświeżania w DD:HH:MM.
Kwerenda migawki Ta domyślna opcja zapytania pobiera dane referencyjne z wystąpienia usługi SQL Database.
Zapytanie różnicowe W przypadku zaawansowanych scenariuszy z dużymi zestawami danych i krótką częstotliwością odświeżania dodaj zapytanie różnicowe.

Ograniczenie rozmiaru

Użyj zestawów danych referencyjnych, które są mniejsze niż 300 MB, aby uzyskać najlepszą wydajność. Zestawy danych referencyjnych o rozmiarze 5 GB lub niższym są obsługiwane w zadaniach z co najmniej sześcioma jednostkami przesyłania strumieniowego. Użycie dużego zestawu danych referencyjnych może mieć wpływ na kompleksowe opóźnienie zadania.

Złożoność zapytań może zwiększyć się w celu uwzględnienia przetwarzania stanowego, takiego jak agregacje okienne, sprzężenia czasowe i funkcje analityczne czasowe. Gdy zwiększa się złożoność, maksymalny obsługiwany rozmiar danych referencyjnych zmniejsza się.

Jeśli usługa Stream Analytics nie może załadować danych referencyjnych i wykonać złożone operacje, zadanie kończy się pamięcią i kończy się niepowodzeniem. W takich przypadkach metryka procent wykorzystania jednostek przesyłania strumieniowego osiągnie 100%.

Liczba jednostek przesyłania strumieniowego Zalecany rozmiar
1 50 MB lub mniej
3 150 MB lub mniej
6 i więcej 5 GB lub mniej

Obsługa kompresji nie jest dostępna dla danych referencyjnych. W przypadku zestawów danych referencyjnych większych niż 300 MB użyj usługi SQL Database jako źródła z opcją zapytania różnicowego w celu uzyskania optymalnej wydajności. Jeśli opcja zapytania różnicowego nie jest używana w takich scenariuszach, za każdym razem, gdy zestaw danych referencyjnych zostanie odświeżony, zobaczysz skoki w metryce opóźnienia limitu.

Dołączanie wielu zestawów danych referencyjnych w zadaniu

Dane wejściowe danych referencyjnych można dołączyć tylko do danych wejściowych przesyłania strumieniowego. Aby połączyć wiele zestawów danych referencyjnych, podziel zapytanie na wiele kroków. Oto przykład:

With Step1 as (
    --JOIN input stream with reference data to get 'Desc'
    SELECT streamInput.*, refData1.Desc as Desc
    FROM    streamInput
    JOIN    refData1 ON refData1.key = streamInput.key 
)
--Now Join Step1 with second reference data
SELECT *
INTO    output 
FROM    Step1
JOIN    refData2 ON refData2.Desc = Step1.Desc 

Zadania usługi IoT Edge

Tylko lokalne dane referencyjne są obsługiwane w przypadku zadań brzegowych usługi Stream Analytics. Gdy zadanie jest wdrażane na urządzeniu usługi IoT Edge, ładuje dane referencyjne ze ścieżki pliku zdefiniowanej przez użytkownika. Przygotuj plik danych referencyjnych na urządzeniu.

W przypadku kontenera systemu Windows umieść plik danych referencyjnych na dysku lokalnym i udostępnij dysk lokalny kontenerowi platformy Docker. W przypadku kontenera systemu Linux utwórz wolumin platformy Docker i wypełnij plik danych do woluminu.

Dane referencyjne dotyczące aktualizacji usługi IoT Edge są wyzwalane przez wdrożenie. Po wyzwoleniu moduł usługi Stream Analytics wybiera zaktualizowane dane bez zatrzymywania uruchomionego zadania.

Dane referencyjne można zaktualizować na dwa sposoby:

  • Zaktualizuj ścieżkę danych referencyjnych w zadaniu usługi Stream Analytics z witryny Azure Portal.
  • Zaktualizuj wdrożenie usługi IoT Edge.

Następne kroki