التشغيل السريع: إنشاء Azure Data Factory باستخدام قالب ARM

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

تلميح

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

يصف هذا التشغيل السريع كيفية استخدام قالب Azure Resource Manager (قالب ARM) لإنشاء Azure data factory. البنية الأساسية التي تقوم بإنشائها في مصنع البيانات هذا تنسخ البيانات من مجلد إلى مجلد آخر في تخزين Azure blob. للحصول على برنامج تعليمي حول كيفية تحويل البيانات باستخدام Azure Data Factory، راجع البرنامج التعليمي: تحويل البيانات باستخدام Spark .

قالب Azure Resource Manager هو ملف JavaScript Object Notation (JSON) الذي يحدد البنية الأساسية والتكوين لمشروعك. يستخدم القالب عبارات توضيحية. يمكنك وصف النشر المقصود دون كتابة تسلسل أوامر البرمجة لإنشاء النشر.

إشعار

لا تقدم هذه المقالة مقدمة مفصلة عن خدمة Data Factory. للحصول على مقدمة حول خدمة Azure Data Factory، راجع Introduction to Azure Data Factory.

إذا كانت بيئتك تلبي المتطلبات الأساسية وكنت معتاداً على استخدام قوالب "ARM"، فحدد زر "Deploy to Azure". سيتم فتح القالب في مدخل Azure.

Button to deploy the Resource Manager template to Azure.

المتطلبات الأساسية

اشتراك Azure

في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.

إنشاء الملف

افتح محرر نصوص مثل Notepad ، وأنشئ ملفاً باسم emp.txt بالمحتوى التالي:

John, Doe
Jane, Doe

حفظ الملف في المجلد C:\ADFv2QuickStartPSH. (إذا لم يكن المجلد موجوداً بالفعل، فقم بإنشائه.)

راجع القالب

يُعدّ النموذج المستخدم في هذا التشغيل السريع مأخوذاً من قوالب التشغيل السريع من Azure.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.26.54.24096",
      "templateHash": "17339534711754973978"
    }
  },
  "parameters": {
    "dataFactoryName": {
      "type": "string",
      "defaultValue": "[format('datafactory{0}', uniqueString(resourceGroup().id))]",
      "metadata": {
        "description": "Data Factory Name"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location of the data factory."
      }
    },
    "storageAccountName": {
      "type": "string",
      "defaultValue": "[format('storage{0}', uniqueString(resourceGroup().id))]",
      "metadata": {
        "description": "Name of the Azure storage account that contains the input/output data."
      }
    },
    "blobContainerName": {
      "type": "string",
      "defaultValue": "[format('blob{0}', uniqueString(resourceGroup().id))]",
      "metadata": {
        "description": "Name of the blob container in the Azure Storage account."
      }
    }
  },
  "variables": {
    "dataFactoryLinkedServiceName": "ArmtemplateStorageLinkedService",
    "dataFactoryDataSetInName": "ArmtemplateTestDatasetIn",
    "dataFactoryDataSetOutName": "ArmtemplateTestDatasetOut",
    "pipelineName": "ArmtemplateSampleCopyPipeline"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts/blobServices",
      "apiVersion": "2023-01-01",
      "name": "[format('{0}/{1}', parameters('storageAccountName'), 'default')]",
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
      ]
    },
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2023-01-01",
      "name": "[parameters('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "minimumTlsVersion": "TLS1_2",
        "supportsHttpsTrafficOnly": true,
        "allowBlobPublicAccess": false
      }
    },
    {
      "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
      "apiVersion": "2023-01-01",
      "name": "[format('{0}/{1}/{2}', parameters('storageAccountName'), 'default', parameters('blobContainerName'))]",
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccountName'), 'default')]"
      ]
    },
    {
      "type": "Microsoft.DataFactory/factories",
      "apiVersion": "2018-06-01",
      "name": "[parameters('dataFactoryName')]",
      "location": "[parameters('location')]",
      "identity": {
        "type": "SystemAssigned"
      }
    },
    {
      "type": "Microsoft.DataFactory/factories/linkedservices",
      "apiVersion": "2018-06-01",
      "name": "[format('{0}/{1}', parameters('dataFactoryName'), variables('dataFactoryLinkedServiceName'))]",
      "properties": {
        "type": "AzureBlobStorage",
        "typeProperties": {
          "connectionString": "[format('DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1}', parameters('storageAccountName'), listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2023-01-01').keys[0].value)]"
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.DataFactory/factories', parameters('dataFactoryName'))]",
        "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
      ]
    },
    {
      "type": "Microsoft.DataFactory/factories/datasets",
      "apiVersion": "2018-06-01",
      "name": "[format('{0}/{1}', parameters('dataFactoryName'), variables('dataFactoryDataSetInName'))]",
      "properties": {
        "linkedServiceName": {
          "referenceName": "[variables('dataFactoryLinkedServiceName')]",
          "type": "LinkedServiceReference"
        },
        "type": "Binary",
        "typeProperties": {
          "location": {
            "type": "AzureBlobStorageLocation",
            "container": "[parameters('blobContainerName')]",
            "folderPath": "input",
            "fileName": "emp.txt"
          }
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.DataFactory/factories', parameters('dataFactoryName'))]",
        "[resourceId('Microsoft.DataFactory/factories/linkedservices', parameters('dataFactoryName'), variables('dataFactoryLinkedServiceName'))]"
      ]
    },
    {
      "type": "Microsoft.DataFactory/factories/datasets",
      "apiVersion": "2018-06-01",
      "name": "[format('{0}/{1}', parameters('dataFactoryName'), variables('dataFactoryDataSetOutName'))]",
      "properties": {
        "linkedServiceName": {
          "referenceName": "[variables('dataFactoryLinkedServiceName')]",
          "type": "LinkedServiceReference"
        },
        "type": "Binary",
        "typeProperties": {
          "location": {
            "type": "AzureBlobStorageLocation",
            "container": "[parameters('blobContainerName')]",
            "folderPath": "output"
          }
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.DataFactory/factories', parameters('dataFactoryName'))]",
        "[resourceId('Microsoft.DataFactory/factories/linkedservices', parameters('dataFactoryName'), variables('dataFactoryLinkedServiceName'))]"
      ]
    },
    {
      "type": "Microsoft.DataFactory/factories/pipelines",
      "apiVersion": "2018-06-01",
      "name": "[format('{0}/{1}', parameters('dataFactoryName'), variables('pipelineName'))]",
      "properties": {
        "activities": [
          {
            "name": "MyCopyActivity",
            "type": "Copy",
            "typeProperties": {
              "source": {
                "type": "BinarySource",
                "storeSettings": {
                  "type": "AzureBlobStorageReadSettings",
                  "recursive": true
                }
              },
              "sink": {
                "type": "BinarySink",
                "storeSettings": {
                  "type": "AzureBlobStorageWriteSettings"
                }
              },
              "enableStaging": false
            },
            "inputs": [
              {
                "referenceName": "[variables('dataFactoryDataSetInName')]",
                "type": "DatasetReference"
              }
            ],
            "outputs": [
              {
                "referenceName": "[variables('dataFactoryDataSetOutName')]",
                "type": "DatasetReference"
              }
            ]
          }
        ]
      },
      "dependsOn": [
        "[resourceId('Microsoft.DataFactory/factories', parameters('dataFactoryName'))]",
        "[resourceId('Microsoft.DataFactory/factories/datasets', parameters('dataFactoryName'), variables('dataFactoryDataSetInName'))]",
        "[resourceId('Microsoft.DataFactory/factories/datasets', parameters('dataFactoryName'), variables('dataFactoryDataSetOutName'))]"
      ]
    }
  ],
  "outputs": {
    "name": {
      "type": "string",
      "value": "[variables('pipelineName')]"
    },
    "resourceId": {
      "type": "string",
      "value": "[resourceId('Microsoft.DataFactory/factories/pipelines', parameters('dataFactoryName'), variables('pipelineName'))]"
    },
    "resourceGroupName": {
      "type": "string",
      "value": "[resourceGroup().name]"
    },
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    }
  }
}

توجد موارد Azure محددة في القالب:

يمكن العثور على المزيد من نماذج قوالب Azure Data Factory في quickstart template gallery.

نشر القالب

  1. حدد الصورة التالية لتسجيل الدخول إلى Azure وفتح قالب. ينشئ القالب حساب Azure Data Factory وحساب تخزين وحاوية blob.

    Button to deploy the Resource Manager template to Azure.

  2. حدد القيم التالية أو أدخلها.

    Deploy ADF ARM template

    ما لم يتم تحديده، استخدم القيم الافتراضية لإنشاء موارد Azure Data Factory:

    • الاشتراك: تحديد اشتراك Azure.
    • Resource group حددCreate new، وأدخل اسماً فريداً لمجموعة الموارد، ثم حدّد OK.
    • Region: حدِّد موقعاً. على سبيل المثال، East US.
    • Data Factory Name: استخدم القيمة الافتراضية.
    • Location: استخدم القيمة الافتراضية.
    • Storage Account Name: استخدم القيمة الافتراضية.
    • Blob Container: استخدم القيمة الافتراضية.

مراجعة الموارد الموزعة

  1. حدد الانتقال إلى مجموعة الموارد.

    Resource Group

  2. تحقق من إنشاء Azure Data Factory.

    1. اسم Azure Data Factory الخاص بك بتنسيق - datafactory<uniqueid>.

    Sample Data Factory

  3. تحقق من إنشاء حساب التخزين الخاص بك.

    1. اسم حساب التخزين بالتنسيق - storage<uniqueid>.

    Storage Account

  4. حدد storage account الذي تم إنشاؤه ثم حدد Containers.

    1. في الصفحة Containers حدد حاوية blob التي قمت بإنشائها.
      1. اسم حاوية البيانات الثنائية الكبيرة بالتنسيق - blob<uniqueid>.

    Blob container

تحميل ملف

  1. في صفحة Containers، حددUpload.

  2. في الجزء الأيسر، حدد المربع Files ، ثم استعرض وحدد ملف emp.txt الذي قمت بإنشائه مسبقاً.

  3. قم بتوسيع العنوان Advanced.

  4. في المربع Upload to folder، أدخلinput.

  5. حدد الزر تحميل. يجب أن تراجع ملف emp.txt وحالة التحميل في القائمة.

  6. حدد رمز Close (علامة X ) لإغلاق صفحةUpload blob.

    Upload file to input folder

احتفظ بصفحة الحاوية مفتوحة، لأنه يمكنك استخدامها للتحقق من المخرجات في نهاية هذا التشغيل السريع.

Start Trigger

  1. انتقل إلى صفحة Data factories، وحدد data factory الذي أنشأته.

  2. حدد Open على لوحة Open Azure Data Factory Studio.

    Author & Monitor

  3. حدد علامة التبويب Author.

  4. حدد البنية الأساسية التي تم إنشاؤها - ArmtemplateSampleCopyPipeline.

    ARM template pipeline

  5. حدد Add Trigger>Trigger Now.

    Trigger

  6. في الجزء الأيسر ضمن Pipeline run، حددOK.

مراقبة المسار

  1. حدد علامة التبويب Monitor.

  2. سترى تشغيل النشاط المقترن بتشغيل البنية الأساسية. في التشغيل السريع هذا، تحتوي البنية الأساسية على نشاط واحد فقط من النوع: Copy. على هذا النحو، ترى تشغيلاً لهذا النشاط.

    Successful run

التحقق من ملف المخرجات

تقوم البنية الأساسية تلقائياً بإنشاء مجلد مخرجات في حاوية blob. ثم ينسخ ملف "emp.txt" من مجلد الإدخال إلى مجلد الإخراج.

  1. في مدخل Microsoft Azure، في صفحة Containers حددRefresh لرؤية مجلد المخرجات.

  2. حدد الإخراج من قائمة المجلدات.

  3. تأكد من نسخ emp.txt إلى مجلد الإخراج.

    Output

تنظيف الموارد

يمكنك تنظيف الموارد التي أنشأتها في قائمة التشغيل السريع بطريقتين. يمكنك حذف مجموعة موارد Azure، التي تتضمن كافة الموارد الموجودة في مجموعة الموارد. إذا كنت ترغب في الحفاظ على سلامة الموارد الأخرى، فاحذف مصنع البيانات الذي أنشأته في هذا البرنامج التعليمي.

يسفر حذف مجموعة موارد عن حذف كافة الموارد بما في ذلك مصانع البيانات الموجودة بها. شغل الأمر التالي بهدف الحذف الكلي لمجموعة الموارد:

Remove-AzResourceGroup -ResourceGroupName $resourcegroupname

إذا كنت ترغب في حذف data factory بمفرده، لا مجموعة الموارد بأكملها، فشغل الأمر التالي:

Remove-AzDataFactoryV2 -Name $dataFactoryName -ResourceGroupName $resourceGroupName

في هذا التشغيل السريع، قمت بإنشاء Azure Data Factory باستخدام قالب ARM وتحققت من صحة النشر. لمعرفة المزيد حول Azure Data Factory وAzure Resource Manager، تابع إلى المقالات أدناه.