Bagikan melalui


BUAT ALIRAN EKSTERNAL (Transact-SQL)

Penting

Azure SQL Edge dihentikan per 30 September 2025. Untuk informasi selengkapnya dan opsi migrasi, lihat Pemberitahuan Penghentian Layanan.

Nota

Azure SQL Edge tidak lagi mendukung platform ARM64.

Objek EXTERNAL STREAM memiliki tujuan ganda dari aliran input dan output. Ini dapat digunakan sebagai input untuk mengkueri data streaming dari layanan penyerapan peristiwa seperti Azure Event Hubs, Azure IoT Hub (atau Edge Hub) atau Kafka atau dapat digunakan sebagai output untuk menentukan di mana dan cara menyimpan hasil dari kueri streaming.

ALIRAN EKSTERNAL juga dapat ditentukan dan dibuat sebagai output dan input untuk layanan seperti Azure Event Hubs atau penyimpanan Blob. Hal ini memfasilitasi skenario chaining di mana kueri streaming bertahan hasil ke aliran eksternal sebagai output dan kueri streaming lain membaca dari aliran eksternal yang sama dengan input.

Azure SQL Edge saat ini hanya mendukung sumber data berikut sebagai input dan output stream.

Jenis sumber data Masukan Keluaran Description
Azure IoT Edge Ya Ya Sumber data untuk membaca dan menulis data streaming ke hub Azure IoT Edge. Untuk informasi selengkapnya, lihat IoT Edge Hub.
SQL Database N Ya Koneksi sumber data untuk menulis data streaming ke SQL Database. Database dapat menjadi database lokal di Azure SQL Edge, atau database jarak jauh di SQL Server atau Azure SQL Database.
Kafka Ya N Sumber data untuk membaca data streaming dari topik Kafka.

Syntax

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
);

Arguments

Sumber_Data

Untuk informasi selengkapnya, lihat DATA_SOURCE.

FILE_FORMAT

Untuk informasi selengkapnya, lihat FILE_FORMAT.

TEMPAT

Menentukan nama untuk data atau lokasi aktual di sumber data.

  • Untuk objek stream Tepi Hub atau Kafka, lokasi menentukan nama topik Tepi Hub atau Kafka untuk dibacakan atau dituliskan.
  • Untuk objek aliran SQL (SQL Server, Azure SQL Database, atau Azure SQL Edge), lokasi menentukan nama tabel. Jika stream dibuat dalam database dan skema yang sama dengan tabel tujuan, maka dengan nama Tabel sudah cukup. Jika tidak, Anda harus sepenuhnya memenuhi syarat nama tabel (<database_name>.<schema_name>.<table_name>).
  • Untuk lokasi objek stream Azure Blob Storage mengacu pada pola jalur yang digunakan di dalam wadah blob. Untuk informasi selengkapnya, lihat Output dari Azure Stream Analytics.

INPUT_OPTIONS

Tentukan opsi sebagai pasangan kunci-nilai untuk layanan seperti Kafka dan IoT Edge Hubs, yang merupakan input ke kueri streaming.

  • PARTISI:

    Jumlah partisi yang ditentukan untuk topik. Jumlah maksimum partisi yang dapat digunakan dibatasi hingga 32 (Berlaku untuk Aliran Input Kafka).

    • CONSUMER_GROUP:

      Event dan IoT Hubs membatasi jumlah pembaca dalam satu grup konsumen (hingga 5). Membiarkan bidang ini kosong akan menggunakan kelompok konsumen '$Default'.

      • Disiapkan untuk penggunaan di masa mendatang. Tidak berlaku untuk Azure SQL Edge.
    • TIME_POLICY:

      Menjelaskan apakah akan menghilangkan peristiwa atau menyesuaikan waktu peristiwa saat peristiwa terlambat atau peristiwa yang tidak berurutan melewati nilai toleransinya.

      • Disiapkan untuk penggunaan di masa mendatang. Tidak berlaku untuk Azure SQL Edge.
    • LATE_EVENT_TOLERANCE:

      Penundaan waktu maksimum yang dapat diterima. Penundaan mewakili perbedaan antara cap waktu acara dan jam sistem.

      • Disiapkan untuk penggunaan di masa mendatang. Tidak berlaku untuk Azure SQL Edge.
    • OUT_OF_ORDER_EVENT_TOLERANCE:

      Peristiwa dapat tiba secara tidak berurutan setelah melakukan perjalanan dari input ke kueri streaming. Peristiwa ini dapat diterima apa adanya, atau Anda dapat memilih untuk berhenti sejenak selama periode yang ditetapkan untuk menyusun ulang peristiwa tersebut.

      • Disiapkan untuk penggunaan di masa mendatang. Tidak berlaku untuk Azure SQL Edge.

OUTPUT_OPTIONS

Tentukan opsi sebagai pasangan kunci-nilai untuk layanan yang didukung yang merupakan output untuk kueri streaming

  • REJECT_POLICY: DROP | PENGULANGAN

    Spesies kebijakan penanganan kesalahan data saat terjadi kesalahan konversi data.

    • Berlaku untuk semua output yang didukung.
  • MINIMUM_ROWS:

    Baris minimum diperlukan per batch yang ditulis ke output. Untuk Parket, setiap batch membuat file baru.

    • Berlaku untuk semua output yang didukung.
  • MAXIMUM_TIME:

    Waktu tunggu maksimum dalam menit per batch. Setelah waktu ini, batch akan ditulis ke output bahkan jika persyaratan baris minimum tidak terpenuhi.

    • Berlaku untuk semua output yang didukung.
  • PARTITION_KEY_COLUMN:

    Kolom yang digunakan untuk kunci partisi.

    • Disiapkan untuk penggunaan di masa mendatang. Tidak berlaku untuk Azure SQL Edge.
  • PROPERTY_COLUMNS:

    Daftar kolom output yang dipisahkan koma yang dilampirkan ke pesan sebagai properti kustom, jika disediakan.

    • Disiapkan untuk penggunaan di masa mendatang. Tidak berlaku untuk Azure SQL Edge.
  • SYSTEM_PROPERTY_COLUMNS:

    Bus LayananKumpulan pasangan nama/nilai berformat JSON untuk nama Properti Sistem dan kolom output yang akan diisikan di pesan Azure Service Bus. Contohnya, { "MessageId": "column1", "PartitionKey": "column2" }.

    • Disiapkan untuk penggunaan di masa mendatang. Tidak berlaku untuk Azure SQL Edge.
  • PARTITION_KEY:

    Nama kolom output yang berisi kunci partisi. Kunci partisi adalah pengidentifikasi unik untuk partisi dalam tabel tertentu yang membentuk bagian pertama dari kunci utama entitas. Ini adalah nilai string yang mungkin berukuran hingga 1 KB.

    • Disiapkan untuk penggunaan di masa mendatang. Tidak berlaku untuk Azure SQL Edge.
  • ROW_KEY:

    Nama kolom output yang berisi kunci baris. Kunci baris adalah pengidentifikasi unik untuk entitas dalam partisi tertentu. Kunci baris membentuk bagian kedua dari kunci primer entitas. Kunci baris adalah nilai string yang mungkin berukuran hingga 1 KB.

    • Disiapkan untuk penggunaan di masa mendatang. Tidak berlaku untuk Azure SQL Edge.
  • BATCH_SIZE:

    Ini menunjukkan jumlah transaksi untuk penyimpanan tabel di mana maksimum dapat mencapai 100 rekaman. Untuk Azure Functions, ini menunjukkan ukuran batch dalam byte yang dikirim ke fungsi per panggilan - defaultnya adalah 256 kB.

    • Disiapkan untuk penggunaan di masa mendatang. Tidak berlaku untuk Azure SQL Edge.
  • MAXIMUM_BATCH_COUNT:

    Jumlah maksimum peristiwa yang dikirim ke fungsi per panggilan untuk Azure Function - defaultnya adalah 100. Untuk SQL Database, ini menunjukkan jumlah maksimum rekaman yang dikirim dengan setiap transaksi sisipan massal - default adalah 10.000.

    • Berlaku untuk semua output berbasis SQL
  • STAGING_AREA: Objek SUMBER DATA EKSTERNAL ke Blob Storage

    Area penahapan untuk penyerapan data throughput tinggi ke Azure Synapse Analytics

    • Disiapkan untuk penggunaan di masa mendatang. Tidak berlaku untuk Azure SQL Edge.

Untuk informasi selengkapnya tentang opsi input dan output yang didukung yang sesuai dengan jenis sumber data, lihat Azure Stream Analytics - Gambaran Umum Input dan Azure Stream Analytics - Gambaran Umum Output masing-masing.

Examples

Contoh A: EdgeHub

Jenis: Input atau Output.

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'
            );

Contoh B: Azure SQL Database, Azure SQL Edge, SQL Server

Tipe: Output

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'
            );

Contoh C: Kafka

Tipe: Input

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'
            );