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.

    Inputs is selected in the left navigation pane. On Inputs, + Add reference input is selected, revealing a drop-down list that shows the values Blob storage and 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 odtworzenie wszystkich wierszy w usłudze SQL Database, które zostały wstawione lub usunięte w czasie rozpoczęcia, @deltaStartTimei godzina @deltaEndTimezakończenia.

Zobacz zapytanie różnicowe.

When SQL Database is selected, the SQL Database New input page appears. There is a configuration form in the left pane, and a Snapshot query in the right pane.

  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.

Storage account settings is selected in the left pane. There is an Add storage account button in the right pane.

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łączenie do subskrypcji 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.

    The Stream Analytics template is selected, Azure Stream Analytics Application is selected, and the Name, Location, and Solution names boxes are highlighted.

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

  1. Utwórz nowe dane wejściowe.

    On Add New Item, Input is selected.

  2. Kliknij dwukrotnie plik 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.

    In Stream Analytics Input Configuration, values are entered or selected from drop-down lists.

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

    The SQL CodeBehind file Chemicals.snapshot.sql is highlighted.

    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.

    The SQL CodeBehind files Chemicals.delta.sql and Chemicals.snapshot.sql are highlighted.

  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 plik JobConfig.json , aby określić konto magazynu do przechowywania migawek odwołań SQL.

Stream Analytics Job Configure Configuration is shown with default values. The Global Storage Settings are highlighted.

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.

    A Visual Studio Code editor (tab) shows ReferenceSQLDatabase.json.

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

    + Add Connection appears in the left pane and is highlighted.

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

    The two boxes for database and server information are highlighted.

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

    Execute Query is highlighted in the context menu.

  5. Wybierz połączenie.

    The dialog box says

  6. Przejrzyj i zweryfikuj wynik zapytania.

    The query search results are in a VS Code editor tab.

— 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