مشاركة عبر


كيف يختلف المتغير عن سلاسل JSON؟

هام

هذه الميزة في المعاينة العامة.

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

في Databricks Runtime 15.3 وما فوق، يمكنك استخدام نوع البيانات المتغير لترميز البيانات شبه المنظمة والاستعلام عنها. توصي Databricks بمتغير كبديل لتخزين البيانات شبه المنظمة باستخدام سلاسل JSON. يسمح أداء القراءة والكتابة المحسن للمتغير باستبدال أنواع Spark المعقدة الأصلية مثل البنيات والصفائف في بعض حالات الاستخدام.

كيف يمكنك الاستعلام عن البيانات المتغيرة؟

تستخدم البيانات المتغيرة نفس عوامل التشغيل للاستعلام عن الحقول والحقول الفرعية وعناصر الصفيف.

للاستعلام عن حقل، استخدم :. على سبيل المثال، column_name:field_name

للاستعلام عن حقل فرعي، استخدم .. على سبيل المثال، column_name:field_name.subfield_name

للاستعلام عن عنصر صفيف، استخدم [n] مكان n قيمة فهرس العدد الصحيح للعنصر. على سبيل المثال، للاستعلام عن القيمة الأولى في صفيف، column_name:array_name[0].

قد تكسر الاختلافات التالية الاستعلامات الموجودة عند الترقية من سلاسل JSON إلى متغير:

  • تتم مطابقة جميع عناصر المسار المتغيرة بطريقة حساسة لحالة الأحرف. سلاسل JSON غير حساسة لحالة الأحرف. وهذا يعني أنه بالنسبة للمتغير، column_name:FIELD_NAME وابحث column_name:field_name عن حقول مختلفة في البيانات المخزنة.
  • [*] بناء الجملة غير معتمد لتحديد أو فك حزم كافة العناصر في صفيف.
  • ترميز NULL المتغير القيم بشكل مختلف عن سلاسل JSON. راجع قواعد فارغة متغيرة.

تحويل سلاسل JSON من وإلى متغير

في Databricks Runtime 15.3 وما فوق، تحتوي الدالة to_json على وظائف إضافية لإرسال VARIANT الأنواع إلى سلاسل JSON. يتم تجاهل الخيارات عند التحويل VARIANT إلى سلسلة JSON. انظر to_json.

تحول parse_json الدالة سلسلة JSON للكتابة VARIANT . بينما parse_json(json_string_column) هو العكس المنطقي ل to_json(variant_column)، تصف قواعد التحويل التالية سبب عدم عكسها بالضبط:

  • المسافة البيضاء غير محفوظة تماما.
  • ترتيب المفاتيح عشوائي.
  • قد يتم اقتطاع الأصفار اللاحقة بالأرقام.

parse_json ترجع الدالة خطأ إذا كانت سلسلة JSON مشوهة أو تجاوزت حد حجم المتغير. استخدم الدالة try_parse_json لإرجاع NULL بدلا من ذلك عند حدوث خطأ في التحليل.

ما هي وظائف SQL للعمل مع المتغيرات؟

توفر وظائف Apache Spark SQL المتوفرة في Databricks Runtime 15.3 وما فوق أساليب للتفاعل مع البيانات المتغيرة. يتضمن الجدول التالي الدالة الجديدة ودالة سلسلة JSON المقابلة وملاحظات حول الاختلافات في السلوك.

إشعار

لاستخدام هذه الدالات مع PySpark DataFrames، قم باستيرادها من pyspark.sql.functions. variant_explode ولا variant_explode_outer يتم دعمها في PySpark.

الدالة Variant دالة سلسلة JSON ملاحظات
variant_get تحويل get_json_object يأخذ تعبيرا ومسارا ونوعا. يتبع كافة القواعد لمسارات المتغيرات والصب والقيم الخالية.
try_variant_get try_cast get_json_object يأخذ تعبيرا ومسارا ونوعا. يتبع كافة القواعد لمسارات المتغيرات والصب والقيم الخالية.
is_variant_null قيمة خالية يتحقق ما إذا كان التعبير يخزن VARIANT ترميز .NULL استخدم is null للتحقق مما إذا كان تعبير الإدخال هو NULL.
schema_of_variant schema_of_json عند تحديد المخطط ل ARRAY<elementType>، elementType قد يتم استنتاج كما VARIANT لو كانت هناك أنواع متعارضة موجودة في البيانات.
schema_of_variant_agg schema_of_json_agg عند عدم تحديد نوع أقل شيوعا، يتم اشتقاق النوع ك VARIANT.
variant_explode انفجر المخرجات posوالأعمدةkey.value عند انفجار صفيف، يكون مفتاح الإخراج دائما خاليا.
variant_explode_outer explode_outer المخرجات posوالأعمدةkey.value عند انفجار صفيف، يكون مفتاح الإخراج دائما خاليا.

تتعامل المتغيرات مع التحويل و NULLبشكل مختلف عن سلاسل JSON. راجع قواعد تحويل نوع المتغير والقواعد الخالية المتغيرة.