إنشاء طرق عرض واستخدامها باستخدام مجموعة SQL بلا خادم في Azure Synapse Analytics

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

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

تُعد الخطوة الأولى هي إنشاء قاعدة بيانات سيتم فيها إنشاء طريقة العرض وتكوين الكائنات المطلوبة للمصادقة على تخزين Azure بواسطة تنفيذ برنامج الإعداد النصي على قاعدة البيانات تلك. وستُنفّذ جميع الاستعلامات في هذه المقالة على قاعدة بيانات النموذج الخاص بك.

طرق العرض على البيانات الخارجية

يمكنك إنشاء طرق عرض بنفس الطريقة التي تقوم بها بإنشاء طرق عرض SQL Server القياسية. يُنشئ الاستعلام التالي طريقة عرض تقرأ ملف population.csv.

ملاحظة

قم بتغيير السطر الأول في الاستعلام، أي [mydbname]، بحيث تستخدم قاعدة البيانات التي قمت بإنشائها.

USE [mydbname];
GO

DROP VIEW IF EXISTS populationView;
GO

CREATE VIEW populationView AS
SELECT * 
FROM OPENROWSET(
        BULK 'csv/population/population.csv',
        DATA_SOURCE = 'SqlOnDemandDemo',
        FORMAT = 'CSV', 
        FIELDTERMINATOR =',', 
        ROWTERMINATOR = '\n'
    )
WITH (
    [country_code] VARCHAR (5) COLLATE Latin1_General_BIN2,
    [country_name] VARCHAR (100) COLLATE Latin1_General_BIN2,
    [year] smallint,
    [population] bigint
) AS [r];

وتستخدم طريقة العرض EXTERNAL DATA SOURCE مع عنوان URL الجذر الخاص بالتخزين لديك، مثل DATA_SOURCE ويضيف مسار ملف ذي صلة إلى الملفات.

طرق عرض Delta Lake

إذا كنت تقوم بإنشاء طرق العرض فوق مجلد Delta Lake، فستحتاج إلى تحديد الموقع إلى المجلد الجذر بعد الخيار BULK بدلاً من تحديد مسار الملف.

مجلد ECDC COVID-19 Delta Lake

ستعمل الدالة OPENROWSET التي تقرأ البيانات من مجلد Delta Lake على فحص بنية المجلد وتحديد مواقع الملفات تلقائياً.

create or alter view CovidDeltaLake
as
select *
from openrowset(
           bulk 'covid',
           data_source = 'DeltaLakeStorage',
           format = 'delta'
    ) with (
           date_rep date,
           cases int,
           geo_id varchar(6)
           ) as rows

لمزيد من المعلومات، راجع صفحة المساعدة الذاتية لتجمع SQL بلا خادم Synapseومشكلات Azure Synapse Analytics المعروفة.

طرق العرض المقسمة

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

CREATE VIEW TaxiView
AS SELECT *, nyc.filepath(1) AS [year], nyc.filepath(2) AS [month]
FROM
    OPENROWSET(
        BULK 'parquet/taxi/year=*/month=*/*.parquet',
        DATA_SOURCE = 'sqlondemanddemo',
        FORMAT='PARQUET'
    ) AS nyc

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

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

عند استخدام JOINs في استعلامات SQL، قم بتعريف دالة تقييم عامل التصفية ك NVARCHAR لتقليل تعقيد خطة الاستعلام وزيادة احتمال إزالة القسم الصحيح. عادة ما يتم استنتاج أعمدة القسم على أنها NVARCHAR(1024)، لذلك يؤدي استخدام نفس النوع للمسند إلى تجنب الحاجة إلى تحويل ضمني، ما يمكن أن يزيد من تعقيد خطة الاستعلام.

طرق العرض المقسمة لـ Delta Lake

إذا كنت تنشئ طرق العرض المقسمة فوق تخزين Delta Lake، يمكنك تحديد مجلد Delta Lake الجذر فقط ولن تكون بحاجة إلى عرض أعمدة التقسيم بشكل صريح باستخدام الدالة FILEPATH:

CREATE OR ALTER VIEW YellowTaxiView
AS SELECT *
FROM  
    OPENROWSET(
        BULK 'yellow',
        DATA_SOURCE = 'DeltaLakeStorage',
        FORMAT='DELTA'
    ) nyc

ستعمل الدالة OPENROWSET على فحص بنية مجلد Delta Lake الأساسي وتعريف وفضح أعمدة التقسيم تلقائياً. وستُجرى إزالة القسم تلقائياً إذا وضعتَ عمود التقسيم في عبارة الاستعلام WHERE.

يجب أن يشير اسم المجلد في الدالةOPENROWSET (yellow في هذا المثال) الذي رُبط بعنوان URI LOCATION المعرّف في مصدر البيانات DeltaLakeStorage إلى المجلد الجذر Delta Lake الذي يحتوي على مجلد فرعي يسمى _delta_log.

مجلد Yellow Taxi Delta Lake

لمزيد من المعلومات، راجع صفحة المساعدة الذاتية لتجمع SQL بلا خادم Synapseومشكلات Azure Synapse Analytics المعروفة.

JSON وجهات النظر

تُعد طرق العرض الخيار الأمثل إن كنت بحاجة إلى القيام ببعض المعالجة الإضافية فوق مجموعة النتائج التي يتم جلبها من الملفات. قد يكون أحد الأمثلة هو تحليل ملفات JSON حيث نحتاج إلى تطبيق دوالي JSON لاستخراج القيم من مستندات JSON:

CREATE OR ALTER VIEW CovidCases
AS 
select
    *
from openrowset(
        bulk 'latest/ecdc_cases.jsonl',
        data_source = 'covid',
        format = 'csv',
        fieldterminator ='0x0b',
        fieldquote = '0x0b'
    ) with (doc nvarchar(max)) as rows
    cross apply openjson (doc)
        with (  date_rep datetime2,
                cases int,
                fatal int '$.deaths',
                country varchar(100) '$.countries_and_territories')

إذ تحلل الدالة OPENJSON كل سطر من ملف JSON الذي يحتوي على مستند JSON واحد لكل سطر بتنسيق نصي.

طرق عرض Azure Cosmos DB على الحاويات

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

CREATE DATABASE SCOPED CREDENTIAL MyCosmosDbAccountCredential
WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 's5zarR2pT0JWH9k8roipnWxUYBegOuFGjJpSjGlR36y86cW0GQ6RaaG8kGjsRAQoWMw1QKTkkX8HQtFpJjC8Hg==';
GO
CREATE OR ALTER VIEW Ecdc
AS SELECT *
FROM OPENROWSET(
      PROVIDER = 'CosmosDB',
      CONNECTION = 'Account=synapselink-cosmosdb-sqlsample;Database=covid',
      OBJECT = 'Ecdc',
      CREDENTIAL = 'MyCosmosDbAccountCredential'
    ) with ( date_rep varchar(20), cases bigint, geo_id varchar(6) ) as rows

لمزيد من المعلومات، راجع وللاستعلام عن بيانات قاعدة بيانات Azure Cosmos باستخدام تجمع SQL بلا خادم في Azure Synapse Link.

استخدام طريقة عرض

يمكنك استخدام طرق العرض في الاستعلامات الخاصة بك بنفس الطريقة التي تستخدم بها طرق العرض في استعلامات SQL Server.

يوضح الاستعلام التالي استخدام طريقة العرض Population_csv التي أنشأناها في إنشاء طريقة عرض. وهو يُرجع أسماء البلدان/المناطق مع عدد سكانها في عام 2019 بترتيب تنازلي.

ملاحظة

قم بتغيير السطر الأول في الاستعلام، أي [mydbname]، بحيث تستخدم قاعدة البيانات التي قمت بإنشائها.

USE [mydbname];
GO

SELECT
    country_name, population
FROM populationView
WHERE
    [year] = 2019
ORDER BY
    [population] DESC;

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

الخطوات التالية

للحصول على معلومات حول كيفية الاستعلام عن أنواع الملفات المختلفة، راجع مقالات الاستعلام عن ملف CSV واحد، والاستعلام عن ملفات Parquet، والاستعلام عن ملفات JSON.