Sdílet prostřednictvím


CREATE EXTERNAL STREAM (Transact-SQL)

Důležité

Azure SQL Edge bude vyřazeno 30. září 2025. Další informace a možnosti migrace najdete v oznámení o vyřazení.

Poznámka:

Azure SQL Edge už nepodporuje platformu ARM64.

Objekt EXTERNAL STREAM má duální účel vstupního i výstupního datového proudu. Dá se použít jako vstup pro dotazování streamovaných dat ze služeb pro příjem událostí, jako jsou Azure Event Hubs, Azure IoT Hub (nebo Edge Hub) nebo Kafka, nebo se dají použít jako výstup k určení, kde a jak ukládat výsledky ze streamovacího dotazu.

Externí stream lze také zadat a vytvořit jako výstup i vstup pro služby, jako je Event Hubs nebo Blob Storage. To usnadňuje řetězení scénářů, kdy streamovací dotaz udržuje výsledky do externího datového proudu jako výstup a další streamovací dotaz čte ze stejného externího streamu jako vstup.

Azure SQL Edge v současné době podporuje jako vstupy a výstupy datových proudů pouze následující zdroje dat.

Typ zdroje dat Vstup Výstup Popis
Centrum Azure IoT Edge Y Y Zdroj dat pro čtení a zápis streamovaných dat do centra Azure IoT Edge. Další informace najdete v tématu IoT Edge Hub.
SQL Database N Y Připojení ke zdroji dat pro zápis streamovaných dat do služby SQL Database Databáze může být místní databáze v Azure SQL Edge nebo vzdálená databáze v SQL Serveru nebo Azure SQL Database.
Kafka Y N Zdroj dat ke čtení streamovaných dat z tématu Kafka

Syntaxe

CREATE EXTERNAL STREAM { external_stream_name }
( <column_definition> [ , <column_definition> ] * ) -- Used for Inputs - optional
WITH  ( <with_options> )

<column_definition> ::=
  column_name <column_data_type>

<data_type> ::=
[ type_schema_name . ] type_name
    [ ( precision [ , scale ] | max ) ]

<with_options> ::=
  DATA_SOURCE = data_source_name ,
  LOCATION = location_name ,
  [ FILE_FORMAT = external_file_format_name ] , --Used for Inputs - optional
  [ <optional_input_options> ] ,
  [ <optional_output_options> ] ,
  TAGS = <tag_column_value>

<optional_input_options> ::=
  INPUT_OPTIONS = ' [ <input_options_data> ] '

<Input_option_data> ::=
      <input_option_values> [ , <input_option_values> ]

<input_option_values> ::=
  PARTITIONS: [ number_of_partitions ]
  | CONSUMER_GROUP: [ consumer_group_name ]
  | TIME_POLICY: [ time_policy ]
  | LATE_EVENT_TOLERANCE: [ late_event_tolerance_value ]
  | OUT_OF_ORDER_EVENT_TOLERANCE: [ out_of_order_tolerance_value ]

<optional_output_options> ::=
  OUTPUT_OPTIONS = ' [ <output_option_data> ] '

<output_option_data> ::=
      <output_option_values> [ , <output_option_values> ]

<output_option_values> ::=
   REJECT_POLICY: [ reject_policy ]
   | MINIMUM_ROWS: [ row_value ]
   | MAXIMUM_TIME: [ time_value_minutes ]
   | PARTITION_KEY_COLUMN: [ partition_key_column_name ]
   | PROPERTY_COLUMNS: [ ( [ output_col_name ] ) ]
   | SYSTEM_PROPERTY_COLUMNS: [ ( [ output_col_name ] ) ]
   | PARTITION_KEY: [ partition_key_name ]
   | ROW_KEY: [ row_key_name ]
   | BATCH_SIZE: [ batch_size_value ]
   | MAXIMUM_BATCH_COUNT: [ batch_value ]
   | STAGING_AREA: [ blob_data_source ]

<tag_column_value> ::= -- Reserved for Future Usage
);

Argumenty

DATA_SOURCE

Další informace najdete v tématu DATA_SOURCE.

FILE_FORMAT

Další informace najdete v tématu FILE_FORMAT.

UMÍSTĚNÍ

Určuje název skutečného data nebo umístění ve zdroji dat.

  • U objektů streamu Edge Hub nebo Kafka určuje umístění název tématu Edge Hub nebo Kafka, do které se má číst nebo zapisovat.
  • Pro objekty streamu SQL (SQL Server, Azure SQL Database nebo Azure SQL Edge) určuje umístění název tabulky. Pokud je datový proud vytvořen ve stejné databázi a schématu jako cílová tabulka, stačí název tabulky. V opačném případě musíte plně kvalifikovat název tabulky (<database_name>.<schema_name>.<table_name>).
  • V případě umístění objektu streamu Azure Blob Storage odkazuje na vzor cesty, který se má použít uvnitř kontejneru objektů blob. Další informace najdete v tématu Výstupy z Azure Stream Analytics.

INPUT_OPTIONS

Zadejte možnosti jako páry klíč-hodnota pro služby, jako jsou Kafka a IoT Edge Hubs, což jsou vstupy do dotazů streamování.

  • ODDÍLY:

    Počet oddílů definovaných pro téma Maximální počet oddílů, které je možné použít, je omezený na 32 (platí pro vstupní streamy Kafka).

    • CONSUMER_GROUP:

      Event a IoT Hubs omezují počet čtenářů v rámci jedné skupiny příjemců (na 5). Když toto pole necháte prázdné, použije se skupina příjemců $Default.

      • Vyhrazeno pro budoucí využití. Nevztahuje se na Azure SQL Edge.
    • TIME_POLICY:

      Popisuje, jestli se mají události vypustit nebo upravit čas události, kdy události zpoždění nebo události mimo pořadí předávají jejich hodnotu tolerance.

      • Vyhrazeno pro budoucí využití. Nevztahuje se na Azure SQL Edge.
    • LATE_EVENT_TOLERANCE:

      Maximální přijatelné časové zpoždění. Zpoždění představuje rozdíl mezi časovým razítkem události a systémovým časem.

      • Vyhrazeno pro budoucí využití. Nevztahuje se na Azure SQL Edge.
    • OUT_OF_ORDER_EVENT_TOLERANCE:

      Události můžou po provedení cesty ze vstupu do dotazu streamování dorazit mimo objednávku. Tyto události je možné přijmout tak, jak jsou, nebo se můžete rozhodnout pozastavit pro nastavené období, abyste je mohli změnit.

      • Vyhrazeno pro budoucí využití. Nevztahuje se na Azure SQL Edge.

OUTPUT_OPTIONS

Zadání možností jako párů klíč-hodnota pro podporované služby, které jsou výstupy pro dotazy streamování

  • REJECT_POLICY: DROP | ZKUSIT JEŠTĚ JEDNOU

    Druh data error handling policies when data conversion errors.

    • Platí pro všechny podporované výstupy.
  • MINIMUM_ROWS:

    Minimální počet požadovaných řádků na dávku zapsanou do výstupu. Pro Parquet vytvoří každá dávka nový soubor.

    • Platí pro všechny podporované výstupy.
  • MAXIMUM_TIME:

    Maximální doba čekání v minutách na dávku Po této době se dávka zapíše do výstupu, i když není splněn minimální požadavek na řádky.

    • Platí pro všechny podporované výstupy.
  • PARTITION_KEY_COLUMN:

    Sloupec, který se používá pro klíč oddílu.

    • Vyhrazeno pro budoucí využití. Nevztahuje se na Azure SQL Edge.
  • PROPERTY_COLUMNS:

    Čárkami oddělený seznam názvů výstupních sloupců, které jsou připojené ke zprávě jako vlastní vlastnosti( pokud jsou k dispozici).

    • Vyhrazeno pro budoucí využití. Nevztahuje se na Azure SQL Edge.
  • SYSTEM_PROPERTY_COLUMNS:

    Kolekce názvů/hodnot ve formátu JSON s názvy systémových vlastností a výstupními sloupci, které se mají do zpráv služby Service Bus naplnit. Například { "MessageId": "column1", "PartitionKey": "column2" }.

    • Vyhrazeno pro budoucí využití. Nevztahuje se na Azure SQL Edge.
  • PARTITION_KEY:

    Název výstupního sloupce obsahujícího klíč oddílu. Klíč oddílu je jedinečný identifikátor oddílu v dané tabulce, který tvoří první část primárního klíče entity. Jedná se o řetězcovou hodnotu, která může mít velikost až 1 kB.

    • Vyhrazeno pro budoucí využití. Nevztahuje se na Azure SQL Edge.
  • ROW_KEY:

    Název výstupního sloupce obsahujícího klíč řádku. Klíč řádku je jedinečný identifikátor entity v daném oddílu. Tvoří druhou část primárního klíče entity. Klíč řádku je řetězcová hodnota, která může mít velikost až 1 kB.

    • Vyhrazeno pro budoucí využití. Nevztahuje se na Azure SQL Edge.
  • BATCH_SIZE:

    Představuje počet transakcí pro úložiště tabulek, kde maximální počet může jít až 100 záznamů. U Azure Functions to představuje velikost dávky v bajtech odesílaných do funkce na volání – výchozí hodnota je 256 kB.

    • Vyhrazeno pro budoucí využití. Nevztahuje se na Azure SQL Edge.
  • MAXIMUM_BATCH_COUNT:

    Maximální počet událostí odeslaných do funkce na volání funkce Azure – výchozí hodnota je 100. U sql Database představuje maximální počet záznamů odeslaných při každé hromadné transakci vložení – výchozí hodnota je 10 000.

    • Platí pro všechny výstupy založené na SQL.
  • STAGING_AREA: Objekt EXTERNÍHO ZDROJE DAT do služby Blob Storage

    Pracovní oblast pro příjem dat s vysokou propustností do Azure Synapse Analytics

    • Vyhrazeno pro budoucí využití. Nevztahuje se na Azure SQL Edge.

Další informace o podporovaných možnostech vstupu a výstupu odpovídajících typu zdroje dat najdete v tématu Azure Stream Analytics – Přehled vstupu a Azure Stream Analytics – Přehled výstupů.

Příklady

Příklad A: EdgeHub

Typ: Vstup nebo výstup.

CREATE EXTERNAL DATA SOURCE MyEdgeHub
    WITH (LOCATION = 'edgehub://');

CREATE EXTERNAL FILE FORMAT myFileFormat
    WITH (FORMAT_TYPE = JSON);

CREATE EXTERNAL STREAM Stream_A
    WITH (
            DATA_SOURCE = MyEdgeHub,
            FILE_FORMAT = myFileFormat,
            LOCATION = '<mytopicname>',
            OUTPUT_OPTIONS = 'REJECT_TYPE: Drop'
            );

Příklad B: Azure SQL Database, Azure SQL Edge, SQL Server

Typ: Výstup

CREATE DATABASE SCOPED CREDENTIAL SQLCredName
    WITH IDENTITY = '<user>',
        SECRET = '<password>';

-- Azure SQL Database
CREATE EXTERNAL DATA SOURCE MyTargetSQLTabl
    WITH (
            LOCATION = '<my_server_name>.database.windows.net',
            CREDENTIAL = SQLCredName
            );

--SQL Server or Azure SQL Edge
CREATE EXTERNAL DATA SOURCE MyTargetSQLTabl
    WITH (
            LOCATION = ' <sqlserver://<ipaddress>,<port>',
            CREDENTIAL = SQLCredName
            );

CREATE EXTERNAL STREAM Stream_A
    WITH (
            DATA_SOURCE = MyTargetSQLTable,
            LOCATION = '<DatabaseName>.<SchemaName>.<TableName>',
            --Note: If table is contained in the database, <TableName> should be sufficient
            OUTPUT_OPTIONS = 'REJECT_TYPE: Drop'
            );

Příklad C: Kafka

Typ: Vstup

CREATE EXTERNAL DATA SOURCE MyKafka_tweets
    WITH (
            --The location maps to KafkaBootstrapServer
            LOCATION = 'kafka://<kafkaserver>:<ipaddress>',
            CREDENTIAL = kafkaCredName
            );

CREATE EXTERNAL FILE FORMAT myFileFormat
    WITH (
            FORMAT_TYPE = JSON,
            DATA_COMPRESSION = 'org.apache.hadoop.io.compress.GzipCodec'
            );

CREATE EXTERNAL STREAM Stream_A (
    user_id VARCHAR,
    tweet VARCHAR
    )
    WITH (
            DATA_SOURCE = MyKafka_tweets,
            LOCATION = '<KafkaTopicName>',
            FILE_FORMAT = myFileFormat,
            INPUT_OPTIONS = 'PARTITIONS: 5'
            );