نشاط البحث في مصنع بيانات Azure وتحليلات Azure Synapse

ينطبق على: Azure Data Factory Azure Synapse Analytics

تلميح

جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!

يمكن لنشاط البحث استرداد مجموعة بيانات من أي من مصادر البيانات المدعومة من قبل مصنع البيانات ومسارات Synapse. يمكنك استخدامه لتحديد الكائنات التي تعمل عليها في نشاط لاحق ديناميكياً، بدلاً من الترميز الثابت لاسم الكائن. بعض الأمثلة على الكائن هي الملفات والجداول.

يقوم نشاط البحث بقراءة محتوى ملف التكوين أو الجدول وإرجاعه. تقوم أيضاً بإرجاع نتيجة تنفيذ استعلام أو إجراء مخزن. يمكن أن يكون الناتج قيمة مفردة أو مجموعة من السمات، والتي يمكن استهلاكها في نسخة لاحقة أو تحويل أو أنشطة تدفق تحكم مثل نشاط ForEach.

إنشاء نشاط Lookup باستخدام واجهة المستخدم

لاستخدام نشاط Lookup في البنية الأساسية لبرنامج ربط العمليات التجارية:

  1. ابحث عن Lookup في جزء Pipeline Activities، واسحب نشاط Lookup إلى لوحة المسار.

  2. حدد نشاط Lookup الجديد على اللوحة إذا لم يكن محدداً بالفعل، وعلامة تبويب الإعدادات الخاصة به، لتحرير تفاصيله.

    يعرض واجهة المستخدم لنشاط Lookup.

  3. اختر مجموعة بيانات مصدر موجودة أو حدد الزر جديد لإنشاء مجموعة جديدة.

  4. تختلف خيارات تحديد الصفوف المراد تضمينها من مجموعة البيانات المصدر استنادًا إلى نوع مجموعة البيانات. يوضح المثال أعلاه خيارات التكوين لمجموعة بيانات نص محددة. فيما يلي أمثلة على خيارات التكوين لمجموعة بيانات جدول Azure SQL ومجموعة بيانات OData.

    يعرض خيارات التكوين في نشاط Lookup لمجموعة بيانات جدول Azure SQL.

    يعرض خيارات التكوين في نشاط Lookup لمجموعة بيانات OData.

القدرات المدعومة

لاحظ ما يلي:

  • يمكن أن يرجع نشاط البحث ما يصل إلى 5000 صف؛ إذا كانت مجموعة النتائج تحتوي على المزيد من السجلات، إرجاع أول 5000 صف.
  • يدعم إخراج نشاط البحث ما يصل إلى 4 ميغابايت في الحجم، وسيفشل النشاط إذا تجاوز الحجم الحد.
  • أطول مدة لنشاط البحث قبل انتهاء المهلة هي 24 ساعة.

إشعار

عند استخدام الاستعلام أو الإجراء المخزن للبحث عن البيانات، تأكد من إرجاع مجموعة نتائج واحدة ومحددة. خلاف ذلك، يفشل نشاط البحث.

مصادر البيانات التالية مدعومة لنشاط البحث.

الفئة مخزن البيانات
Azure تخزين Azure Blob
  قاعدة بيانات Azure Cosmos لـ NoSQL
  Azure Data Explorer (Kusto)
  Azure Data Lake Storage الجيل الأول
  Azure Data Lake Storage Gen2
  قاعدة بيانات Azure ل MariaDB
  Azure Database for MySQL
  Azure Database for PostgreSQL
  Azure Databricks Delta Lake
  ملفات Azure
  قاعدة بيانات Azure SQL
  مثيل Azure SQL المدار
  Azure Synapse Analytics
  تخزين Azure Table
قاعدة بيانات Amazon RDS ل Oracle
  Amazon RDS ل SQL Server
  Amazon Redshift
  Apache Impala
  مثيل Azure SQL المدار
  DB2
  نقب
  Google AdWords
  Google BigQuery
  بلون أخضر
  HBase
  خلية
  Informix
  MariaDB
  Microsoft Access
  MySQL
  Netezza
  Oracle
  فينكس
  PostgreSQL
  المعزوفه
  SAP Business Warehouse Open Hub
  SAP Business Warehouse عبر MDX
  SAP HANA
  جدول SAP
  SQL Server
  شراره
  Sybase
  Teradata
  Vertica
NoSQL Cassandra
  Couchbase (معاينة)
ملف Amazon S3
  التخزين المتوافق مع Amazon S3
  نظام الملفات
  بروتوكول نقل الملفات
  Google Cloud Storage
  HDFS
  HTTP عام
  Microsoft Fabric Lakehouse
  Oracle Cloud Storage
  SFTP
البروتوكول العام Generic OData
  Generic ODBC
  قائمة SharePoint Online
الخدمات والتطبيقات Amazon Marketplace Web Service (مهمل)
  Concur (معاينة)
  Dataverse
  Dynamics 365
  Dynamics AX
  Dynamics CRM
  HubSpot
  Jira
  Azure Data Explorer (Kusto)
  Magento (معاينة)
  Marketo (معاينة)
  Oracle Eloqua (معاينة)
  Oracle Responsys (معاينة)
  Oracle Service Cloud (معاينة)
  PayPal (معاينة)
  QuickBooks (معاينة)
  سحابة SAP للعميل (C4C)
  SAP ECC
  Salesforce
  Salesforce Marketing Cloud
  سحابة خدمة Salesforce
  ServiceNow
  Shopify (معاينة)
  البلورة الثلجية
  Square (معاينة)
  Web Table (جدول HTML)
  Xero
  Zoho (معاينة)

إشعار

يعني وضع علامة معاينة على أي موصل أنه يمكنك تجربته وإرسال ملاحظاتك إلينا. إذا كنت تريد أن تأخذ تبعية على موصلات الإصدار الأولي في حلك، يرجى الاتصال بدعم 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: