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

مشاركة عبر


البرنامج التعليمي: تحميل البيانات الخارجية باستخدام معرف Microsoft Entra

تشرح هذه المقالة كيفية إنشاء جداول خارجية باستخدام Microsoft Entra ID passthrough.

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

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

  • مساحة عمل Azure Synapse Analytics وتجمع SQL مخصص

منح حساب معرف Microsoft Entra حق الوصول إلى حساب التخزين

يستخدم هذا المثال حساب معرف Microsoft Entra (أو مجموعة) للمصادقة على البيانات المصدر.

لتمكين الوصول إلى البيانات على حسابات Azure Data Lake Storage (ADLS) Gen2، تحتاج إلى منح حساب معرف Microsoft Entra (أو المجموعة) حق الوصول إلى حساب المصدر. لمنح الأذونات المناسبة، اتبع الخطوات التالية:

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

حساب Microsoft Entra ID أو المجموعة الآن عضو في دور Storage Blob Data Reader ولديه حق الوصول إلى المجلد المصدر.

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

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

COPY INTO تستخدم العبارة الوسيطة CREDENTIAL لتحديد أسلوب المصادقة المستخدم للاتصال بحساب المصدر. ومع ذلك، عند المصادقة باستخدام معرف Microsoft Entra أو إلى حساب تخزين عام، CREDENTIAL لا تحتاج إلى تحديد. لتشغيل العبارة COPY INTO باستخدام مصادقة معرف Entra، استخدم الأمر T-SQL التالي:

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

المكان:

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

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

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

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

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

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

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

  1. مصدر بيانات خارجي يشير إلى المجلد المصدر
  2. تنسيق ملف خارجي يحدد تنسيق الملفات المصدر
  3. تعريف جدول خارجي يستخدم للاستعلامات

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

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

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

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

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

المكان:

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

لمعرفة المزيد حول مصادر البيانات الخارجية، راجع إنشاء مصدر بيانات خارجي (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و وغيرها حسب الحاجة وفقا لبيانات المصدر. لمزيد من خيارات التنسيق ولمعرفة المزيد، راجع إنشاء تنسيق ملف خارجي (Transact-SQL) .

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

الآن بعد إنشاء الكائنات الضرورية التي تحتوي على بيانات التعريف للوصول إلى البيانات الخارجية بأمان، حان الوقت لإنشاء الجدول الخارجي. لإنشاء الجدول الخارجي، استخدم الأمر 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) .