استخدام حلقات T-SQL لتجمع SQL المخصص في Azure Synapse Analytics

تلميح

Microsoft Fabric Data Warehouse هو مستودع علائقي على نطاق مؤسسي قائم على أساس بحيرة البيانات، مع بنية جاهزة للمستقبل، وذكاء اصطناعي مدمج، وميزات جديدة. إذا كنت جديدا في مستودع البيانات، ابدأ ب Fabric Data Warehouse. يمكن لأحمال عمل تجمع SQL المخصصة الحالية الترقية إلى Fabric للوصول إلى قدرات جديدة في علوم البيانات، والتحليلات اللحظية، والتقارير.

تتضمن هذه المقالة نصائح لتطوير حلول تجمع SQL مخصصة باستخدام حلقات T-SQL واستبدال المؤشرات.

الغرض من حلقات WHILE

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

الحلقات مفيدة لاستبدال المؤشرات المعرفة في كود SQL. لحسن الحظ، معظم المؤشرات المكتوبة بكود SQL هي من النوع السريع للقراءة فقط. لذا، حلقات WHILE هي بديل رائع لاستبدال المؤشرات.

استبدال المؤشرات في مجموعة SQL مخصصة

ومع ذلك، قبل أن تغوص في الموضوع مباشرة، يجب أن تسأل نفسك السؤال التالي: "هل يمكن إعادة كتابة هذا المؤشر لاستخدام العمليات القائمة على المجموعات؟"

في كثير من الحالات، يكون الجواب نعم وغالبا ما يكون أفضل نهج. غالبا ما تؤدي العملية القائمة على المجموعة أسرع من النهج التكراري سطرا بصف.

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

أولا، أنشئ جدولا مؤقتا يحتوي على رقم صف فريد يستخدم لتحديد العبارات الفردية:

CREATE TABLE #tbl
WITH
( DISTRIBUTION = ROUND_ROBIN
)
AS
SELECT  ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS Sequence
,       [name]
,       'UPDATE STATISTICS '+QUOTENAME([name]) AS sql_code
FROM    sys.tables
;

ثانيا، تهيئة المتغيرات المطلوبة لأداء الحلقة:

DECLARE @nbr_statements INT = (SELECT COUNT(*) FROM #tbl)
,       @i INT = 1
;

الآن قم بتكرار العبارات التي تنفذها واحدة تلو الأخرى:

WHILE   @i <= @nbr_statements
BEGIN
    DECLARE @sql_code NVARCHAR(4000) = (SELECT sql_code FROM #tbl WHERE Sequence = @i);
    EXEC    sp_executesql @sql_code;
    SET     @i +=1;
END

وأخيرا أسقط الجدول المؤقت الذي تم إنشاؤه في الخطوة الأولى

DROP TABLE #tbl;

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

لمزيد من نصائح التطوير، قم بمراجعةنظرة عامة على التطوير.