اقرأ باللغة الإنجليزية

مشاركة عبر


البرنامج التعليمي: تحميل البيانات الخارجية باستخدام هوية مدارة

توضح هذه المقالة كيفية إنشاء جداول خارجية أو استيعاب البيانات من حسابات Azure Data Lake Storage (ADLS) Gen2 باستخدام هوية مدارة.

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

الموارد التالية مطلوبة لإكمال هذا البرنامج التعليمي:

  • حساب Azure Data Lake Storage (ADLS) Gen2
  • مساحة عمل Azure Synapse Analytics وتجمع SQL مخصص

منح هوية مساحة العمل حق الوصول إلى حساب التخزين

تنشئ كل مساحة عمل Azure Synapse Analytics تلقائيا هوية مدارة تساعدك على تكوين الوصول الآمن إلى البيانات الخارجية من مساحة العمل الخاصة بك. لمعرفة المزيد حول الهويات المدارة ل Azure Synapse Analytics، تفضل بزيارة هوية الخدمة المدارة ل Azure Synapse Analytics.

لتمكين هويتك المدارة من الوصول إلى البيانات على حسابات ADLS Gen2، تحتاج إلى منح هويتك حق الوصول إلى حساب المصدر. لمنح الأذونات المناسبة، اتبع الخطوات التالية:

  1. في مدخل Microsoft Azure، ابحث عن حساب التخزين الخاص بك.
  2. حدد Data storage -> Containers، وانتقل إلى المجلد حيث تكون البيانات المصدر التي يحتاج الجدول الخارجي إلى الوصول إليها.
  3. حدد Access control (IAM).
  4. حدد إضافة -> إضافة تعيين دور.
  5. في قائمة أدوار وظيفة الوظيفة، حدد Storage Blob Data Contributor وحدد Next.
  6. في صفحة Add role assignment ، حدد + Select members. يتم فتح جزء Select members .
  7. اكتب اسم هوية مساحة العمل. هوية مساحة العمل هي نفس اسم مساحة العمل. عند عرضها، اختر هوية مساحة العمل، ثم حدد.
  8. في صفحة إضافة تعيين دور، تأكد من أن قائمة الأعضاء تتضمن حساب معرف Microsoft Entra المطلوب. بمجرد التحقق، حدد Review + assign.
  9. في صفحة التأكيد، راجع التغييرات وحدد Review + assign.

هوية مساحة العمل الخاصة بك الآن عضو في دور Storage Blob Data Contributor ولديه حق الوصول إلى المجلد المصدر.

ملاحظة

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

استيعاب البيانات باستخدام COPY INTO

توفر عبارة T-SQL COPY INTO استيعابا مرنا وعالي الإنتاجية للبيانات في جداولك، وهي الاستراتيجية الأساسية لاستيعاب البيانات في جداول تجمع SQL المخصصة. COPY INTO يسمح للمستخدمين ب استيعاب البيانات من مواقع خارجية دون الحاجة إلى إنشاء أي من كائنات قاعدة البيانات الإضافية المطلوبة للجداول الخارجية.

لتشغيل العبارة COPY INTO باستخدام هوية مدارة لمساحة العمل للمصادقة، استخدم الأمر T-SQL التالي:

SQL
COPY INTO <TableName>
FROM 'https://<AccountName>.dfs.core.windows.net/<Container>/<Folder>/ '
WITH
(
    CREDENTIAL = (IDENTITY = 'Managed Identity'),
    [<CopyIntoOptions>]
);

المكان:

  • <TableName> هو اسم الجدول لاستيعاب البيانات فيه
  • <AccountName> هو اسم حساب ADLS Gen2 الخاص بك
  • <Container> هو اسم الحاوية داخل حساب التخزين الخاص بك حيث يتم تخزين بيانات المصدر
  • <Folder> هو المجلد (أو المسار مع المجلدات الفرعية) حيث يتم تخزين البيانات المصدر داخل الحاوية الخاصة بك. يمكنك أيضا توفير اسم ملف إذا كان يشير مباشرة إلى ملف واحد.
  • <CopyIntoOptions> هي قائمة بأي خيارات أخرى ترغب في توفيرها إلى عبارة COPY INTO.

لمعرفة المزيد واستكشاف بناء الجملة الكامل ل COPY INTO، راجع COPY INTO (Transact-SQL).

الاستعلام عن البيانات على ADLS Gen2 باستخدام جداول خارجية

تسمح الجداول الخارجية للمستخدمين بالاستعلام عن البيانات من حسابات Azure Data Lake Storage (ADLS) Gen2 دون الحاجة إلى استيعاب البيانات أولا. يمكن للمستخدمين إنشاء جدول خارجي يشير إلى ملفات على حاوية ADLS Gen2، والاستعلام عنه تماما مثل جدول مستخدم عادي.

تصف الخطوات التالية عملية إنشاء جدول خارجي جديد يشير إلى البيانات على ADLS Gen2، باستخدام هوية مدارة للمصادقة.

إنشاء كائنات قاعدة البيانات المطلوبة

تتطلب الجداول الخارجية إنشاء العناصر التالية:

  1. مفتاح رئيسي لقاعدة البيانات يقوم بتشفير بيانات الاعتماد الخاصة بقاعدة البيانات التي تم تحديد نطاقها
  2. بيانات اعتماد محددة النطاق لقاعدة البيانات تستخدم هوية مساحة العمل الخاصة بك
  3. مصدر بيانات خارجي يشير إلى المجلد المصدر
  4. تنسيق ملف خارجي يحدد تنسيق الملفات المصدر
  5. تعريف جدول خارجي يستخدم للاستعلامات

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

إنشاء المفتاح الرئيسي لقاعدة البيانات

المفتاح الرئيسي لقاعدة البيانات هو مفتاح متماثل يستخدم لحماية المفاتيح الخاصة للشهادات والمفاتيح غير المتماثلة الموجودة في قاعدة البيانات والأسرار في بيانات اعتماد نطاق قاعدة البيانات. إذا كان هناك بالفعل مفتاح رئيسي في قاعدة البيانات، فلن تحتاج إلى إنشاء مفتاح رئيسي جديد. استبدل <Secure Password> بكلمة مرور آمنة. يتم استخدام كلمة المرور هذه لتشفير المفتاح الرئيسي في قاعدة البيانات.

لإنشاء مفتاح رئيسي، استخدم الأمر T-SQL التالي:

SQL
-- Replace <Secure Password> with a secure password
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Secure Password>';

لمعرفة المزيد حول المفتاح الرئيسي لقاعدة البيانات، راجع إنشاء المفتاح الرئيسي (Transact-SQL) .

إنشاء بيانات اعتماد محددة النطاق لقاعدة البيانات

تستخدم بيانات اعتماد نطاق قاعدة البيانات هوية مساحة العمل الخاصة بك وهي مطلوبة للوصول إلى الموقع الخارجي في أي وقت يتطلب الجدول الخارجي الوصول إلى البيانات المصدر.

لإنشاء بيانات اعتماد محددة النطاق لقاعدة البيانات، استخدم الأمر التالي. استبدل <CredentialName> بالاسم الذي ترغب في استخدامه لبيانات الاعتماد الخاصة بقاعدة البيانات الخاصة بك.

SQL
CREATE DATABASE SCOPED CREDENTIAL <CredentialName> WITH IDENTITY = 'Managed Service Identity';

لمعرفة المزيد حول بيانات الاعتماد المحددة في نطاق قاعدة البيانات، راجع إنشاء بيانات اعتماد نطاق قاعدة البيانات (Transact-SQL) .

إنشاء مصدر بيانات خارجي

الخطوة التالية هي إنشاء مصدر بيانات خارجي يحدد مكان وجود البيانات المصدر المستخدمة من قبل الجدول الخارجي.

لإنشاء مصدر البيانات الخارجي، استخدم الأمر T-SQL التالي:

SQL
CREATE EXTERNAL DATA SOURCE <ExternalDataSourceName>
WITH (
    TYPE = HADOOP,
    LOCATION = 'abfss://<Container>@<AccountName>.dfs.core.windows.net/<Folder>/',
    CREDENTIAL = <CredentialName>
);

المكان:

  • <ExternalDataSourceName> هو الاسم الذي تريد استخدامه لمصدر البيانات الخارجي.
  • <AccountName> هو اسم حساب ADLS Gen2 الخاص بك.
  • <Container> هو اسم الحاوية داخل حساب التخزين الخاص بك حيث يتم تخزين البيانات المصدر.
  • <Folder> هو المجلد (أو المسار مع المجلدات الفرعية) حيث يتم تخزين البيانات المصدر داخل الحاوية الخاصة بك. يمكنك أيضا توفير اسم ملف إذا كان يشير مباشرة إلى ملف واحد.
  • <Credential> هو اسم بيانات الاعتماد التي تم تحديد نطاقها لقاعدة البيانات التي قمت بإنشائها سابقا.

لمعرفة المزيد حول مصادر البيانات الخارجية، راجع إنشاء مصدر بيانات خارجي (Transact-SQL) .

إنشاء تنسيق الملف الخارجي

الخطوة التالية هي إنشاء تنسيق الملف الخارجي. يحدد التخطيط الفعلي للبيانات المشار إليها بواسطة الجدول الخارجي.

لإنشاء تنسيق الملف الخارجي، استخدم الأمر T-SQL التالي. استبدل <FileFormatName> بالاسم الذي تريد استخدامه لتنسيق الملف الخارجي.

SQL
CREATE EXTERNAL FILE FORMAT <FileFormatName>
WITH (
    FORMAT_TYPE = DELIMITEDTEXT,
    FORMAT_OPTIONS (
        FIELD_TERMINATOR = ',',
        STRING_DELIMITER = '"',
        FIRST_ROW = 2,
        USE_TYPE_DEFAULT = True
    )
);

في هذا المثال، اضبط معلمات مثل FIELD_TERMINATORو STRING_DELIMITERFIRST_ROWو وغيرها حسب الحاجة وفقا لبيانات المصدر. لمزيد من خيارات التنسيق ولمعرفة المزيد حول EXTERNAL FILE FORMAT، راجع إنشاء تنسيق ملف خارجي.

أنشئ الجدول الخارجي

الآن بعد إنشاء جميع الكائنات الضرورية التي تحتوي على بيانات التعريف للوصول إلى البيانات الخارجية بشكل آمن، حان الوقت لإنشاء الجدول الخارجي. لإنشاء الجدول الخارجي، استخدم الأمر T-SQL التالي:

SQL
-- Adjust the table name and columns to your desired name and external table schema
CREATE EXTERNAL TABLE <ExternalTableName> (
    Col1 INT,
    Col2 NVARCHAR(100),
    Col4 INT
)
WITH
(
    LOCATION = '<Path>',
    DATA_SOURCE = <ExternalDataSourceName>,
    FILE_FORMAT = <FileFormatName>
);

المكان:

تأكد من ضبط اسم الجدول والمخطط إلى الاسم المطلوب ومخطط البيانات في الملفات المصدر.

الاستعلام عن الجدول الخارجي

عند هذه النقطة، يتم إنشاء جميع بيانات التعريف المطلوبة للوصول إلى الجدول الخارجي. لاختبار الجدول الخارجي، استخدم استعلاما مثل نموذج T-SQL التالي للتحقق من صحة عملك:

SQL
SELECT TOP 10 Col1, Col2 FROM <ExternalTableName>;

إذا تم تكوين كل شيء بشكل صحيح، يجب أن تشاهد البيانات من البيانات المصدر كنتيجة لهذا الاستعلام.

لمعرفة المزيد واستكشاف بناء الجملة الكامل ل CREATE EXTERNAL TABLE، راجع إنشاء جدول خارجي (Transact-SQL) .