Použití referenčních dat z SQL Database pro úlohu Azure Stream Analytics

Referenční data jsou statická nebo pomalu se měnící datová sada, kterou spojujete se svými streamovanými daty, abyste je obohatili, například přidáváním detailů o produktu do řetězce prodejních událostí. Azure Stream Analytics podporuje Azure SQL Database jako zdroj referenčních dat, takže si můžete tato data vyhledat a kombinovat s aktuálními vstupy.

Tento článek vám ukáže, jak nastavit Azure SQL Database jako referenční datový vstup pro práci Stream Analytics, a to pomocí jak portálu Azure, tak Visual Studio s nástroji Stream Analytics.

Přidejte referenční data SQL databáze pomocí portálu Azure

Použijte následující kroky k přidání Azure SQL Database jako referenčního vstupního zdroje pomocí portálu Azure:

Požadavky na portál

  1. Vytvořte úlohu Stream Analytics.

  2. Vytvořte účet úložiště, který bude používat úloha Stream Analytics.

    Důležité

    Azure Stream Analytics uchovává snapshoty v rámci tohoto úložného účtu. Při konfiguraci politiky udržení zajistěte, aby zvolené časové období zahrnovalo dobu obnovy, kterou chcete pro svou práci v Stream Analytics.

  3. Vytvořte si Azure SQL Database s datovou sadou, kterou práce Stream Analytics používá jako referenční data.

Definování vstupu referenčních dat služby SQL Database

  1. V úloze Stream Analytics vyberte vstupy v části Topologie úlohy. Vyberte Přidat referenční vstup a poté vyberte SQL Database.

    Snímek obrazovky podokna Vstupy služby Stream Analytics s vybranou možností Přidat referenční vstup, který zobrazuje rozevírací seznam s hodnotami Úložiště blob a databáze SQL.

  2. Vyplňte vstupní konfiguraci Stream Analytics. Vyberte název databáze, název serveru a přihlašovací údaje k databázi. Pro pravidelné obnovování vstupu referenčních dat vyberte Zapnout a zadejte obnovovací frekvenci v DD:HH:MM. U velkých datových sad s krátkým intervalem aktualizace sleduje dotaz delta změny v referenčních datech tak, že načítá všechny řádky v databázi SQL Database, které byly vloženy nebo odstraněny mezi počátečním časem @deltaStartTime a koncovým časem @deltaEndTime.

    Pro více informací viz delta dotaz.

    Snímek obrazovky stránky nového vstupu databáze SQL s konfiguračním formulářem v levém podokně a dotazem na snímek v pravém podokně.

  3. Otestujte dotaz snímku v editoru dotazů SQL. Pro více informací viz Použijte SQL editor dotazů v portálu Azure pro připojení a dotazování dat.

Zadejte úložný účet v konfiguraci práce

Přejděte do nastavení úložného účtu v sekci Konfigurovat a pak vyberte Přidat účet úložiště.

Snímek obrazovky podokna nastavení účtu úložiště s tlačítkem Přidat účet úložiště v pravém podokně.

Spusťte úlohu

  1. Poté, co nastavíte ostatní vstupy, výstupy a dotazy, začněte s Stream Analytics.

Přidejte referenční data SQL databáze pomocí Visual Studio

Použijte následující kroky k přidání Azure SQL Database jako referenčního vstupního zdroje pomocí Visual Studio:

Požadavky sady Visual Studio

  1. Nainstalujte nástroje Stream Analytics pro Visual Studio. Nástroje Stream Analytics podporují následující verze Visual Studio:

    • Visual Studio 2015
    • Visual Studio 2019
  2. Seznamte se s rychlým startem pro nástroje Stream Analytics pro Visual Studio.

  3. Vytvořte si účet úložiště.

    Důležité

    Azure Stream Analytics uchovává snapshoty v rámci tohoto úložného účtu. Při konfiguraci politiky udržení zajistěte, aby zvolené časové období zahrnovalo dobu obnovy, kterou chcete pro svou práci v Stream Analytics.

Vytvoření tabulky SQL Database

Pomocí aplikace SQL Server Management Studio vytvořte tabulku pro uložení referenčních dat. Podrobnosti najdete v tématu Návrh první služby Azure SQL Database pomocí aplikace SSMS .

Následující tvrzení vytváří ukázkovou tabulku:

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

Zvolte si předplatné.

  1. V sadě Visual Studio v nabídce Zobrazení vyberte Průzkumník serveru.

  2. Stiskněte a podržte (nebo klikněte pravým tlačítkem na) Azure, vyberte Připojit k předplatnému Microsoft Azure a přihlaste se pomocí svého účtu Azure.

Vytvoření projektu Stream Analytics

  1. Vyberte Soubor>nový projekt.

  2. V seznamu šablon vyberte Stream Analytics a poté Azure Stream Analytics Application.

  3. Zadejte název projektu, lokalitu a název řešení a poté vyberte OK.

    Screenshot dialogu New Project s vybranou šablonou Stream Analytics a aplikací Azure Stream Analytics, přičemž jsou zvýrazněny boxy Jméno, Lokalita a Název řešení.

Definování vstupu referenčních dat služby SQL Database

  1. Vytvořte nový vstup.

    Snímek obrazovky dialogu Přidat novou položku s vybranou možností Vstup.

  2. Otevřete Input.json v Průzkumník řešení.

  3. Vyplňte konfiguraci vstupu Stream Analytics. Zadejte název databáze, název serveru, typ obnovy a obnovovací frekvenci. Zadejte obnovovací frekvenci ve formátu DD:HH:MM.

    Screenshot vstupní konfigurace Stream Analytics s hodnotami zadanými nebo vybranými z rozbalovacích seznamů.

    Pokud zvolíte Spustit pouze jednou nebo Spustit pravidelně, Visual Studio vygeneruje jeden SQL CodeBehind soubor s názvem [Input Alias].snapshot.sql v projektu pod uzlem Input.json souboru.

    Snímek obrazovky aplikace Průzkumník řešení se zvýrazněným souborem SQL CodeBehind Chemicals.snapshot.sql.

    Pokud zvolíte Obnovovat periodicky s Deltou, Visual Studio vygeneruje dva SQL CodeBehind soubory: [Input Alias].snapshot.sql a [Input Alias].delta.sql.

    Snímek obrazovky aplikace Průzkumník řešení se zvýrazněnými soubory SQL CodeBehind Chemicals.delta.sql a Chemicals.snapshot.sql.

  4. Otevřete soubor SQL v editoru a zapište dotaz SQL.

  5. Pokud používáte Visual Studio 2019 a nainstalovali jste SQL Server Data Tools, můžete dotaz otestovat výběrem Execute. Otevře se průvodce, který vám pomůže připojit se k SQL databázi, a výsledek dotazu se zobrazí v okně dole.

Zadejte účet úložiště

Otevřete JobConfig.json pro určení úložného účtu pro ukládání SQL referenčních snapshotů.

Screenshot konfigurace úlohy Stream Analytics zobrazený s výchozími hodnotami a zvýrazněnými globálními nastaveními úložiště.

Místní testování a nasazení do Azure

Než úlohu nasadíte do Azure, můžete dotazovací logiku otestovat lokálně proti živým vstupním datům. Pro více informací o této funkci viz Testování živých dat lokálně pomocí nástrojů Azure Stream Analytics pro Visual Studio (Preview). Po dokončení testování vyberte Odeslat do Azure. Informace o tom, jak úlohu spustit, najdete v rychlém startu Vytvoření úlohy Stream Analytics pomocí nástrojů Azure Stream Analytics pro Visual Studio.

Delta dotaz

Když použijete delta dotaz, použijte temporal tables v Azure SQL Database.

  1. Vytvořte dočasnou tabulku ve službě 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. Vytvořte dotaz na snímek.

    Pomocí parametru @snapshotTime určete modulu runtime služby Stream Analytics, aby načetl referenční datovou sadu z temporální tabulky služby SQL Database platné v daném systémovém čase. Pokud tento parametr neuvedete, riskujete, že získáte nepřesnou základní referenční datovou sadu kvůli posunu hodin. Následující příklad ukazuje kompletní dotaz na snapshot:

       SELECT DeviceId, GroupDeviceId, [Description]
       FROM dbo.DeviceTemporal
       FOR SYSTEM_TIME AS OF @snapshotTime
    
  3. Vytvořte delta dotaz.

    Tento dotaz získá všechny řádky v SQL databázi, které byly vloženy nebo smazány během začátku, @deltaStartTime, a koncového času @deltaEndTime. Rozdílový dotaz musí vrátit stejné sloupce jako dotaz pro snímek a také sloupec operation. Tento sloupec určuje, zda je řádek vložen nebo smazán mezi @deltaStartTime a @deltaEndTime. Výsledné řádky jsou označeny jako 1 , pokud byly vloženy záznamy, nebo 2 , pokud byly odstraněny. Dotaz musí také přidat watermark na straně SQL Serveru, aby bylo zajištěno, že všechny aktualizace v období delta budou správně zachyceny. Použití delta dotazu bez vodoznaku může vést k nesprávné referenční datové sadě.

    U aktualizovaných záznamů temporální tabulka vede evidenci tím, že zaznamená operaci vložení a odstranění. Runtime Stream Analytics pak aplikuje výsledky delta dotazu na předchozí snapshot, aby udržel referenční data aktuální. Následující příklad ukazuje delta dotaz:

       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
    

    Modul runtime služby Stream Analytics může kromě delta dotazu pravidelně spouštět také dotaz na snímek za účelem ukládání kontrolních bodů.

    Důležité

    Když používáte dotazy s delta referenčními daty, neprovádějte opakované stejné aktualizace tabulky s časovými referencemi. To může vést k nesprávným výsledkům. Zde je příklad, který může způsobit, že referenční data budou produkovat nesprávné výsledky:

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

    Správný příklad:

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

    Tato podmínka zajišťuje, že nedochází k duplicitním aktualizacím.

Otestování dotazu

Ověřte, že váš dotaz vrací očekávanou datovou sadu, kterou úloha Stream Analytics používá jako referenční data. Pro ověření dotazu přejděte do Inputs v sekci Job topology v portálu. Poté na referenčním vstupu SQL Database vyberte Ukázková data. Jakmile bude vzorek dostupný, můžete si soubor stáhnout a zkontrolovat, zda jsou vrácená data podle očekávání. Pro optimalizaci vývojových a testovacích iterací použijte nástroje Stream Analytics pro Visual Studio. Můžete také použít jakýkoli jiný nástroj, který preferujete, abyste nejprve zajistili, že dotaz vrátí správné výsledky z vaší Azure SQL Database, a pak tento dotaz použít ve své práci v oblasti Stream Analytics.

Testování dotazu pomocí editoru Visual Studio Code

Nainstalujte nástroje Azure Stream Analytics aSQL Server (mssql) do editoru Visual Studio Code a nastavte projekt ASA. Další informace najdete v tématu Rychlý start: Vytvoření úlohy Azure Stream Analytics v aplikaci Visual Studio Code a v kurzu k rozšíření SQL Server (mssql).

  1. Nakonfigurujte vstup referenčních dat SQL.

    Screenshot záložky Visual Studio Code editoru, která ukazuje ReferenceSQLDatabase.json soubor.

  2. Vyberte ikonu SQL Server a vyberte Přidat připojení.

    Screenshot levého panelu s zvýrazněnou možností Přidat připojení.

  3. Vyplňte informace o připojení.

    Screenshot formuláře pro spojení s zvýrazněnými databázovými a serverovými informačními poli.

  4. Vyberte a podržte (nebo klikněte pravým tlačítkem) v referenčním SQL a vyberte Spustit dotaz.

    Screenshot kontextového menu s zvýrazněnou možností Spustit dotaz.

  5. Zvolte připojení.

    Snímek obrazovky dialogového okna s textem „Vytvořit profil připojení z níže uvedeného seznamu“ a s jednou zvýrazněnou položkou seznamu.

  6. Zkontrolujte a ověřte výsledek dotazu.

    Screenshot výsledků vyhledávání dotazů v záložce editora Visual Studio Code.

Nejčastější dotazy

Přináším navíc náklady při zadávání SQL referenčních dat v Azure Stream Analytics?

V práci Stream Analytics nejsou žádné další náklady za jednotku streamování . Úloha Stream Analytics ale musí mít přidružený účet úložiště Azure. Úloha Stream Analytics dotazuje SQL databázi (během intervalu spuštění a obnovy úlohy), aby získala referenční dataset, a ukládá tento snapshot do úložného účtu. Ukládání těchto snímků znamená dodatečné poplatky uvedené na stránce s cenami pro účet Azure úložiště.

Jak poznám, zda je dotazován referenční datový snapshot ze SQL Database a používá se v práci Azure Stream Analytics?

Dvě metriky, filtrované podle logického názvu (v sekci Metrics v Azure portálu), vám umožní sledovat stav referenčních dat SQL databáze.

  • InputEvents: Tato metrika měří počet záznamů načtených z referenční datové sady SQL databáze.
  • InputEventBytes: Tato metrika měří velikost snímku referenčních dat načteného do paměti úlohy Stream Analytics.

Obě metriky dohromady určují, zda úloha vyhledá SQL databázi pro načtení referenční datasetu a poté ji načte do paměti.

Potřebuji speciální typ Azure SQL Database?

Azure Stream Analytics pracuje s jakýmkoli typem Azure SQL Database. Obnovovací frekvence, kterou nastavíte pro vstup referenčních dat, však může ovlivnit zatížení dotazu. Pro použití možnosti delta dotazu použijte časové tabulky v Azure SQL Database.

Proč Azure Stream Analytics ukládá snímky v účtu Azure Storage?

Stream Analytics zaručuje přesně jednorázové zpracování událostí a alespoň jednorázové doručení událostí. Pokud dočasné problémy ovlivňují vaši práci, je potřeba trochu přehrávání pro obnovení stavu. Pro povolení přehrávání musí být tyto snímky uloženy v účtu Azure Storage. Další informace o opakovaném zpracování od kontrolního bodu najdete v článku Koncepty kontrolních bodů a opakovaného zpracování v úlohách Azure Stream Analytics.