الدالتان MEDIAN() وPERCENTILE()
- في وضع Live، تستخدم الدالتان MEDIAN() وPERCENTILE() (اعتبارًا من إصدار connector v0.1.3) الدالة quantile()() في ClickHouse، مما يسرّع عملية الحساب بشكل كبير، لكنه يعتمد على sampling. إذا كنت تريد الحصول على نتائج دقيقة، فاستخدم الدالتين
MEDIAN_EXACT()وPERCENTILE_EXACT()(استنادًا إلى quantileExact()()). - في وضع Extract، لا يمكنك استخدام MEDIAN_EXACT() وPERCENTILE_EXACT() لأن MEDIAN() وPERCENTILE() تكونان دائمًا دقيقتين (ولكنهما بطيئتان).
دوال إضافية للحقول المحسوبة في وضع Live
يضم ClickHouse عددًا هائلًا من الدوال التي يمكن استخدامها في تحليل البيانات — أكثر بكثير مما يدعمه Tableau. ولراحة المستخدمين، أضفنا دوال جديدة يمكن استخدامها في وضع Live عند إنشاء الحقول المحسوبة. وللأسف، لا يمكن إضافة أوصاف لهذه الدوال داخل واجهة Tableau، لذا سنورد وصفًا لها هنا مباشرةً.
-Ifمُركِّب التجميع (أُضيف في v0.2.3) - يتيح استخدام مرشحات على مستوى الصف مباشرةً ضمن عملية التجميع. تمت إضافة الدوالSUM_IF(), AVG_IF(), COUNT_IF(), MIN_IF() & MAX_IF().BAR([my_int], [min_val_int], [max_val_int], [bar_string_length_int])(أُضيف في v0.2.1) — انسَ المخططات الشريطية المملة! استخدم الدالةBAR()بدلًا منها (وهي المكافئ لـbar()في ClickHouse). على سبيل المثال، يُرجع هذا الحقل المحسوب أشرطة بيانية جميلة بصيغة String:BAR([my_int], [min_val_int], [max_val_int], [bar_string_length_int]) + " " + FORMAT_READABLE_QUANTITY([my_int])== BAR() == ██████████████████▊ 327.06 million █████ 88.02 million ███████████████ 259.37 millionCOUNTD_UNIQ([my_field])(أُضيف في v0.2.0) — يحسب العدد التقريبي للقيم المختلفة في الوسيطة. وهو مكافئ لـ uniq(). وهو أسرع بكثير منCOUNTD().DATE_BIN('day', 10, [my_datetime_or_date])(أُضيف في v0.2.1) — يقابلtoStartOfInterval()في ClickHouse. يُنزِّل قيمة من النوع Date أو Date & Time إلى الفاصل الزمني المحدد، على سبيل المثال:== my_datetime_or_date == | == DATE_BIN('day', 10, [my_datetime_or_date]) == 28.07.2004 06:54:50 | 21.07.2004 00:00:00 17.07.2004 14:01:56 | 11.07.2004 00:00:00 14.07.2004 07:43:00 | 11.07.2004 00:00:00FORMAT_READABLE_QUANTITY([my_integer])(أضيف في v0.2.1) — يعيد عددًا مقربًا مع لاحقة (ألف، مليون، مليار، إلخ) كسلسلة نصية. وهو مفيد لتسهيل قراءة الأعداد الكبيرة. وهو المكافئ لـformatReadableQuantity().FORMAT_READABLE_TIMEDELTA([my_integer_timedelta_sec], [optional_max_unit])(أضيف في v0.2.1) — يقبل فارقًا زمنيًا بالثواني. ويعيد فارقًا زمنيًا بصيغة (سنة، شهر، يوم، ساعة، دقيقة، ثانية) كسلسلة نصية. وتمثلoptional_max_unitأكبر وحدة يمكن عرضها. القيم المقبولة:seconds،minutes،hours،days،months،years. وهو المكافئ لـformatReadableTimeDelta().GET_SETTING([my_setting_name])(أضيف في v0.2.1) — يعيد القيمة الحالية لإعداد مخصص. وهو المكافئ لـgetSetting().HEX([my_string])(أضيف في v0.2.1) — يعيد سلسلة نصية تحتوي على التمثيل الست عشري للوسيطة. وهو المكافئ لـhex().KURTOSIS([my_number])— يحسب التفرطح العيني لتسلسل. وهو المكافئ لـkurtSamp().KURTOSISP([my_number])— يحسب التفرطح لتسلسل. وهو المكافئ لـkurtPop().MEDIAN_EXACT([my_number])(أضيف في v0.1.3) — يحسب الوسيط بدقة لتسلسل بيانات رقمية. وهو المكافئ لـquantileExact(0.5)(...).MOD([my_number_1], [my_number_2])— يحسب الباقي بعد القسمة. إذا كانت الوسيطات أعدادًا ذات فاصلة عائمة، فستُحوَّل مسبقًا إلى أعداد صحيحة بإسقاط الجزء العشري. وهو المكافئ لـmodulo().PERCENTILE_EXACT([my_number], [level_float])(أضيف في v0.1.3) — يحسب المئين بدقة لتسلسل بيانات رقمية. النطاق الموصى به للمستوى هو [0.01, 0.99]. وهو المكافئ لـquantileExact()().PROPER([my_string])(أُضيف في v0.2.5) - يحوّل سلسلة نصية بحيث يصبح الحرف الأول من كل كلمة كبيرًا، وتصبح الأحرف المتبقية صغيرة. كما تُعدّ المسافات والمحارف غير الأبجدية الرقمية، مثل علامات الترقيم، فواصل أيضًا. على سبيل المثال:PROPER("PRODUCT name") => "Product Name"PROPER("darcy-mae") => "Darcy-Mae"RAND()(أُضيفت في v0.2.1) — تُرجع عددًا صحيحًا (UInt32)، على سبيل المثال3446222955. وهي مكافئة لـrand().RANDOM()(أُضيفت في v0.2.1) — دالةRANDOM()غير رسمية في Tableau، وتُرجع عددًا بفاصلة عائمة بين 0 و1.RAND_CONSTANT([optional_field])(أُضيفت في v0.2.1) — تُنتج عمودًا ثابتًا بقيمة عشوائية. تشبه{RAND()}Fixed LOD، لكنها أسرع. وهي مكافئة لـrandConstant().REAL([my_number])— تُحوّل الحقل إلى عدد بفاصلة عائمة (Float64). التفاصيلهنا.SHA256([my_string])(أُضيفت في v0.2.1) — تحسب تجزئة SHA-256 من سلسلة نصية وتُرجع مجموعة البايتات الناتجة كسلسلة نصية (FixedString). ومن الملائم استخدامها مع الدالةHEX()، على سبيل المثالHEX(SHA256([my_string])). وهي مكافئة لـSHA256().SKEWNESS([my_number])— تحسب الالتواء العيني لتسلسل من القيم. وهي مكافئة لـskewSamp().SKEWNESSP([my_number])— تحسب الالتواء لتسلسل من القيم. وهي مكافئة لـskewPop().TO_TYPE_NAME([field])(أُضيفت في v0.2.1) — تُرجع سلسلة نصية تحتوي على اسم نوع ClickHouse للوسيطة المُمرَّرة. وهي مكافئة لـtoTypeName().TRUNC([my_float])— هي نفسها الدالةFLOOR([my_float]). وهي مكافئة لـtrunc().UNHEX([my_string])(أُضيفت في v0.2.1) — تُنفّذ العملية العكسية لـHEX(). وهي مكافئة لـunhex().