الانتقال إلى المحتوى الرئيسي

السؤال

إذا كانت لدي سمات متغيرة في عمود من نوع Map، فكيف يمكنني استخراجها واستخدامها في الاستعلامات؟

الإجابة

هذا مثال بسيط على استخراج المفاتيح والقيم من حقل attributes المتغير. ستؤدي هذه الطريقة إلى إنشاء ما يبدو أنه صفوف مكررة من كل صف في الجدول المصدر/الخام. ومع ذلك، وبما أن المفاتيح والقيم تُستخرج، فيمكن وضعها ضمن المفتاح الأساسي أو ضمن فهرس ثانوي، مثل bloom filter. في هذا المثال، لدينا أساسًا مصدر ينشئ جدول مقاييس، وفيه عدة سمات يمكن أن تنطبق ضمن حقل attributes الذي يحتوي على خرائط. إذا كانت هناك سمات ستكون موجودة دائمًا في السجلات، فمن الأفضل استخراجها إلى أعمدة مستقلة وتعبئتها. يجب أن تتمكن ببساطة من النسخ واللصق لمعرفة شكل المخرجات وما الذي يفعله العرض المادي في هذه الحالة. أنشئ قاعدة بيانات تجريبية:
أنشئ الجدول الأوّلي الذي سيحتوي على الصفوف والسمات:
أدرِج صفوفًا تجريبية في الجدول. وقد جُعل حجم العينة صغيرًا عمدًا حتى تتمكن، عند إنشاء العرض المادي، من رؤية كيف تتضاعف الصفوف لكل سمة.
يمكننا بعد ذلك إنشاء عرض مادي باستخدام ARRAY JOIN بحيث يمكنه استخراج السمات من الـ Map إلى عمودَي keys و values. وللتوضيح، في المثال أدناه، يُستخدَم جدول ضمني (مع الأمر POPULATE، وجدول أساسي مثل .inner.{uuid}... ). ومع ذلك، فإن أفضل الممارسات الموصى بها هي استخدام جدول صريح، بحيث تُعرِّف الجدول أولًا، ثم تُنشئ فوقه عرضًا ماديًا باستخدام الأمر TO بدلًا من ذلك.
سيحتوي الجدول الجديد على عدد أكبر من الصفوف، مع استخراج المفاتيح فيه، كما يلي:
من هنا، وللاستعلام عن الصفوف التي تتضمن سمات معيّنة، يمكنك تنفيذ شيء على النحو التالي:
آخر تعديل في ٢ يوليو ٢٠٢٦