extractKeyValuePairs
مُتاح منذ: v23.4.0 تستخرج أزواج المفاتيح والقيم من أي سلسلة نصية. لا يشترط أن تكون السلسلة النصية منظمةً بالكامل وفق تنسيق أزواج المفاتيح والقيم؛ يمكن أن تحتوي على ضوضاء (مثل ملفات السجل). يجب تحديد تنسيق زوج المفتاح-القيمة المراد تفسيره من خلال وسيطات الدالة. يتكوّن زوج المفتاح والقيمة من مفتاح يعقبهkey_value_delimiter ثم قيمة. كما تُدعم المفاتيح والقيم المحاطة بعلامات اقتباس. ويجب الفصل بين أزواج المفتاح والقيمة بمحددات الأزواج.
البنية
data- السلسلة النصية المُراد استخراج أزواج المفتاح-القيمة منها. String أو FixedString.key_value_delimiter- الحرف المستخدَم كفاصل بين المفتاح والقيمة. القيمة الافتراضية هي:. String أو FixedString.pair_delimiters- مجموعة الأحرف المستخدَمة كفواصل بين الأزواج. القيمة الافتراضية هي\spaceو,و;. String أو FixedString.quoting_character- الحرف المستخدَم كحرف اقتباس. القيمة الافتراضية هي". String أو FixedString.unexpected_quoting_character_strategy- الاستراتيجية المستخدَمة للتعامل مع أحرف الاقتباس في مواضع غير متوقعة أثناء مرحلتيread_keyوread_value. القيم الممكنة:invalidوacceptوpromote. تؤدي القيمةinvalidإلى تجاهل المفتاح/القيمة والعودة إلى حالةWAITING_KEY. وتتعامل القيمةacceptمعه بوصفه حرفًا عاديًا. أما القيمةpromoteفتنقل الحالة إلىREAD_QUOTED_{KEY/VALUE}وتبدأ من الحرف التالي. القيمة الافتراضية هيPROMOTE
- أزواج المفتاح والقيمة المستخرَجة ضمن Map(String, String).
mapFromString, str_to_map
الوسيطات
- لا شيء.
extractKeyValuePairsWithEscaping
أُضيف في: v23.4.0 مماثلة لـextractKeyValuePairs ولكن مع دعم تسلسلات الهروب.
تسلسلات الهروب المدعومة: \x، \N، \a، \b، \e، \f، \n، \r، \t، \v و \0.
تُعاد تسلسلات الهروب غير القياسية كما هي (بما في ذلك الشرطة المائلة العكسية) ما لم تكن إحدى القيم التالية:
\\، '، "، backtick، /، = أو محارف تحكم ASCII (c <= 31).
تلبي هذه الدالة حالة الاستخدام التي لا يكون فيها تطبيق الهروب مسبقًا أو لاحقًا مناسبًا. على سبيل المثال، تأمل
سلسلة الإدخال التالية: a: "aaaa\"bbb". والمخرَج المتوقع هو: a: aaaa\"bbbb.
- الهروب المسبق: سيؤدي تطبيق الهروب المسبق عليها إلى إخراج:
a: "aaaa"bbb"، ثم ستُخرجextractKeyValuePairsبعد ذلك:a: aaaa - الهروب اللاحق: ستُخرج
extractKeyValuePairsالقيمةa: aaaa\، وسيُبقيها الهروب اللاحق كما هي.
- لا يوجد.
map
أُضيف في: v21.1.0 ينشئ قيمة من النوعMap(key, value) من أزواج المفاتيح والقيم.
البنية
Map(Any, Any)
أمثلة
مثال على الاستخدام
Query
Response
mapAdd
أُضيف في: v20.7.0 يجمع جميع المفاتيح ويحسب مجموع القيم المقابلة. الصيغةarg1[, arg2, ...]— قيم من نوع Map أو Tuple تتكوّن من مصفوفتين، حيث تمثّل عناصر المصفوفة الأولى المفاتيح، بينما تحتوي المصفوفة الثانية على القيم المقابلة لكل مفتاح.Map(K, V)أوTuple(Array(T), Array(T))
Map(K, V) أو Tuple(Array(T), Array(T))
أمثلة
باستخدام نوع Map
Query
Response
Query
Response
mapAll
أُضيفت في: v23.4.0 تتحقق مما إذا كان شرطٌ ما ينطبق على جميع أزواج المفتاح والقيمة في map. تُعدmapAll دالة من الرتبة العليا.
يمكنك تمرير دالة lambda إليها بوصفها الوسيطة الأولى.
البنية
func— دالة لامدا.Lambda functionmap— قيمة Map المراد التحقق منها.Map(K, V)
1 إذا كانت جميع أزواج المفتاح والقيمة تستوفي الشرط، وإلا فتُرجع 0. UInt8
أمثلة
مثال على الاستخدام
Query
Response
mapApply
طُرح في: v22.3.0 يطبّق دالة على كل عنصر في Map. الصيغةfunc— دالة لامدا.دالة لامداmap— الخريطة المراد تطبيق الدالة عليها.Map(K, V)
func على كل عنصر. Map(K, V)
أمثلة
مثال على الاستخدام
Query
Response
mapConcat
أُضيفت في: v23.4.0 تدمج عدة قيم من النوع Map بناءً على تطابق مفاتيحها. إذا وُجدت عناصر لها المفتاح نفسه في أكثر من قيمة Map مُدخلة، تُضاف جميع العناصر إلى قيمة Map الناتجة، ولكن لا يمكن الوصول عبر العامل[] إلا إلى العنصر الأول منها.
الصيغة
maps— أي عدد من الخرائط.Map
Map
أمثلة
مثال على الاستخدام
Query
Response
mapContainsKey
أُضيفت في: v21.2.0 يحدِّد ما إذا كان المفتاح موجودًا في خريطة. الصيغةmapContains
المعاملات
map— الخريطة المراد البحث فيها.Map(K, V)key— المفتاح المراد البحث عنه. يجب أن يطابق نوعه نوع المفتاح في الخريطة.Any
UInt8
أمثلة
مثال على الاستخدام
Query
Response
mapContainsKeyLike
أُضيف في: v23.4.0 يتحقق مما إذا كانت الخريطة تحتوي على مفتاح يطابق النمط المحدد باستخدامLIKE.
الصياغة
map— الخريطة المراد البحث فيها.Map(K, V)pattern— النمط المراد مطابقة المفاتيح وفقًا له.const String
1 إذا كانت map تحتوي على مفتاح يطابق pattern، وإلا فيعيد 0. UInt8
أمثلة
مثال على الاستخدام
Query
Response
mapContainsKeyValue
أُضيف في: v26.9.0 تُرجع ما إذا كانت الـ Map تحتوي على إدخال بالمفتاح والقيمة المحدَّدين. بالنسبة إلى الوسيطات غيرNULL، تكافئ هذه الدالة
arrayExists((k, v) -> k = key AND v = value, mapKeys(map), mapValues(map)).
لا تتطابق القيمة NULL إلا مع NULL أخرى، كما هو الحال في mapContainsKey وmapContainsValue، بدلًا من
معاملتها كقيمة مجهولة عند المقارنة كما يفعل المعامل =.
تُؤخذ جميع الإدخالات في الحسبان، على خلاف map[key] = value الذي لا يقارن سوى قيمة أول
ظهور للمفتاح key.
يستطيع الفهرس النصي المزوَّد بمُقسِّم الرموز keyValuePairs
تقييم هذه الدالة مباشرةً من الفهرس.
الصيغة
map— الخريطة التي سيُبحث فيها.Map(K, V)key— المفتاح المراد البحث عنه. يجب أن يطابق نوعه نوع مفاتيح الخريطة.Anyvalue— القيمة المراد البحث عنها. يجب أن يطابق نوعها نوع قيم الخريطة.Any
1 إذا احتوت الخريطة على إدخال يضم المفتاح والقيمة المحددين، و0 خلاف ذلك. UInt8
أمثلة
استخدام أساسي
Query
Response
Query
Response
Query
Response
mapContainsValue
تم تقديمه في: v25.6.0 يحدّد ما إذا كانت قيمة ما موجودة في map. الصياغةmap— كائن Map المراد البحث فيه.Map(K, V)value— القيمة المراد البحث عنها. يجب أن يتطابق النوع مع نوع القيم فيmap.Any
1 إذا كانت map تحتوي على القيمة، و0 إذا لم تكن كذلك. UInt8
أمثلة
مثال على الاستخدام
Query
Response
mapContainsValueLike
أُضيفت في: v25.5.0 يتحقق مما إذا كان map يحتوي على قيمة تطابق النمط المحدد باستخدامLIKE.
الصيغة
map— الـ Map المطلوب البحث فيه.Map(K, V)pattern— النمط المطلوب مطابقة القيم معه.const String
1 إذا كان map يحتوي على قيمة تطابق pattern، وإلا فتعيد 0. UInt8
أمثلة
مثال على الاستخدام
Query
Response
mapEntries
أُضيف في: v26.10.0 تُعيد أزواج مفتاح-قيمة الموجودة في Map على شكل مصفوفة من عناصر Tuple مسمّاة تتضمن الحقلينkey وvalue.
تُحفَظ المفاتيح المكررة كما هي.
الصيغة
map— قيمة Map المراد استخراج العناصر منها.Map(K, V)
Array(Tuple(key K, value V))
أمثلة
مثال على الاستخدام
Query
Response
mapExists
قُدِّمت في: v23.4.0 تتحقّق مما إذا كان شرطٌ ما ينطبق على زوج مفتاح-قيمة واحد على الأقل في map.mapExists هي دالة عالية الرتبة.
يمكنك تمرير دالة لامبدا إليها باعتبارها الوسيط الأول.
الصيغة
func— اختياري. دالة لامدا.Lambda functionmap— قيمة Map المراد التحقق منها.Map(K, V)
1 إذا كان هناك زوج مفتاح-قيمة واحد على الأقل يستوفي الشرط، و0 خلاف ذلك. UInt8
أمثلة
مثال على الاستخدام
Query
Response
mapExtractKeyLike
أُضيفت في: v23.4.0 عند تزويد هذه الدالة بخريطة ذات مفاتيح نصية ونمطLIKE، فإنها تُرجع خريطةً تحتوي على العناصر التي يطابق مفتاحها النمط.
البنية
map— الخريطة المراد الاستخراج منها.Map(K, V)pattern— النمط المطلوب مطابقة المفاتيح عليه.const String
Map(K, V)
أمثلة
مثال على الاستخدام
Query
Response
mapExtractValueLike
أُضيف في: v25.5.0 إذا كانت لديكmap تحتوي على قيم من النوع String ونمط LIKE، فستُرجع هذه الدالة map بالعناصر التي تطابق قيمتها النمط.
الصيغة
map— قيمة الـ Map المراد الاستخراج منها.Map(K, V)pattern— النمط المطلوب مطابقة القيم معه.const String
Map(K, V)
أمثلة
مثال على الاستخدام
Query
Response
mapFilter
أُضيف في: v22.3.0 يُرشّح قيمة من النوع Map عبر تطبيق دالة على كل عنصر فيها. البنيةfunc— دالة لامبدا.دالة لامبداmap— الخريطة المطلوب تصفيتها.Map(K, V)
func قيمة غير 0. Map(K, V)
أمثلة
مثال على الاستخدام
Query
Response
mapFromArrays
أُضيف في: v23.3.0 ينشئ خريطة من مصفوفة أو خريطة من المفاتيح، ومن مصفوفة أو خريطة من القيم. تُعدّ هذه الدالة بديلاً مناسبًا للصياغةCAST([...], 'Map(key_type, value_type)').
الصيغة
MAP_FROM_ARRAYS
الوسيطات
keys—ArrayأوMapمن المفاتيح لإنشاء الـMapمنه.ArrayأوMapvalues—ArrayأوMapمن القيم لإنشاء الـMapمنه.ArrayأوMap
Map بمفاتيح وقيم مُنشأة من مصفوفة المفاتيح ومصفوفة/Map القيم. Map
أمثلة
الاستخدام الأساسي
Query
Response
Query
Response
mapKeys
أُضيفت في: v21.2.0 تعيد مفاتيح قيمة Map معيّنة. يمكن تحسين هذه الدالة عبر تمكين الإعدادoptimize_functions_to_subcolumns.
عند تمكين هذا الإعداد، لا تقرأ الدالة سوى العمود الفرعي keys بدلًا من قيمة Map بالكامل.
يُحوَّل الاستعلام SELECT mapKeys(m) FROM table إلى SELECT m.keys FROM table.
الصيغة
map— كائن الـ Map المراد استخراج المفاتيح منه.Map(K, V)
Array(T)
أمثلة
مثال على الاستخدام
Query
Response
mapPartialReverseSort
أُضيف في: v23.4.0 يرتّب عناصر map ترتيبًا تنازليًا، مع وسيطة limit إضافية تتيح الفرز الجزئي. إذا جرى تحديد الدالة func، فإن ترتيب الفرز يتحدد وفقًا لنتيجة الدالة func عند تطبيقها على مفاتيح map وقيمه. الصيغةfunc— اختياري. دالة لامبدا.Lambda functionlimit— تُرتَّب العناصر ضمن النطاق[1..limit].(U)Int*map— الخريطة المطلوب فرزها.Map(K, V)
Map(K, V)
أمثلة
مثال للاستخدام
Query
Response
mapPartialSort
قُدِّمت في: v23.4.0 ترتّب عناصرMap ترتيبًا تصاعديًا، مع وسيطة حدّ إضافية تتيح الفرز الجزئي.
إذا كانت الدالة func محددة، يُحدَّد ترتيب الفرز بناءً على ناتج الدالة func عند تطبيقها على مفاتيح Map وقيمها.
البنية
func— اختياري. دالة لامبدا.Lambda functionlimit— تُفرَز العناصر ضمن النطاق[1..limit].(U)Int*map— الخريطة المطلوب فرزها.Map(K, V)
Map(K, V)
أمثلة
مثال على الاستخدام
Query
Response
mapPopulateSeries
أُضيف في: v20.10.0 تملأ أزواج المفتاح-القيمة المفقودة في map ذات مفاتيح صحيحة. ولدعم توسيع المفاتيح إلى ما بعد أكبر قيمة، يمكن تحديد مفتاح أقصى. وبصورة أدق، تُرجع الدالة map تكون فيها المفاتيح سلسلة تمتد من أصغر مفتاح إلى أكبر مفتاح (أو الوسيطة max إذا جرى تحديدها) بخطوة مقدارها 1، مع القيم المقابلة. إذا لم تُحدَّد قيمة لمفتاح ما، تُستخدَم قيمة افتراضية له. في حال تكرار المفاتيح، لا تُربَط بالمفتاح إلا القيمة الأولى فقط (حسب ترتيب الظهور). الصيغةmap— Map بمفاتيح صحيحة.Map((U)Int*, V)keys— مصفوفة من المفاتيح.Array(T)values— مصفوفة من القيم.Array(T)max— اختياري. الحد الأقصى لقيمة المفتاح.Int8أوInt16أوInt32أوInt64أوInt128أوInt256
Map(K, V) أو Tuple(Array(UInt*), Array(Any))
أمثلة
باستخدام نوع Map
Query
Response
Query
Response
mapRemove
أُضيف في: v26.10.0 تزيل جميع العناصر التي يساوي مفتاحها المفتاحَ المحدد من الـ Map. وإذا تكرر المفتاح نفسه في عدة عناصر، فستُزال جميع العناصر المطابقة. تُعامَل قيم NULL في المقارنة كقيم عادية: فمفتاح الإزالة الذي قيمته NULL لا يطابق مفتاحًا قيمته ليست NULL، بينما تتطابق مكونات NULL في المفاتيح المركبة مع مكونات NULL الأخرى. وفي أنواع المفاتيح التي يجمعها نوع أعلى مشترك، تخضع مفاتيح NaN لدلالات البحث في الـ Map، ومن ثم فإن مفتاح الإزالة NaN يطابق مفتاح NaN في الـ Map. الصيغةmap— الـ Map المراد إزالة العناصر المطابقة منه.Map(K, V)key— المفتاح الذي تُزال العناصر المطابقة له. يجب أن يكون نوعه قابلاً للمقارنة مع نوع مفتاح الـ Map.Any
Map(K, V)
أمثلة
مثال على الاستخدام
Query
Response
mapReverseSort
أُضيفت في: v23.4.0 ترتّب عناصرmap ترتيبًا تنازليًا.
إذا جرى تحديد الدالة func، فيُحدَّد ترتيب الفرز وفقًا لنتيجة تطبيق الدالة func على مفاتيح map وقيمها.
البنية
func— اختياري. دالة لامبدا.Lambda functionmap— قيمةMapالمطلوب فرزها.Map(K, V)
Map مفروزة بترتيب تنازلي. Map(K, V)
أمثلة
مثال على الاستخدام
Query
Response
mapSort
أُضيف في: v23.4.0 يرتّب عناصر الـ Map بترتيب تصاعدي. إذا جرى تحديد الدالة func، فيتحدد ترتيب الفرز وفقًا لنتيجة الدالة func المطبَّقة على مفاتيح الـ Map وقيمه. البنيةfunc— اختياري. دالة لامبدا.دالة لامبداmap— قيمة Map المراد فرزها.Map(K, V)
Map(K, V)
أمثلة
مثال على الاستخدام
Query
Response
mapSubtract
أُضيف في: v20.7.0 اجمع كل المفاتيح واطرح القيم المقابلة. الصيغةarg1[, arg2, ...]— خرائط أو قيم من نوع Tuple مكوّنة من مصفوفتين، حيث تمثل عناصر المصفوفة الأولى المفاتيح، بينما تحتوي المصفوفة الثانية على القيم المقابلة لكل مفتاح.Map(K, V)أوTuple(Array(T), Array(T))
Map(K, V) أو Tuple(Array(T), Array(T))
أمثلة
مع نوع Map
Query
Response
Query
Response
mapUpdate
أُضيفت في: v22.3.0 بالنسبة إلى قيمتَي Map، تُرجِع الدالة قيمة Map الأولى بعد تحديث قيمها بقيم المفاتيح المناظرة في قيمة Map الثانية. الصيغةmap1 بعد تحديث قيمه بالقيم المرتبطة بالمفاتيح المناظرة في map2. Map(K, V)
أمثلة
الاستخدام الأساسي
Query
Response
mapValues
قُدِّمت في: v21.2.0 تعيد هذه الدالة قيم Map معيّن. يمكن تحسين هذه الدالة عبر تفعيل الإعدادoptimize_functions_to_subcolumns.
عند تفعيل هذا الإعداد، لا تقرأ الدالة سوى العمود الفرعي values بدلًا من قراءة الـ Map بالكامل.
يُحوَّل الاستعلام SELECT mapValues(m) FROM table إلى SELECT m.values FROM table.
بناء الجملة
map— كائن Map لاستخراج القيم منه.Map(K, V)
Array(T)
أمثلة
مثال على الاستخدام
Query
Response