ClickHouse/docs/fa/sql-reference/functions/index.md

75 lines
7.2 KiB
Markdown
Raw Normal View History

2020-04-04 09:15:31 +00:00
---
machine_translated: true
machine_translated_rev: d734a8e46ddd7465886ba4133bff743c55190626
toc_folder_title: Functions
toc_priority: 32
toc_title: "\u0645\u0639\u0631\u0641\u06CC \u0634\u0631\u06A9\u062A"
---
# توابع {#functions}
حداقل\* دو نوع از توابع وجود دارد - توابع به طور منظم (فقط به نام “functions”) and aggregate functions. These are completely different concepts. Regular functions work as if they are applied to each row separately (for each row, the result of the function doesnt depend on the other rows). Aggregate functions accumulate a set of values from various rows (i.e. they depend on the entire set of rows).
2020-04-04 09:15:31 +00:00
در این بخش ما در مورد توابع به طور منظم. برای توابع کل, بخش را ببینید “Aggregate functions”.
\* - یک نوع سوم از تابع که وجود دارد arrayJoin توابع جدول همچنین می توانید به طور جداگانه ذکر شود.\*
## تایپ قوی {#strong-typing}
در مقابل به گذاشتن استاندارد, خانه رعیتی است تایپ قوی. به عبارت دیگر تبدیل ضمنی بین انواع را ندارد. هر تابع برای یک مجموعه خاص از انواع کار می کند. این به این معنی است که گاهی اوقات شما نیاز به استفاده از توابع تبدیل نوع.
## رفع ضعف مشترک {#common-subexpression-elimination}
همه عبارات در پرس و جو که همان اعضای هیات (همان رکورد و یا همان نتیجه تجزیه نحوی) در نظر گرفته به ارزش یکسان. چنین عبارات یک بار تایید و اجرا می شوند. زیرمجموعه های یکسان نیز این راه را حذف می کنند.
## انواع نتایج {#types-of-results}
همه توابع بازگشت بازگشت بازگشت تنها به عنوان نتیجه (چند ارزش نیست, و نه صفر ارزش). نوع نتیجه است که معمولا تنها با انواع استدلال تعریف, نه با ارزش. استثنا هستند tupleelement function (a.n اپراتور) و tofixedstring تابع.
## ثابتها {#constants}
برای سادگی, توابع خاص تنها می تواند با ثابت برای برخی از استدلال کار. مثلا, استدلال درست از اپراتور مانند باید ثابت باشد.
تقریبا تمام توابع بازگشت ثابت برای استدلال ثابت. استثنا توابع است که تولید اعداد تصادفی است.
این now تابع مقادیر مختلف برای نمایش داده شد که در زمان های مختلف اجرا شد را برمی گرداند, اما نتیجه در نظر گرفته ثابت, از ثبات در یک پرس و جو تنها مهم است.
یک عبارت ثابت نیز ثابت در نظر گرفته (مثلا, نیمه راست اپراتور مانند را می توان از ثابت های متعدد ساخته).
توابع را می توان به روش های مختلف برای استدلال ثابت و غیر ثابت اجرا (کد های مختلف اجرا شده است). اما نتایج برای یک ثابت و برای یک ستون واقعی حاوی تنها همان مقدار باید با یکدیگر مطابقت.
## پردازش پوچ {#null-processing}
توابع رفتارهای زیر را دارند:
- اگر حداقل یکی از استدلال از تابع است `NULL` نتیجه عملکرد نیز است `NULL`.
- رفتار ویژه ای است که به صورت جداگانه در شرح هر تابع مشخص. در کد منبع کلیک این توابع `UseDefaultImplementationForNulls=false`.
## پایداری {#constancy}
Functions cant change the values of their arguments any changes are returned as the result. Thus, the result of calculating separate functions does not depend on the order in which the functions are written in the query.
2020-04-04 09:15:31 +00:00
## خطا {#error-handling}
برخی از توابع ممکن است یک استثنا پرتاب اگر داده نامعتبر است. در این مورد پرس و جو لغو شده است و یک متن خطا به مشتری بازگردانده می شود. برای پردازش توزیع, هنگامی که یک استثنا در یکی از سرورهای رخ می دهد, سرور های دیگر نیز تلاش برای لغو پرس و جو.
## ارزیابی عبارات استدلال {#evaluation-of-argument-expressions}
تقریبا در تمام زبان های برنامه نویسی, یکی از استدلال ممکن است برای اپراتورهای خاص ارزیابی نمی شود. این است که معمولا اپراتورها `&&`, `||` و `?:`.
اما در فاحشه خانه, استدلال از توابع (اپراتورهای) همیشه مورد بررسی قرار. دلیل این است که کل بخش هایی از ستون ها در یک بار مورد بررسی قرار, به جای محاسبه هر سطر به طور جداگانه.
## انجام توابع برای پردازش پرس و جو توزیع شده {#performing-functions-for-distributed-query-processing}
برای پردازش پرس و جو توزیع, به عنوان بسیاری از مراحل پردازش پرس و جو که ممکن است بر روی سرور از راه دور انجام, و بقیه مراحل (ادغام نتایج متوسط و همه چیز که) بر روی سرور درخواست انجام.
این به این معنی است که توابع را می توان بر روی سرور های مختلف انجام می شود.
برای مثال در پرس و جو `SELECT f(sum(g(x))) FROM distributed_table GROUP BY h(y),`
- اگر یک `distributed_table` دارای حداقل دو خرده ریز, توابع g و h بر روی سرورهای راه دور و عملکرد انجام می شود f بر روی سرور درخواست کننده انجام می شود.
- اگر یک `distributed_table` تنها یک سفال, تمام f, g و h توابع بر روی سرور این سفال انجام.
نتیجه یک تابع معمولا بستگی ندارد که سرور انجام شده است. اما گاهی اوقات این مهم است.
مثلا, توابع است که با لغت نامه کار استفاده از فرهنگ لغت که بر روی سرور وجود دارد که در حال اجرا هستند در.
مثال دیگر این است که `hostName` تابع, که نام سرور را بر می گرداند در حال اجرا است به منظور ایجاد `GROUP BY` توسط سرور در یک `SELECT` پرس و جو.
اگر یک تابع در یک پرس و جو بر روی سرور درخواست انجام, اما شما نیاز به انجام این کار بر روی سرور از راه دور, شما می توانید در یک بسته بندی any تابع جمع و یا اضافه کردن به یک کلید در `GROUP BY`.
[مقاله اصلی](https://clickhouse.tech/docs/en/query_language/functions/) <!--hide-->