Udostępnij za pośrednictwem


Używanie danych referencyjnych z usługi SQL Database dla zadania usługi Azure Stream Analytics

Usługa Azure Stream Analytics obsługuje usługę Azure SQL Database jako źródło danych wejściowych dla danych referencyjnych. Usługę SQL Database można używać jako danych referencyjnych dla zadania usługi Stream Analytics w witrynie Azure Portal i w programie Visual Studio za pomocą narzędzi usługi Stream Analytics. W tym artykule pokazano, jak wykonać obie metody.

Azure Portal

Wykonaj następujące kroki, aby dodać usługę Azure SQL Database jako źródło danych wejściowych referencyjnych przy użyciu witryny Azure Portal:

Wymagania wstępne dotyczące portalu

  1. Tworzenie zadania usługi Stream Analytics

  2. Utwórz konto magazynu, które ma być używane przez zadanie usługi Stream Analytics.

    Ważne

    Usługa Azure Stream Analytics zachowuje migawki na tym koncie magazynu. Podczas konfigurowania zasad przechowywania należy upewnić się, że wybrany przedział czasu skutecznie obejmuje żądany czas trwania odzyskiwania dla zadania usługi Stream Analytics.

  3. Utwórz bazę danych Azure SQL Database z zestawem danych, który ma być używany jako dane referencyjne przez zadanie usługi Stream Analytics.

Definiowanie danych referencyjnych usługi SQL Database — dane wejściowe

  1. W zadaniu usługi Stream Analytics wybierz pozycję Dane wejściowe w obszarze Topologia zadania. Kliknij pozycję Dodaj dane wejściowe odwołania i wybierz pozycję SQL Database.

    Dane wejściowe są wybierane w okienku nawigacji po lewej stronie. W obszarze Dane wejściowe wybierz pozycję + Dodaj dane wejściowe odwołania, wyświetlając listę rozwijaną zawierającą wartości Blob Storage i SQL Database.

  2. Wypełnij konfiguracje danych wejściowych usługi Stream Analytics. Wybierz nazwę bazy danych, nazwę serwera, nazwę użytkownika i hasło. Jeśli dane wejściowe danych referencyjnych mają być okresowo odświeżane, wybierz pozycję "Włączone", aby określić częstotliwość odświeżania w DD:HH:MM. Jeśli masz duże zestawy danych z krótką częstotliwością odświeżania. Zapytanie różnicowe umożliwia śledzenie zmian w danych referencyjnych przez pobranie wszystkich wierszy w usłudze SQL Database, które zostały wstawione lub usunięte w czasie rozpoczęcia, @deltaStartTimei godziny @deltaEndTimezakończenia.

Zobacz zapytanie różnicowe.

Po wybraniu usługi SQL Database zostanie wyświetlona strona Nowe dane wejściowe usługi SQL Database. W okienku po lewej stronie znajduje się formularz konfiguracji i zapytanie Migawka w okienku po prawej stronie.

  1. Przetestuj zapytanie migawki w edytorze zapytań SQL. Aby uzyskać więcej informacji, zobacz Używanie edytora zapytań SQL w witrynie Azure Portal do nawiązywania połączenia z danymi i wykonywania względem nich zapytań

Określanie konta magazynu w konfiguracji zadania

Przejdź do obszaru Ustawienia konta magazynu w obszarze Konfigurowanie i wybierz pozycję Dodaj konto magazynu.

Ustawienia konta magazynu są wybierane w okienku po lewej stronie. W okienku po prawej stronie znajduje się przycisk Dodaj konto magazynu.

Uruchamianie zadania

Po skonfigurowaniu innych danych wejściowych, danych wyjściowych i zapytań możesz uruchomić zadanie usługi Stream Analytics.

Narzędzia dla programu Visual Studio

Wykonaj następujące kroki, aby dodać usługę Azure SQL Database jako źródło danych wejściowych referencyjnych przy użyciu programu Visual Studio:

Wymagania wstępne programu Visual Studio

  1. Zainstaluj narzędzia usługi Stream Analytics dla programu Visual Studio. Obsługiwane są następujące wersje programu Visual Studio:

    • Visual Studio 2015
    • Visual Studio 2019
  2. Zapoznaj się z przewodnikami Szybki start dotyczącymi narzędzi usługi Stream Analytics dla programu Visual Studio .

  3. Create a storage account (Tworzenie konta magazynu).

    Ważne

    Usługa Azure Stream Analytics zachowuje migawki na tym koncie magazynu. Podczas konfigurowania zasad przechowywania należy upewnić się, że wybrany przedział czasu skutecznie obejmuje żądany czas trwania odzyskiwania dla zadania usługi Stream Analytics.

Tworzenie tabeli usługi SQL Database

Użyj programu SQL Server Management Studio, aby utworzyć tabelę do przechowywania danych referencyjnych. Aby uzyskać szczegółowe informacje, zobacz Projektowanie pierwszej usługi Azure SQL Database przy użyciu programu SSMS .

Przykładowa tabela użyta w poniższym przykładzie została utworzona na podstawie następującej instrukcji:

create table chemicals(Id Bigint,Name Nvarchar(max),FullName Nvarchar(max));

Wybierz swoją subskrypcję

  1. W programie Visual Studio w menu Widok wybierz opcję Eksplorator serwera.

  2. Kliknij prawym przyciskiem myszy pozycję Azure, wybierz pozycję Połącz z subskrypcją platformy Microsoft Azure i zaloguj się przy użyciu konta platformy Azure.

Tworzenie projektu usługi Stream Analytics

  1. Wybierz pozycję Plik > nowy projekt.

  2. Na liście szablonów po lewej stronie wybierz pozycję Stream Analytics, a następnie wybierz pozycję Azure Stream Analytics Application.

  3. Wprowadź nazwę projektu, lokalizację i nazwę rozwiązania, a następnie wybierz przycisk OK.

    Wybrano szablon usługi Stream Analytics, wybrano pozycję Aplikacja usługi Azure Stream Analytics, a pola Nazwa, Lokalizacja i Nazwa rozwiązania zostały wyróżnione.

Definiowanie danych referencyjnych usługi SQL Database — dane wejściowe

  1. Utwórz nowe dane wejściowe.

    W obszarze Dodaj nowy element wybrano pozycję Dane wejściowe.

  2. Kliknij dwukrotnie Input.json w Eksplorator rozwiązań.

  3. Wypełnij konfigurację danych wejściowych usługi Stream Analytics. Wybierz nazwę bazy danych, nazwę serwera, typ odświeżania i częstotliwość odświeżania. Określ częstotliwość odświeżania w formacie DD:HH:MM.

    W obszarze Konfiguracja danych wejściowych usługi Stream Analytics wartości są wprowadzane lub wybierane z list rozwijanych.

    Jeśli wybierzesz opcję "Wykonaj tylko raz" lub "Wykonaj okresowo", jeden plik SQL CodeBehind o nazwie [Alias wejściowy].snapshot.sql zostanie wygenerowany w projekcie w węźle pliku Input.json .

    Wyróżniono Chemicals.snapshot.sql pliku SQL CodeBehind.

    W przypadku wybrania opcji "Odśwież okresowo z funkcją delta" zostaną wygenerowane dwa pliki SQL CodeBehind: [Alias wejściowy].snapshot.sql i [Alias wejściowy].delta.sql.

    Wyróżniono pliki SQL CodeBehind Chemicals.delta.sql i Chemicals.snapshot.sql.

  4. Otwórz plik SQL w edytorze i napisz zapytanie SQL.

  5. Jeśli używasz programu Visual Studio 2019 i masz zainstalowane narzędzia SQL Server Data Tools, możesz przetestować zapytanie, klikając pozycję Wykonaj. Zostanie wyświetlone okno kreatora ułatwiające nawiązanie połączenia z usługą SQL Database, a wynik zapytania pojawi się w oknie u dołu.

Określanie konta magazynu

Otwórz JobConfig.json , aby określić konto magazynu do przechowywania migawek odwołań SQL.

Konfiguracja konfiguracji zadania usługi Stream Analytics jest wyświetlana z wartościami domyślnymi. Globalne ustawienia magazynu są wyróżnione.

Testowanie lokalne i wdrażanie na platformie Azure

Przed wdrożeniem zadania na platformie Azure możesz przetestować logikę zapytań lokalnie względem danych wejściowych na żywo. Aby uzyskać więcej informacji na temat tej funkcji, zobacz Testowanie danych na żywo lokalnie przy użyciu narzędzi usługi Azure Stream Analytics dla programu Visual Studio (wersja zapoznawcza). Po zakończeniu testowania kliknij pozycję Prześlij na platformę Azure. Zapoznaj się z przewodnikiem Szybki start Tworzenie usługi Stream Analytics przy użyciu narzędzi usługi Azure Stream Analytics dla programu Visual Studio , aby dowiedzieć się, jak uruchomić zadanie.

Zapytanie różnicowe

W przypadku korzystania z zapytania różnicowego zalecane są tabele czasowe w usłudze Azure SQL Database .

  1. Utwórz tabelę czasową w usłudze Azure SQL Database.

       CREATE TABLE DeviceTemporal
       (
          [DeviceId] int NOT NULL PRIMARY KEY CLUSTERED
          , [GroupDeviceId] nvarchar(100) NOT NULL
          , [Description] nvarchar(100) NOT NULL
          , [ValidFrom] datetime2 (0) GENERATED ALWAYS AS ROW START
          , [ValidTo] datetime2 (0) GENERATED ALWAYS AS ROW END
          , PERIOD FOR SYSTEM_TIME (ValidFrom, ValidTo)
       )
       WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.DeviceHistory));  -- DeviceHistory table will be used in Delta query
    
  2. Utwórz zapytanie migawki.

    Użyj parametru @snapshotTime , aby poinstruować środowisko uruchomieniowe usługi Stream Analytics w celu uzyskania zestawu danych referencyjnych z tabeli czasowej usługi SQL Database prawidłowej w czasie systemowym. Jeśli nie podasz tego parametru, ryzykujesz uzyskanie niedokładnego podstawowego zestawu danych referencyjnych z powodu niesymetryczności zegara. Poniżej przedstawiono przykład pełnego zapytania migawki:

       SELECT DeviceId, GroupDeviceId, [Description]
       FROM dbo.DeviceTemporal
       FOR SYSTEM_TIME AS OF @snapshotTime
    
  3. Utwórz zapytanie różnicowe.

    To zapytanie pobiera wszystkie wiersze w usłudze SQL Database, które zostały wstawione lub usunięte w czasie rozpoczęcia, @deltaStartTime i godzina zakończenia @deltaEndTime. Zapytanie różnicowe musi zwracać te same kolumny co zapytanie migawki, a także operację kolumny. Ta kolumna określa, czy wiersz jest wstawiany lub usuwany między @deltaStartTime i @deltaEndTime. Wynikowe wiersze są oflagowane jako 1 , jeśli rekordy zostały wstawione, lub 2 w przypadku usunięcia. Zapytanie musi również dodać znak wodny po stronie programu SQL Server, aby upewnić się, że wszystkie aktualizacje w okresie różnicowym są odpowiednio przechwytywane. Użycie zapytania różnicowego bez znaku wodnego może spowodować nieprawidłowe odwołanie do zestawu danych.

    W przypadku rekordów, które zostały zaktualizowane, tabela czasowa wykonuje księgowanie, przechwytując operację wstawiania i usuwania. Następnie środowisko uruchomieniowe usługi Stream Analytics zastosuje wyniki zapytania różnicowego do poprzedniej migawki, aby zachować aktualność danych referencyjnych. Poniżej przedstawiono przykład zapytania różnicowego:

       SELECT DeviceId, GroupDeviceId, Description, ValidFrom as _watermark_, 1 as _operation_
       FROM dbo.DeviceTemporal
       WHERE ValidFrom BETWEEN @deltaStartTime AND @deltaEndTime   -- records inserted
       UNION
       SELECT DeviceId, GroupDeviceId, Description, ValidTo as _watermark_, 2 as _operation_
       FROM dbo.DeviceHistory   -- table we created in step 1
       WHERE ValidTo BETWEEN @deltaStartTime AND @deltaEndTime     -- record deleted
    

    Należy pamiętać, że środowisko uruchomieniowe usługi Stream Analytics może okresowo uruchamiać zapytanie migawki oprócz zapytania różnicowego w celu przechowywania punktów kontrolnych.

    Ważne

    W przypadku korzystania z zapytań różnicowych danych referencyjnych nie należy wielokrotnie wprowadzać identycznych aktualizacji do tabeli danych referencyjnych czasowych. Może to spowodować generowanie nieprawidłowych wyników. Oto przykład, który może spowodować, że dane referencyjne generują nieprawidłowe wyniki:

     UPDATE myTable SET VALUE=2 WHERE ID = 1;
     UPDATE myTable SET VALUE=2 WHERE ID = 1;      
    

    Prawidłowy przykład:

     UPDATE myTable SET VALUE = 2 WHERE ID = 1 and not exists (select * from myTable where ID = 1 and value = 2);
    

    Gwarantuje to, że nie są wykonywane zduplikowane aktualizacje.

Testowanie zapytania

Ważne jest, aby sprawdzić, czy zapytanie zwraca oczekiwany zestaw danych, którego zadanie usługi Stream Analytics będzie używać jako danych referencyjnych. Aby przetestować zapytanie, przejdź do pozycji Dane wejściowe w sekcji Topologia zadań w portalu. Następnie możesz wybrać pozycję Przykładowe dane w danych wejściowych dokumentacji usługi SQL Database. Po udostępnieniu przykładu możesz pobrać plik i sprawdzić, czy zwracane dane są zgodnie z oczekiwaniami. Jeśli chcesz zoptymalizować iteracje programistyczne i testowe, zaleca się użycie narzędzi usługi Stream Analytics dla programu Visual Studio. Możesz również użyć dowolnego innego narzędzia preferencji, aby najpierw upewnić się, że zapytanie zwraca odpowiednie wyniki z usługi Azure SQL Database, a następnie użyć go w zadaniu usługi Stream Analytics.

Testowanie zapytania za pomocą programu Visual Studio Code

Zainstaluj narzędzia Usługi Azure Stream Analytics i program SQL Server (mssql) w programie Visual Studio Code i skonfiguruj projekt ASA. Aby uzyskać więcej informacji, zobacz Szybki start: tworzenie zadania usługi Azure Stream Analytics w programie Visual Studio Code i samouczku rozszerzenia programu SQL Server (mssql).

  1. Skonfiguruj dane wejściowe danych referencyjnych SQL.

    Edytor programu Visual Studio Code (karta) pokazuje ReferenceSQLDatabase.json.

  2. Wybierz ikonę programu SQL Server i kliknij pozycję Dodaj połączenie.

    + Dodaj połączenie jest wyświetlane w okienku po lewej stronie i jest wyróżnione.

  3. Wypełnij informacje o połączeniu.

    Wyróżniono dwa pola informacji o bazie danych i serwerze.

  4. Kliknij prawym przyciskiem myszy odwołanie SQL i wybierz polecenie Wykonaj zapytanie.

    Polecenie Wykonaj zapytanie zostało wyróżnione w menu kontekstowym.

  5. Wybierz połączenie.

    W oknie dialogowym jest wyświetlany komunikat

  6. Przejrzyj i zweryfikuj wynik zapytania.

    Wyniki wyszukiwania zapytań znajdują się na karcie edytora programu VS Code.

Często zadawane pytania

Czy poniesiesz dodatkowy koszt przy użyciu danych referencyjnych SQL w usłudze Azure Stream Analytics?

W zadaniu usługi Stream Analytics nie ma dodatkowych kosztów za jednostkę przesyłania strumieniowego. Jednak zadanie usługi Stream Analytics musi mieć skojarzone konto usługi Azure Storage. Zadanie usługi Stream Analytics wysyła zapytanie do bazy danych SQL (podczas interwału uruchamiania i odświeżania zadania), aby pobrać zestaw danych referencyjnych i przechowywać migawkę na koncie magazynu. Przechowywanie tych migawek spowoduje naliczanie dodatkowych opłat opisanych na stronie cennika konta usługi Azure Storage.

Jak mogę wiedzieć, że migawka danych referencyjnych jest odpytywana z bazy danych SQL i używana w zadaniu usługi Azure Stream Analytics?

Istnieją dwie metryki filtrowane według nazwy logicznej (w obszarze Metryki w witrynie Azure Portal), których można użyć do monitorowania kondycji danych referencyjnych usługi SQL Database.

  • InputEvents: ta metryka mierzy liczbę rekordów załadowanych z zestawu danych referencyjnych usługi SQL Database.
  • InputEventBytes: ta metryka mierzy rozmiar migawki danych referencyjnych załadowanych w pamięci zadania usługi Stream Analytics.

Kombinacja obu tych metryk może służyć do wnioskowania, czy zadanie wykonuje zapytanie względem usługi SQL Database w celu pobrania zestawu danych referencyjnych, a następnie załadowania go do pamięci.

Czy będę wymagać specjalnego typu usługi Azure SQL Database?

Usługa Azure Stream Analytics będzie współpracować z dowolnym typem usługi Azure SQL Database. Należy jednak pamiętać, że częstotliwość odświeżania ustawiona dla danych referencyjnych może mieć wpływ na obciążenie zapytania. Aby użyć opcji zapytania różnicowego, zaleca się używanie tabel czasowych w usłudze Azure SQL Database.

Dlaczego usługa Azure Stream Analytics przechowuje migawki na koncie usługi Azure Storage?

Poza tym gwarantuje przeprowadzenie dokładnie jednej aprowizacji zdarzenia oraz co najmniej jednokrotnego dostarczenia zdarzeń. W przypadkach, gdy przejściowe problemy wpływają na zadanie, do przywrócenia stanu konieczne jest niewielkie odtworzenie. Aby włączyć odtwarzanie, wymagane jest przechowywanie tych migawek na koncie usługi Azure Storage. Aby uzyskać więcej informacji na temat odtwarzania punktów kontrolnych, zobacz Pojęcia dotyczące punktów kontrolnych i odtwarzania w zadaniach usługi Azure Stream Analytics.

Następne kroki