پرش به مطلب اصلی

طراحی کوئری

هدف​

ساختن یک کوئری بدون نوشتن JSON: انتخاب جدول، پیوند زدن جدول‌های مرتبط با آن، انتخاب ستون‌هایی که برمی‌گرداند، محدود کردنش با شرط‌ها، و — وقتی پاسخ یک عدد است نه یک فهرست — گروه‌بندی و سنجش آن.

کجاست​

راهکارتان را باز کنید، کوئری‌های ذخیره‌شده را انتخاب کنید، سپس جدید — یا یک کوئری را انتخاب و ویرایش کنید. طراح تمام صفحه را می‌گیرد و از کنار باز نمی‌شود، چون یک کوئری ساختار خودش را دارد: جدول‌هایی پیوندخورده به جدول‌های دیگر، یک درخت شرط، فهرست مرتبی از ستون‌ها، و سنجه‌ها. در یک پنل باریک، یک شرط ساده در چهار سطر می‌شکند و دیگر شبیه یک شرط به نظر نمی‌رسد.

برای بازگشت به فهرست بستن را انتخاب کنید. تا ذخیره را نزنید چیزی ذخیره نمی‌شود.

سه سربرگ​

این‌ها سه نما از یک کوئری‌اند، نه سه ویرایشگر. هرچه در یکی تغییر دهید، بقیه نشان می‌دهند — پس هرگز نمی‌توانند با هم اختلاف داشته باشند.

سربرگبرای چیست
سادهکوئری روزمره: یک جدول، ستون‌هایش، یک فیلتر، یک مرتب‌سازی، یک سقف سطر.
پیشرفتههمهٔ این‌ها، به‌علاوهٔ جدول‌های مرتبط، گروه‌بندی با سنجه‌ها، و گزینه‌ها.
JSONخودِ سند، برای هر چیزی که فرم آن را نمی‌کشد.
نتایجآنچه کوئری برمی‌گرداند، به‌شکل جدول. این یکی نمای پاسخ است، نه نمای کوئری.

کوئری‌ای که پیش‌تر از جدول‌های مرتبط، گروه‌بندی یا گزینه‌ها استفاده کرده باشد روی پیشرفته باز می‌شود، تا چیزی از آن پنهان نماند. اگر چنین کوئری‌ای را به ساده ببرید، فرم می‌گوید چه چیزی را نشان نمی‌دهد — و دست‌نخورده نگهش می‌دارد.

گام‌ها​

۱. جدول را انتخاب کنید​

دکمهٔ جدول را بزنید و جستجو کنید. باقی کوئری از همین جدول و جدول‌های پیوندخورده به آن ساخته می‌شود.

تغییر جدول باقی را پاک می‌کند، و این عمدی است: ستون‌ها، شرط‌ها و سنجه‌ها همگی فیلدهای جدول قبلی را نام می‌برند، و نگه‌داشتنشان کوئری‌ای می‌سازد که ذخیره می‌شود و بعد از اجرا سر باز می‌زند و فیلدی را نام می‌برد که به‌روشنی روی صفحه می‌بینید.

۲. جدول‌های مرتبط را بیفزایید (پیشرفته)​

افزودن جدول مرتبط را بزنید. فهرست از روابطی که محیط شما همین حالا دارد ساخته می‌شود، پس هرگز نام فیلدی را تایپ نمی‌کنید. اگر هنوز چیزی به جدول شما مرتبط نباشد، فهرست باز می‌شود و همین را می‌گوید — جدول مرتبط از یک ستون جستجو می‌آید، پس روی یکی از دو جدول یکی بسازید تا اینجا دیده شود:

  • یک رکورد مرتبط — دنبال کردن یک جستجو، مثل حسابِ یک معامله. این پیوند معمول و امن است.
  • چند رکورد مرتبط — ممکن است سطرها تکرار شوند — جهت مخالف، مثل معامله‌های یک حساب. این سطر والد را به ازای هر فرزند یک بار برمی‌گرداند، و همین است که بی‌صدا جمع‌ها را دوبرابر می‌کند. وقتی واقعاً منظورتان همین است از آن استفاده کنید، و بخش عددهایی که خیلی بزرگ به نظر می‌رسند را ببینید.

هر جدول پیوندخورده اینها را دارد:

  • یک نام (نام مستعارش). ستون‌هایش در سراسر کوئری alias.column نامیده می‌شوند. می‌توانید تغییرش دهید؛ اگر چیزی هنوز نام قبلی را ببرد، طراح هشدار می‌دهد.
  • نوع پیوند — نگه‌داشتن سطرهای بدون تطابق (پیش‌فرض) یا فقط سطرهای دارای تطابق. پیش‌فرض گزینهٔ امن است: با فقط سطرهای دارای تطابق، معامله‌ای که حساب ندارد به‌کلی از نتایج ناپدید می‌شود و هیچ چیز روی صفحه این ناپدید شدن را به پیوند ربط نمی‌دهد.
  • شرط‌های خودش، که با فلش ابتدای سطر باز می‌شوند. این‌ها جدول مرتبط را درون خودِ پیوند محدود می‌کنند، پس اگر پیوند طوری تنظیم شده که سطرهای بدون تطابق را نگه دارد، همچنان نگه داشته می‌شوند. گذاشتن همان شرط در فیلتر اصلی، آن سطرها را دور می‌ریزد.

یک کوئری می‌تواند تا هشت جدول را پیوند بزند، تا سه سطح تودرتو.

۳. ستون‌ها را انتخاب کنید​

پنل سمت راست هر ستونی را که کوئری می‌تواند نام ببرد فهرست می‌کند — ستون‌های خود جدول و هر جدول پیوندخورده — دسته‌بندی‌شده بر پایهٔ جدول و فیلترشده همان‌طور که تایپ می‌کنید. یکی را تیک بزنید تا در پنل دیگر ظاهر شود؛ آنجا همان چیزی است که کوئری به ترتیب برمی‌گرداند. × یکی را حذف می‌کند.

ترتیب مهم است — همان ترتیبی است که ستون‌ها برمی‌گردند و یک گزارش آن‌ها را چاپ می‌کند. برای جابه‌جایی، سطر را از دستگیره‌اش بکشید؛ همان حرکتی که برای مقادیر یک مجموعه‌گزینه یا ناوبری یک اپ به کار می‌رود. بدون ماوس: روی دستگیره تمرکز کنید، با Space سطر را بردارید، با کلیدهای جهت‌دار جابه‌جا کنید و با Space رهایش کنید.

پنل انتخاب‌شده‌ها را خالی بگذارید تا ستون‌های خود جدول برگردند.

لازم نیست بدانید یک ستون به کدام جدول تعلق دارد. «حساب · صنعت» را تیک بزنید و کوئری خودش آن را زیر پیوندِ حساب می‌نویسد.

۴. محدودش کنید​

بخش فیلتر همان سازندهٔ شرط «و/یا» است که در جستجوی پیشرفته یا فیلتر یک نما می‌بینید، و حالا هر ستونی را که در کوئری هست پیشنهاد می‌دهد — ستون‌های جدول‌های پیوندخورده و نه فقط جدول خودتان.

هر شرط یک سطر است: فیلد، عملگر، مقدار، و یک × برای حذف.

یکی از چند مقدار را با هم می‌گیرد. روی ستون گزینه‌ای فهرستی جستجوپذیر باز می‌کند که تیک می‌زنید؛ روی ستون متنی یا عددی مقداری تایپ می‌کنید و Enter می‌زنید تا افزوده شود، و هر مقدار به برچسبی قابل حذف تبدیل می‌شود. این یک شرط با چند مقدار است، نه چند شرط که خودتان باید با «یا» به هم ببندید.

حداقل و حداکثر از این رو هستند که نوشتن «حداقل ۵» به شکل «بزرگ‌تر از ۴» فقط روی عددهای صحیح درست است، و روی عدد اعشاری یا تاریخ بی‌سروصدا اشتباه است.

۵. گروه‌بندی و سنجش (پیشرفته)​

وقتی پاسخ یک عدد است نه یک فهرست، بازگرداندن گروه‌ها به‌جای رکوردها را تیک بزنید — همان چیزی که نمودار و کاشی شاخص از آن ترسیم می‌شوند.

  • سنجه‌ها — چه چیزی محاسبه شود. شمارش به فیلد نیاز ندارد (رکوردها را می‌شمارد) اما می‌پذیرد (آن‌گاه سطرهایی را می‌شمارد که آن فیلد در آن‌ها مقدار دارد). جمع و میانگین فقط ستون‌های عددی را پیشنهاد می‌دهند. هر سنجه یک نام کوتاه دارد؛ نتیجه با همان نام برمی‌گردد و نمودار به همان متصل می‌شود.
  • گروه‌بندی بر اساس — تا دو کلید. برای یک جمع کل روی تمام جدول خالی بگذارید. ستون تاریخ یک دوره هم پیشنهاد می‌دهد — روزانه، هفتگی، ماهانه، فصلی یا سالانه.
  • شرط روی سنجه‌ها — پایین‌تر.

۶. شرط روی سنجه‌ها (پیشرفته)​

این همان پرسشی است که فیلتر نمی‌تواند بپرسد.

فیلتر تعیین می‌کند کدام رکوردها وارد یک گروه شوند. شرط روی سنجه تعیین می‌کند کدام گروه‌ها بیرون بیایند. «مشتریانی که بیش از ده بار سفارش داده‌اند» اصلاً به شکل فیلتر نوشتنی نیست، چون هیچ سفارشی نمی‌داند مشتری‌اش چند سفارش داده است.

پس: بر اساس مشتری گروه‌بندی کنید، شمارش را با نام orders بسنجید، و شرطی بیفزایید — orders حداقل ۱۰.

شرط‌ها فقط می‌توانند سنجه‌هایی را نام ببرند که همین کوئری محاسبه می‌کند. اگر خواستید اینجا یک ستون ساده را مقایسه کنید، جایش فیلتر است.

۷. مرتب‌سازی و سقف​

بر اساس هر ستونی که کوئری برمی‌گرداند مرتب کنید. کوئری گروه‌بندی‌شده ستونی برای مرتب‌سازی ندارد — سطرهایش گروه‌اند — پس کلیدهای گروه‌بندی و نام سنجه‌ها را پیشنهاد می‌دهد، که تنها نام‌هایی هستند که دارد.

حداکثر تعداد سطرها یا گروه‌ها را محدود می‌کند. مرتب‌سازی نزولی بر اساس یک سنجه و سقف پنج، همان کوئری «پنج مشتری برتر» است.

۸. گزینه‌ها (پیشرفته)​

  • حذف سطرهای تکراری — فقط وقتی معنا دارد که پیوندی با چند رکورد به ازای هر سطر داشته باشید. جمع را اصلاح نمی‌کند: کوئری گروه‌بندی‌شده همچنان سطرهای تکراری را می‌شمارد، چون حذف سطر تکراری و شمردن دو پرسش متفاوت‌اند.
  • گنجاندن متن ستون‌های جستجو — به‌صورت پیش‌فرض روشن است، چون ستونی از شناسهٔ رکوردها نمای هیچ چیز نیست. برای خروجی مبتنی بر شناسه خاموشش کنید.
  • منطقهٔ زمانی — برای دوره‌های تاریخی. بدون آن محاسبه بر پایهٔ UTC انجام می‌شود، پس رکوردی که ساعت نه شب ثبت شده به روز بعد می‌افتد و نمودار روزانه هر روز به اندازهٔ مویی اشتباه است، طوری که هیچ‌کس متوجه نمی‌شود.

۹. ذخیره، سپس پیش‌نمایش​

ذخیره کوئری را از سه راه بررسی می‌کند: اینکه سندی درست‌ساخت است، اینکه کوئری معتبری است، و اینکه واقعاً اینجا اجرا می‌شود — هر فیلد، پیوند، گروه‌بندی و سنجه در برابر جدول‌های واقعی محیط شما.

پیش‌نمایش کوئری را اجرا می‌کند و سربرگ نتایج را باز می‌کند؛ آنجا نتیجه به‌شکل جدول دیده می‌شود: به ازای هر ستونی که کوئری برمی‌گرداند یک ستون، با نام نمایشی‌اش و به همان ترتیبی که چیده‌اید. ستون‌های جستجو نام رکورد را نشان می‌دهند، نه شناسه‌ای که پشتش ذخیره شده است.

  • کوئری رکوردی صفحه‌بندی می‌شود، هر بار ۲۵ سطر، با صفحه‌شمار زیر جدول و تعداد کل بالای آن. کوئری گروه‌بندی‌شده صفحه‌بندی نمی‌شود — هر گروهی را که بیابد برمی‌گرداند — پس جدولش تمام پاسخ است.
  • کوئری را همان‌گونه که ذخیره شده و با مجوزهای خودتان اجرا می‌کند. اول ذخیره کنید: ویرایش‌های ذخیره‌نشده در آن نیستند، و سربرگ همین را بالای جدول می‌گوید. کوئری‌ای که هرگز ذخیره نشده چیزی برای اجرا ندارد و تا یک‌بار ذخیره‌اش نکنید پیش‌نمایش در دسترس نیست.

سربرگ JSON​

طراح تقریباً تمام زبان کوئری را می‌کشد، و سربرگ JSON باقی آن است — صفحه‌بندی، و هر چیزی که یک کوئری دست‌نویس یا تولیدشده به کار می‌برد و فرم کنترلی برایش ندارد. این همان شمای parsware-query@1 است، و همان سندی که به دستیار هوشمند می‌دهید تا برایتان کوئری بنویسد.

هرچه فرم نکشد دقیقاً همان‌طور که هست نگه داشته می‌شود در حالی که باقی را ویرایش می‌کنید. طراحی که بی‌صدا بخشی از کوئری شما را دور بیندازد، بدترین راه ممکن برای فهمیدن وجود آن بخش است.

عددهایی که خیلی بزرگ به نظر می‌رسند​

پیوندی در جهت «چند رکورد مرتبط» سطر والد را به ازای هر تطابق تکرار می‌کند، و جمع‌ها تکرارها را می‌شمارند: حسابی با پنج معامله، پنج بار شمرده می‌شود.

دنبال کردن یک جستجو — جهت معمول — چنین کاری نمی‌کند. اگر جمعی متورم به نظر می‌رسد، ببینید آیا پیوندی می‌گوید «چند رکورد مرتبط»، و یا به‌جایش جدول فرزند را بسنجید یا پرسش را وارونه بپرسید.

عیب‌یابی​

  • «این JSON معتبر نیست، پس طراح نمی‌تواند آن را نشان دهد.» — در سربرگ JSON ویرگول یا کروشه‌ای جا افتاده. همان‌جا درستش کنید؛ فرم نمی‌تواند سندی را نشان دهد که نمی‌خواندش، و نشان دادن یک فرم خالی به‌محض لمس اولین کنترل، نوشتهٔ شما را بازنویسی می‌کرد.
  • «این‌ها در کوئری نام برده شده‌اند اما دیگر در آن وجود ندارند.» — جدول مرتبطی را حذف یا نامش را عوض کرده‌اید و چیزی هنوز آن را نام می‌برد. آن‌ها را حذف کنید یا جدول را با همان نام برگردانید.
  • «فیلد ناشناخته …» هنگام ذخیره — فیلد به جدولی پیوندخورده تعلق دارد و به نام پیوند در ابتدای خود نیاز دارد، یا پیوند حذف شده است.
  • شرط روی سنجه رد می‌شود — چیزی را نام می‌برد که از سنجه‌های این کوئری نیست. نامش را هماهنگ کنید، یا اگر دربارهٔ یک ستون است شرط را به فیلتر ببرید.
  • افزودن جدول مرتبط چیزی برای انتخاب نشان نمی‌دهد — هنوز چیزی به این جدول مرتبط نیست، و فهرست همین را هنگام باز شدن می‌گوید. جدول مرتبط از یک ستون جستجو می‌آید: به ایجاد رابطه میان موجودیت‌ها نگاه کنید.
  • «ارتباط‌های این محیط بارگذاری نشد» — طراح نتوانست ارتباط‌های محیط را بخواند، پس پیوندی برای پیشنهاد ندارد. ایراد از کوئری شما نیست؛ طراح را ببندید و دوباره باز کنید.

سناریوهای مرتبط​