المتغيرات

ينطبق على: Databricks Runtime check marked yes 14.1 وما فوق

تتم كتابة المتغيرات والكائنات المؤهلة للمخطط التي تخزن القيم الخاصة بجلسة العمل. في متغيرات Azure Databricks مؤقتة ويتم الإعلان عنها داخل جلسة عمل باستخدام عبارة DECLARE VARIABLE .

مصطلحات المتغير المؤقت ومتغير الجلسة قابلة للتبديل.

المخطط الذي توجد فيه المتغيرات المؤقتة هو system.session.

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

عند تعريف متغير تكون قيمته NULL أو نتيجة التعبير الافتراضي المحدد اختياريا. يمكنك تعديل قيمة أي عدد من المتغيرات باستخدام عبارة SET VARIABLE في أي وقت أثناء الجلسة.

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

تختلف المتغيرات دلاليا عن علامات المعلمات بثلاث طرق:

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

تقبل عبارة IDENTIFIER المتغيرات كوسيطات. يسمح لك هذا بتحديد معلمات المعرفات باستخدام متغيرات ونتائج الاستعلامات المستخدمة لتعيين تلك المتغيرات.

الأمثلة

-- A verbose definition of a temporary variable
> DECLARE OR REPLACE VARIABLE myvar INT DEFAULT 17;

-- A dense definition, including derivation of the type from the default expression
> DECLARE address = named_struct('street', 'Grimmauld Place', 'number', 12);

-- Referencing a variable
> SELECT myvar, session.address.number;
 17  12

-- Setting a single variable
> SET VAR myvar = (SELECT max(c1) FROM VALUES (1), (2) AS t(c1));
> SELECT myvar;
  2

-- Setting multiple variables
> SET VAR (myvar, address) = (SELECT address.number, named_struct('street', address.street, 'number', 10));
> SELECT myvar, address;
  12    {"street":"Grimmauld Place","number":10}

-- Drop a variable
> DROP TEMPORARY VARIABLE myvar;
> DROP TEMPORARY VARIABLE IF EXISTS address;

-- Use the IDENTIFIER clause with a variable
> DECLARE view = 'tempv';
> CREATE OR REPLACE TEMPORARY VIEW IDENTIFIER(view) (c1) AS SELECT 1;
> SELECT * FROM IDENTIFIER(view);
  1