إنشاء دفق خارجي (SQL المعاملات)
كائن EXTERNAL STREAM له غرض مزدوج لكل من دفق الإدخال والإخراج. يمكن استخدامه كمدخل للاستعلام عن بيانات التدفق من خدمات استيعاب الأحداث مثل Azure Event Hub أو Azure IoT Hub (أو Edge Hub) أو Kafka أو يمكن استخدامه كمخرج لتحديد مكان وكيفية تخزين النتائج من استعلام البث.
يمكن أيضا تحديد دفق خارجي وإنشائه كمخرج وإدخال لخدمات مثل مركز الأحداث أو تخزين Blob. يسهل هذا سيناريوهات التسلسل حيث يستمر استعلام الدفق في النتائج إلى الدفق الخارجي كمخرجات وقراءة استعلام دفق آخر من نفس الدفق الخارجي مثل الإدخال.
يدعم SQL do Azure Edge حاليا مصادر البيانات التالية فقط كمدخلات ومخرجات للتدفق.
| نوع مصدر البيانات | إدخال | المخرجات | الوصف |
|---|---|---|---|
| Azure IoT محور إيدج | ذ. | Y | مصدر بيانات لقراءة البيانات المتدفقة وكتابتها إلى مركز Azure IoT Edge. لمزيد من المعلومات، راجع IoT Edge Hub. |
| قاعدة بيانات SQL | ن. | ذ. | اتصال مصدر البيانات لكتابة البيانات المتدفقة إلى قاعدة بيانات SQL. يمكن أن تكون قاعدة البيانات قاعدة بيانات محلية في SQL do Azure Edge أو قاعدة بيانات بعيدة في SQL Server أو Azure SQL Database. |
| Kafka | ذ. | ن. | مصدر البيانات لقراءة البيانات المتدفقة من موضوع كافكا. لا يتوفر دعم Kafka لإصدار ARM64 من SQL do Azure Edge. |
بناء الجملة
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
);
الوسيطات
الموقع: يحدد اسم البيانات الفعلية أو الموقع الفعلي في مصدر البيانات.
- بالنسبة لكائنات دفق Edge Hub أو Kafka، يحدد الموقع اسم موضوع Edge Hub أو Kafka للقراءة منه أو الكتابة إليه.
- بالنسبة SQL كائنات الدفق (SQL Server أو Azure SQL Database أو SQL do Azure Edge) يحدد الموقع اسم الجدول. إذا تم إنشاء الدفق في نفس قاعدة البيانات والمخطط مثل الجدول الوجهة، فهذا يعني أن اسم الجدول فقط. وإلا ستحتاج إلى التأهل الكامل (<database_name.schema_name.table_name) لاسم الجدول.
- على سبيل Azure Blob Storage يشير موقع كائن الدفق إلى نمط المسار المراد استخدامه داخل حاوية الفقاعة. لمزيد من المعلومات حول هذه الميزة، يرجى الرجوع إلى (/articles/stream-analytics/stream-analytics-define-outputs.md#blob-storage-and-azure-data-lake-gen2)
INPUT_OPTIONS: تحديد الخيارات كأزواج من القيم الرئيسية لخدمات مثل Kafka IoT Edge Hub التي تعد مدخلات لاستعلامات البث
- الأقسام: عدد الأقسام المحددة لموضوع. الحد الأقصى لعدد الأقسام التي يمكن استخدامها يقتصر على 32.
- ينطبق على عمليات الدفق إدخال كافكا
- CONSUMER_GROUP: تحد مراكز الأحداث وإنترنت الأشياء من عدد القراء داخل مجموعة مستهلكين واحدة (إلى 5). سيؤدي ترك هذا الحقل فارغا إلى استخدام مجموعة المستهلكين "$Default".
- محجوزة للاستخدام في المستقبل. لا ينطبق على SQL do Azure Edge.
- TIME_POLICY: يصف ما إذا كان يجب إسقاط الأحداث أو ضبط وقت الحدث عندما تتجاوز الأحداث المتأخرة أو الأحداث الخارجة عن الترتيب قيمة التسامح الخاصة بها.
- محجوزة للاستخدام في المستقبل. لا ينطبق على SQL do Azure Edge.
- LATE_EVENT_TOLERANCE: الحد الأقصى للتأخير الزمني المقبول. يمثل التأخير الفرق بين الطابع الزمني للحدث وساعة النظام.
- محجوزة للاستخدام في المستقبل. لا ينطبق على SQL do Azure Edge.
- OUT_OF_ORDER_EVENT_TOLERANCE: يمكن أن تنتهي الأحداث عن الترتيب بعد إجراء الرحلة من الإدخال إلى استعلام البث. يمكن قبول هذه الأحداث كما هي، أو يمكنك اختيار التوقف مؤقتا لفترة محددة لإعادة ترتيبها.
- محجوزة للاستخدام في المستقبل. لا ينطبق على SQL do Azure Edge.
- الأقسام: عدد الأقسام المحددة لموضوع. الحد الأقصى لعدد الأقسام التي يمكن استخدامها يقتصر على 32.
OUTPUT_OPTIONS: تحديد الخيارات كأزواج من القيم الرئيسية للخدمات المدعومة التي تمثل مخرجات لاستعلامات البث
- REJECT_POLICY: إسقاط | إعادة المحاولة أنواع نهج معالجة أخطاء البيانات عند حدوث أخطاء في تحويل البيانات.
- ينطبق على جميع المخرجات المدعومة
- MINIMUM_ROWS: الحد الأدنى من الصفوف المطلوبة لكل دفعة مكتوبة إلى مخرج. بالنسبة إلى باركيه، ستنشئ كل دفعة ملفًا جديدًا.
- ينطبق على جميع المخرجات المدعومة
- MAXIMUM_TIME: الحد الأقصى لوقت الانتظار بالدقائق لكل دفعة. بعد هذا الوقت، ستتم كتابة الدُفعة في الإخراج حتى إذا لم يتم استيفاء الحد الأدنى من متطلبات الصفوف.
- ينطبق على جميع المخرجات المدعومة
- PARTITION_KEY_COLUMN: العمود المستخدم لمفتاح القسم.
- محجوزة للاستخدام في المستقبل. لا ينطبق على SQL do Azure Edge.
- PROPERTY_COLUMNS: قائمة مفصولة بفواصل بأسماء أعمدة الإخراج التي سيتم إرفاقها بالرسائل كخصائص مخصصة إذا تم توفيرها.
- محجوزة للاستخدام في المستقبل. لا ينطبق على SQL do Azure Edge.
- SYSTEM_PROPERTY_COLUMNS: مجموعة بتنسيق JSON من أزواج الأسماء/القيم لأسماء خصائص النظام وأعمدة الإخراج المراد تعبئتها على رسائل Barramento de Serviço. على سبيل المثال { "MessageId": "column1", "PartitionKey": "column2"}
- محجوزة للاستخدام في المستقبل. لا ينطبق على SQL do Azure Edge.
- PARTITION_KEY: اسم عمود الإخراج الذي يحتوي على مفتاح القسم. مفتاح القسم هو معرف فريد للقسم داخل جدول معين يشكل الجزء الأول من المفتاح الأساسي للكيان. إنها قيمة سلسلة قد يصل حجمها إلى 1 كيلوبايت.
- محجوزة للاستخدام في المستقبل. لا ينطبق على SQL do Azure Edge.
- ROW_KEY: اسم عمود الإخراج الذي يحتوي على مفتاح الصف. مفتاح الصف هو معرف فريد لكيان داخل قسم معين. وهو يشكل الجزء الثاني من المفتاح الأساسي للكيان. مفتاح الصف هو قيمة سلسلة قد يصل حجمها إلى 1 كيلوبايت.
- محجوزة للاستخدام في المستقبل. لا ينطبق على SQL do Azure Edge.
- BATCH_SIZE: يمثل هذا عدد المعاملات لتخزين الجدول حيث يمكن أن يصل الحد الأقصى إلى 100 سجل. على سبيل Azure Functions ، يمثل هذا حجم الدفعة بالبايت المرسل إلى الدالة لكل مكالمة - الافتراضي هو 256 كيلو بايت.
- محجوزة للاستخدام في المستقبل. لا ينطبق على SQL do Azure Edge.
- MAXIMUM_BATCH_COUNT: الحد الأقصى لعدد الأحداث المرسلة إلى الدالة لكل استدعاء لدالة Azure - الافتراضي هو 100. بالنسبة SQL قاعدة البيانات، يمثل هذا الحد الأقصى لعدد السجلات المرسلة مع كل معاملة إدراج مجمع - الافتراضي هو 10000.
- ينطبق على جميع المخرجات المستندة إلى SQL
- STAGING_AREA: كائن مصدر البيانات الخارجي لتخزين النقطة منطقة التدريج لابتلاع البيانات عالية الإنتاجية في Azure Synapse Analytics
- محجوزة للاستخدام في المستقبل. لا ينطبق على SQL do Azure Edge.
- REJECT_POLICY: إسقاط | إعادة المحاولة أنواع نهج معالجة أخطاء البيانات عند حدوث أخطاء في تحويل البيانات.
أمثلة
مثال 1 - EdgeHub
النوع: إدخال أو إخراج
بناء الجملة:
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'
);
مثال 2 - Azure SQL Database ، SQL do Azure Edge ، SQL Server
النوع: إخراج
بناء الجملة:
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'
);
المثال 3 - كافكا
النوع: مدخل
بناء الجملة:
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'
);