مشاركة عبر


‬‏‫التشغيل السريع: استخدام تجمع SQL بدون خادم

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

يوضح هذا التشغيل السريع كيفية الاستعلام عن ملفات CSV وApache Parquet وJSON.

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

اختر عميل SQL لإصدار الاستعلامات:

  • Azure Synapse Studio هو أداة ويب يمكنك استخدامها لاستعراض الملفات في التخزين وإنشاء استعلامات SQL.
  • Visual Studio Code مع ملحق mssql هو مطور خفيف عبر النظام الأساسي وأداة بيانات تتيح لك تشغيل استعلامات SQL ودفاتر الملاحظات على قاعدة البيانات عند الطلب.
  • SQL Server Management Studio هو أداة عميل تتيح لك تشغيل استعلامات SQL على قاعدة البيانات عند الطلب.

يستخدم هذا التشغيل السريع المعلمات التالية:

المعلمة ‏‏الوصف‬
عنوان نقطة نهاية خدمة تجمع SQL بلا خادم يستخدم كاسم خادم
منطقة نقطة نهاية خدمة مجموعة SQL بلا خادم يستخدم لتحديد التخزين الذي يجب استخدامه في العينات
اسم المستخدم وكلمة المرور للوصول إلى نقطة النهاية يُستخدم للوصول إلى نقطة النهاية
قاعدة البيانات المستخدمة لإنشاء طرق العرض قاعدة البيانات المستخدمة كنقطة بداية في العينات

الإعداد لأول مرة

قبل استخدام العينات:

  • إنشاء قاعدة بيانات لطرق العرض (في حالة رغبتك في استخدام طرق العرض).
  • إنشاء بيانات اعتماد لاستخدامها من قبل تجمع SQL بلا خادم للوصول إلى الملفات في التخزين.

إنشاء قاعدة بيانات

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

إشعار

يتم استخدام قواعد البيانات فقط لعرض بيانات التعريف، وليس للبيانات الفعلية. اكتب اسم قاعدة البيانات لاستخدامها لاحقا في التشغيل السريع.

استخدم الأمر T-SQL التالي، مع <mydbname> تغيير إلى اسم من اختيارك:

CREATE DATABASE <mydbname>

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

لتشغيل الاستعلامات باستخدام تجمع SQL بلا خادم، قم بإنشاء مصدر بيانات يمكن لتجمع SQL بلا خادم استخدامه للوصول إلى الملفات في التخزين. قم بتنفيذ القصاصة البرمجية التالية لإنشاء مصدر البيانات المستخدم في العينات في هذا القسم. استبدل <strong-password-here> بكلمة مرور قوية من اختيارك.

-- create master key that will protect the credentials:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong-password-here>'

-- create credentials for containers in our demo storage account
CREATE DATABASE SCOPED CREDENTIAL sqlondemand
WITH IDENTITY='SHARED ACCESS SIGNATURE',  
SECRET = 'sv=2022-11-02&ss=b&srt=co&sp=rl&se=2042-11-26T17:40:55Z&st=2024-11-24T09:40:55Z&spr=https&sig=DKZDuSeZhuCWP9IytWLQwu9shcI5pTJ%2Fw5Crw6fD%2BC8%3D'
GO
CREATE EXTERNAL DATA SOURCE SqlOnDemandDemo WITH (
    LOCATION = 'https://sqlondemandstorage.blob.core.windows.net',
    CREDENTIAL = sqlondemand
);

الاستعلام عن ملفات CSV

تعرض الصورة التالية معاينة للملف الذي سيتم الاستعلام عن:

لقطة شاشة تعرض أول 10 صفوف من ملف CSV بدون عنوان، سطر جديد بنمط Windows.

يوضح الاستعلام التالي كيفية قراءة ملف CSV لا يحتوي على صف رأس، مع سطر جديد بنمط Windows وأعمدة مفصولة بفواصل:

SELECT TOP 10 *
FROM OPENROWSET
  (
      BULK 'csv/population/*.csv',
      DATA_SOURCE = 'SqlOnDemandDemo',
      FORMAT = 'CSV', PARSER_VERSION = '2.0'
  )
WITH
  (
      country_code VARCHAR (5)
    , country_name VARCHAR (100)
    , year smallint
    , population bigint
  ) AS r
WHERE
  country_name = 'Luxembourg' AND year = 2017

يمكنك تحديد المخطط في وقت التحويل البرمجي للاستعلام. لمزيد من الأمثلة، راجع كيفية الاستعلام عن ملفات CSV.

ملفات Parquet للاستعلام

توضع العينة التالية إمكانات الاستدلال التلقائي للمخطط للاستعلام عن ملفات Parquet. تقوم بإرجاع عدد الصفوف في سبتمبر 2017 بدون تحديد المخطط.

إشعار

ليس عليك تحديد أعمدة في OPENROWSET WITH عبارة عند قراءة ملفات Parquet. في هذه الحالة، يستخدم تجمع SQL بلا خادم بيانات التعريف في ملف Parquet ويربط الأعمدة بالاسم.

SELECT COUNT_BIG(*)
FROM OPENROWSET
  (
      BULK 'parquet/taxi/year=2017/month=9/*.parquet',
      DATA_SOURCE = 'SqlOnDemandDemo',
      FORMAT='PARQUET'
  ) AS nyc

ابحث عن مزيد من المعلومات، راجع الاستعلام عن ملفات Parquet باستخدام تجمع SQL بلا خادم.

الاستعلام عن ملفات JSON

نموذج ملف JSON

يتم تخزين الملفات في حاوية json، باستخدام دفاتر المجلدات، وتحتوي على إدخال كتاب واحد بالبنية التالية:

{  
   "_id":"ahokw88",
   "type":"Book",
   "title":"The AWK Programming Language",
   "year":"1988",
   "publisher":"Addison-Wesley",
   "authors":[  
      "Alfred V. Aho",
      "Brian W. Kernighan",
      "Peter J. Weinberger"
   ],
   "source":"DBLP"
}

نموذج استعلام

يوضح الاستعلام التالي كيفية استخدام JSON_VALUE لاسترداد القيم العددية (العنوان، الناشر) من كتاب بعنوان الأساليب الاحتمالية والإحصائية في التشفير، مقدمة:

SELECT
    JSON_VALUE(jsonContent, '$.title') AS title
  , JSON_VALUE(jsonContent, '$.publisher') as publisher
  , jsonContent
FROM OPENROWSET
  (
      BULK 'json/books/*.json',
      DATA_SOURCE = 'SqlOnDemandDemo'
    , FORMAT='CSV'
    , FIELDTERMINATOR ='0x0b'
    , FIELDQUOTE = '0x0b'
    , ROWTERMINATOR = '0x0b'
  )
WITH
  ( jsonContent varchar(8000) ) AS [r]
WHERE
  JSON_VALUE(jsonContent, '$.title') = 'Probabilistic and Statistical Methods in Cryptology, An Introduction'

هام

نقرأ ملف JSON بأكمله كصف أو عمود واحد. لذلك FIELDTERMINATOR، FIELDQUOTEيتم تعيين و ROWTERMINATOR إلى 0x0b لأننا لا نتوقع العثور عليه في الملف.