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

الوصف

يمكن تطبيق المُعدِّل Map على الدالة min لحساب الحد الأدنى للقيمة في Map لكل مفتاح، باستخدام دالة المُعدِّل التجميعي minMap.

مثال على الاستخدام

في هذا المثال، سنُنشئ جدولًا يخزّن رموز الحالة وعدد مرات ظهورها عبر فترات زمنية مختلفة، بحيث يحتوي كل صف على Map يربط رموز الحالة بعدد مرات ظهورها المقابل. سنستخدم minMap للعثور على الحد الأدنى لعدد مرات الظهور لكل رمز حالة ضمن كل فترة زمنية.
Query
CREATE TABLE metrics(
    date Date,
    timeslot DateTime,
    status Map(String, UInt64)
) ENGINE = MergeTree
ORDER BY ();

INSERT INTO metrics VALUES
    ('2000-01-01', '2000-01-01 00:00:00', (['a', 'b', 'c'], [15, 25, 35])),
    ('2000-01-01', '2000-01-01 00:00:00', (['c', 'd', 'e'], [45, 55, 65])),
    ('2000-01-01', '2000-01-01 00:01:00', (['d', 'e', 'f'], [75, 85, 95])),
    ('2000-01-01', '2000-01-01 00:01:00', (['f', 'g', 'g'], [105, 115, 125]));

SELECT
    timeslot,
    minMap(status),
FROM metrics
GROUP BY timeslot;
ستجد الدالة minMap أقل عدد لكل رمز حالة ضمن كل فترة زمنية. على سبيل المثال:
  • في الفترة الزمنية ‘2000-01-01 00:00:00’:
    • الحالة ‘a’: 15
    • الحالة ‘b’: 25
    • الحالة ‘c’: min(35, 45) = 35
    • الحالة ‘d’: 55
    • الحالة ‘e’: 65
  • في الفترة الزمنية ‘2000-01-01 00:01:00’:
    • الحالة ‘d’: 75
    • الحالة ‘e’: 85
    • الحالة ‘f’: min(95, 105) = 95
    • الحالة ‘g’: min(115, 125) = 115
Response
   ┌────────────timeslot─┬─minMap(status)───────────────────────┐
1. │ 2000-01-01 00:01:00 │ {'d':75,'e':85,'f':95,'g':115}       │
2. │ 2000-01-01 00:00:00 │ {'a':15,'b':25,'c':35,'d':55,'e':65} │
   └─────────────────────┴──────────────────────────────────────┘

راجع أيضًا

آخر تعديل في ٢٥ يونيو ٢٠٢٦