نشاط البحث في مصنع بيانات Azure وتحليلات Azure Synapse
ينطبق على: Azure Data Factory Azure Synapse Analytics
تلميح
جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!
يمكن لنشاط البحث استرداد مجموعة بيانات من أي من مصادر البيانات المدعومة من قبل مصنع البيانات ومسارات Synapse. يمكنك استخدامه لتحديد الكائنات التي تعمل عليها في نشاط لاحق ديناميكياً، بدلاً من الترميز الثابت لاسم الكائن. بعض الأمثلة على الكائن هي الملفات والجداول.
يقوم نشاط البحث بقراءة محتوى ملف التكوين أو الجدول وإرجاعه. تقوم أيضاً بإرجاع نتيجة تنفيذ استعلام أو إجراء مخزن. يمكن أن يكون الناتج قيمة مفردة أو مجموعة من السمات، والتي يمكن استهلاكها في نسخة لاحقة أو تحويل أو أنشطة تدفق تحكم مثل نشاط ForEach.
إنشاء نشاط Lookup باستخدام واجهة المستخدم
لاستخدام نشاط Lookup في البنية الأساسية لبرنامج ربط العمليات التجارية:
ابحث عن Lookup في جزء Pipeline Activities، واسحب نشاط Lookup إلى لوحة المسار.
حدد نشاط Lookup الجديد على اللوحة إذا لم يكن محدداً بالفعل، وعلامة تبويب الإعدادات الخاصة به، لتحرير تفاصيله.
اختر مجموعة بيانات مصدر موجودة أو حدد الزر جديد لإنشاء مجموعة جديدة.
تختلف خيارات تحديد الصفوف المراد تضمينها من مجموعة البيانات المصدر استنادًا إلى نوع مجموعة البيانات. يوضح المثال أعلاه خيارات التكوين لمجموعة بيانات نص محددة. فيما يلي أمثلة على خيارات التكوين لمجموعة بيانات جدول Azure SQL ومجموعة بيانات OData.
القدرات المدعومة
لاحظ ما يلي:
- يمكن أن يرجع نشاط البحث ما يصل إلى 5000 صف؛ إذا كانت مجموعة النتائج تحتوي على المزيد من السجلات، إرجاع أول 5000 صف.
- يدعم إخراج نشاط البحث ما يصل إلى 4 ميغابايت في الحجم، وسيفشل النشاط إذا تجاوز الحجم الحد.
- أطول مدة لنشاط البحث قبل انتهاء المهلة هي 24 ساعة.
إشعار
عند استخدام الاستعلام أو الإجراء المخزن للبحث عن البيانات، تأكد من إرجاع مجموعة نتائج واحدة ومحددة. خلاف ذلك، يفشل نشاط البحث.
مصادر البيانات التالية مدعومة لنشاط البحث.
إشعار
يعني وضع علامة معاينة على أي موصل أنه يمكنك تجربته وإرسال ملاحظاتك إلينا. إذا كنت تريد أن تأخذ تبعية على موصلات الإصدار الأولي في حلك، يرجى الاتصال بدعم Azure.
بناء الجملة
{
"name":"LookupActivity",
"type":"Lookup",
"typeProperties":{
"source":{
"type":"<source type>"
},
"dataset":{
"referenceName":"<source dataset name>",
"type":"DatasetReference"
},
"firstRowOnly":<true or false>
}
}
خصائص النوع
Name | الوصف | النوع | مطلوب؟ |
---|---|---|---|
مجموعة البيانات | يوفر مرجع مجموعة البيانات للبحث. احصل على تفاصيل من قسم خصائص مجموعة البيانات في كل مقالة موصل مقابلة. | زوج المفتاح / القيمة | نعم |
المصدر | يحتوي على خصائص مصدر خاصة بمجموعة البيانات، مثل مصدر نشاط النسخ. احصل على تفاصيل من قسم خصائص نشاط النسخ في كل مقالة موصل مقابلة. | زوج المفتاح / القيمة | نعم |
firstRowOnly | يشير إلى ما إذا كان سيتم إرجاع الصف الأول فقط أو جميع الصفوف. | Boolean | لا. الافتراضي هو true . |
إشعار
- أعمدة المصدر ذات نوع ByteArray غير مدعومة.
- البنية غير مدعومة في تعريفات مجموعة البيانات. بالنسبة لملفات تنسيق النص، استخدم صف الرأس لتوفير اسم العمود.
- إذا كان مصدر البحث الخاص بك هو ملف JSON،
jsonPathDefinition
فإن إعداد إعادة تشكيل كائن JSON غير مدعوم. سيتم استرداد الكائنات بأكملها.
استخدم نتيجة نشاط البحث
يتم إرجاع نتيجة البحث في output
قسم من نتيجة تشغيل النشاط.
عند
firstRowOnly
تعيين إلىtrue
(افتراضي)، يكون تنسيق الإخراج كما هو موضح في التعليمات البرمجية التالية. تكون نتيجة البحث ضمن مفتاح ثابتfirstRow
. لاستخدام النتيجة في نشاط لاحق، استخدم نمط@{activity('LookupActivity').output.firstRow.table}
.{ "firstRow": { "Id": "1", "schema":"dbo", "table":"Table1" } }
عند
firstRowOnly
تعيين إلىfalse
، يكون تنسيق الإخراج كما هو موضح في التعليمات البرمجية التالية.count
يشير الحقل إلى عدد السجلات التي يتم إرجاعها. يتم عرض القيم التفصيلية ضمن صفيف ثابتvalue
. في مثل هذه الحالة، يتبع نشاط البحث نشاط Foreach. يمكنك تمريرvalue
الصفيف إلى حقل نشاطitems
ForEach باستخدام نمط@activity('MyLookupActivity').output.value
. للوصول إلى العناصر فيvalue
الصفيف، استخدم بناء الجملة التالي:@{activity('lookupActivity').output.value[zero based index].propertyname}
. مثال على ذلك@{activity('lookupActivity').output.value[0].schema}
.{ "count": "2", "value": [ { "Id": "1", "schema":"dbo", "table":"Table1" }, { "Id": "2", "schema":"dbo", "table":"Table2" } ] }
مثال
في هذا المثال، يحتوي المسار على نشاطين: البحث والنسخ. ينسخ "نسخ النشاط" البيانات من جدول SQL في مثيل قاعدة بيانات Azure SQL إلى تخزين Azure Blob. يتم تخزين اسم جدول SQL في ملف JSON في تخزين Blob. يبحث نشاط البحث عن اسم الجدول في وقت التشغيل. يتم تعديل JSON ديناميكياً باستخدام هذا الأسلوب. لا تحتاج إلى إعادة نشر المسارات أو مجموعات البيانات.
يوضح هذا المثال البحث عن الصف الأول فقط. للبحث عن جميع الصفوف وربط النتائج بنشاط ForEach، راجع العينات في نسخ جداول متعددة بشكل مجمع.
المسار
- تم تكوين نشاط البحث لاستخدام LookupDataset، والذي يشير إلى موقع في تخزين Azure Blob. يقرأ نشاط البحث اسم جدول SQL من ملف JSON في هذا الموقع.
- يستخدم نسخ النشاط ناتج نشاط البحث، وهو اسم جدول SQL. تم تكوين الخاصية tableName في SourceDataset لاستخدام الإخراج من نشاط البحث. نسخ النشاط ينسخ البيانات من جدول SQL إلى موقع في تخزين Azure Blob. يتم تحديد الموقع بواسطة خاصية SinkDataset .
{
"name": "LookupPipelineDemo",
"properties": {
"activities": [
{
"name": "LookupActivity",
"type": "Lookup",
"dependsOn": [],
"policy": {
"timeout": "7.00:00:00",
"retry": 0,
"retryIntervalInSeconds": 30,
"secureOutput": false,
"secureInput": false
},
"userProperties": [],
"typeProperties": {
"source": {
"type": "JsonSource",
"storeSettings": {
"type": "AzureBlobStorageReadSettings",
"recursive": true
},
"formatSettings": {
"type": "JsonReadSettings"
}
},
"dataset": {
"referenceName": "LookupDataset",
"type": "DatasetReference"
},
"firstRowOnly": true
}
},
{
"name": "CopyActivity",
"type": "Copy",
"dependsOn": [
{
"activity": "LookupActivity",
"dependencyConditions": [
"Succeeded"
]
}
],
"policy": {
"timeout": "7.00:00:00",
"retry": 0,
"retryIntervalInSeconds": 30,
"secureOutput": false,
"secureInput": false
},
"userProperties": [],
"typeProperties": {
"source": {
"type": "AzureSqlSource",
"sqlReaderQuery": {
"value": "select * from [@{activity('LookupActivity').output.firstRow.schema}].[@{activity('LookupActivity').output.firstRow.table}]",
"type": "Expression"
},
"queryTimeout": "02:00:00",
"partitionOption": "None"
},
"sink": {
"type": "DelimitedTextSink",
"storeSettings": {
"type": "AzureBlobStorageWriteSettings"
},
"formatSettings": {
"type": "DelimitedTextWriteSettings",
"quoteAllText": true,
"fileExtension": ".txt"
}
},
"enableStaging": false,
"translator": {
"type": "TabularTranslator",
"typeConversion": true,
"typeConversionSettings": {
"allowDataTruncation": true,
"treatBooleanAsNumber": false
}
}
},
"inputs": [
{
"referenceName": "SourceDataset",
"type": "DatasetReference",
"parameters": {
"schemaName": {
"value": "@activity('LookupActivity').output.firstRow.schema",
"type": "Expression"
},
"tableName": {
"value": "@activity('LookupActivity').output.firstRow.table",
"type": "Expression"
}
}
}
],
"outputs": [
{
"referenceName": "SinkDataset",
"type": "DatasetReference",
"parameters": {
"schema": {
"value": "@activity('LookupActivity').output.firstRow.schema",
"type": "Expression"
},
"table": {
"value": "@activity('LookupActivity').output.firstRow.table",
"type": "Expression"
}
}
}
]
}
],
"annotations": [],
"lastPublishTime": "2020-08-17T10:48:25Z"
}
}
البحث عن مجموعة البيانات
مجموعة بيانات البحث هي ملف sourcetable.json في مجلد البحث Azure Storage المحدد بواسطة نوع AzureBlobStorageLinkedService.
{
"name": "LookupDataset",
"properties": {
"linkedServiceName": {
"referenceName": "AzureBlobStorageLinkedService",
"type": "LinkedServiceReference"
},
"annotations": [],
"type": "Json",
"typeProperties": {
"location": {
"type": "AzureBlobStorageLocation",
"fileName": "sourcetable.json",
"container": "lookup"
}
}
}
}
مجموعة بيانات المصدر لنشاط النسخ
تستخدم مجموعة البيانات المصدر إخراج نشاط البحث، وهو اسم جدول SQL. نسخ النشاط ينسخ البيانات من جدول SQL هذا إلى موقع في تخزين Azure Blob. يتم تحديد الموقع بواسطة مجموعة بيانات المتلقي .
{
"name": "SourceDataset",
"properties": {
"linkedServiceName": {
"referenceName": "AzureSqlDatabase",
"type": "LinkedServiceReference"
},
"parameters": {
"schemaName": {
"type": "string"
},
"tableName": {
"type": "string"
}
},
"annotations": [],
"type": "AzureSqlTable",
"schema": [],
"typeProperties": {
"schema": {
"value": "@dataset().schemaName",
"type": "Expression"
},
"table": {
"value": "@dataset().tableName",
"type": "Expression"
}
}
}
}
مجموعة بيانات المتلقي لنشاط النسخ
نسخ النشاط ينسخ البيانات من جدول SQL إلى ملف filebylookup.csv في مجلد csv في Azure Storage. يتم تحديد الملف بواسطة الخاصية AzureBlobStorageLinkedService .
{
"name": "SinkDataset",
"properties": {
"linkedServiceName": {
"referenceName": "AzureBlobStorageLinkedService",
"type": "LinkedServiceReference"
},
"parameters": {
"schema": {
"type": "string"
},
"table": {
"type": "string"
}
},
"annotations": [],
"type": "DelimitedText",
"typeProperties": {
"location": {
"type": "AzureBlobStorageLocation",
"fileName": {
"value": "@{dataset().schema}_@{dataset().table}.csv",
"type": "Expression"
},
"container": "csv"
},
"columnDelimiter": ",",
"escapeChar": "\\",
"quoteChar": "\""
},
"schema": []
}
}
sourcetable.json
يمكنك استخدام نوعين من التنسيقات التالية لملف sourcetable.json .
مجموعة من الأشياء
{
"Id":"1",
"schema":"dbo",
"table":"Table1"
}
{
"Id":"2",
"schema":"dbo",
"table":"Table2"
}
مصفوفة الكائنات
[
{
"Id": "1",
"schema":"dbo",
"table":"Table1"
},
{
"Id": "2",
"schema":"dbo",
"table":"Table2"
}
]
القيود والحلول
فيما يلي بعض قيود نشاط البحث والحلول المقترحة.
القيد | الطرق البديلة |
---|---|
نشاط البحث بحد أقصى 5000 صف، وحد أقصى للحجم يبلغ 4 ميجا بايت. | صمم مسار من مستويين حيث يرجع المسار الخارجي عبر المسار الداخلي، والذي يسترد البيانات التي لا تتجاوز الحد الأقصى للصفوف أو الحجم. |
المحتوى ذو الصلة
اطلع على أنشطة تدفق التحكم الأخرى التي يدعمها مصنع بيانات Azure ومسارات Synapse: