Metabase

هفتهٔ سال

هفته‌های سال از ۱ تا ۵۲، ۵۳ یا ۵۴ شماره‌گذاری می‌شوند (بسته به این‌که هفتهٔ اول سال چگونه تعریف شود). متابیس چند الگوریتم مختلف برای تعیین هفتهٔ اول سال پشتیبانی می‌کند.

در Query builder می‌توانید خلاصه‌سازی‌ها را بر اساس «هفتهٔ سال» گروه‌بندی کنید، یا با استفاده از یک عبارت سفارشی، شمارهٔ هفتهٔ سال را از یک ستون تاریخ استخراج کنید.

گروه‌بندی بر اساس Week of year برای مقایسه‌های دوره‌به‌دوره بسیار مفید است؛ مثلاً وقتی می‌خواهید Metric هفتهٔ اول امسال را با هفتهٔ اول سال گذشته مقایسه کنید.

خلاصه‌سازی بر اساس Week of year در Query builder

می‌توانید در Query builder یک Metric را بر اساس Week of year گروه‌بندی کنید:

  1. در بخش Summarize روی Pick a column to group by کلیک کنید و یک ستون تاریخ انتخاب کنید.
  2. روی Dropdown مربوط به Granularity تاریخ (مثلاً "by month") که سمت راست نام فیلد است کلیک کنید.
  3. در پنجرهٔ بازشوندهٔ Granularity روی More... کلیک کنید تا گزینه‌های بیشتر را ببینید و گزینهٔ Week of year را انتخاب کنید.

نتیجه بر اساس شمارهٔ هفته خلاصه‌سازی خواهد شد (برخلاف گزینهٔ "by week" که بر اساس تاریخ‌های هفته گروه‌بندی می‌کند):

Summarize by week of year

متابیس چگونه هفته‌های سال را شماره‌گذاری می‌کند؟

به‌صورت پیش‌فرض، وقتی در Query builder بر اساس Week of year گروه‌بندی می‌کنید، متابیس اولین یکشنبهٔ سال را پیدا می‌کند و آن را «هفتهٔ ۱» می‌نامد. هر روزی قبل از اولین یکشنبه، به‌عنوان بخشی از آخرین هفتهٔ سال قبل (هفتهٔ ۵۲ یا ۵۳) در نظر گرفته می‌شود.

استفاده از تعریف دیگر برای هفتهٔ اول سال

حتی اگر در تنظیمات بومی‌سازی (Localization) اولین روز هفته را چیز دیگری تنظیم کرده باشید، گروه‌بندی پیش‌فرض Week of year در Query builder همیشه یکشنبه را به‌عنوان شروع هفته در نظر می‌گیرد.

برای این‌که از تنظیمات Localization خودتان استفاده کنید، می‌توانید در یک عبارت سفارشی از تابع week با Mode برابر "Instance" استفاده کنید، مانند: ‎week([Created At], "Instance")‎ (توضیحات بیشتر در ادامه).

عبارت سفارشی week سه الگوریتم جایگزین برای محاسبهٔ هفتهٔ اول سال ارائه می‌کند. برای استفاده از یکی از این الگوریتم‌ها در Summarize، می‌توانید یک ستون سفارشی بسازید که با استفاده از عبارت week، شمارهٔ هفته را از ستون تاریخ استخراج کند و سپس بر اساس همان ستون سفارشی گروه‌بندی انجام دهید.

عبارت سفارشی week

عبارت week شمارهٔ هفتهٔ سال را به‌صورت عدد صحیح برمی‌گرداند.

Syntax:

week(column, mode)

Examples:

week([Created At])
week([Created At], "US")
week([Created At], "Instance")

که در آن:

  • column نام ستون تاریخ است که می‌خواهید شمارهٔ هفته را از آن استخراج کنید.
  • mode اختیاری است و الگوریتم تعیین هفتهٔ اول سال را مشخص می‌کند. مقدار آن می‌تواند یکی از موارد زیر باشد:
    • "ISO" (پیش‌فرض): هفتهٔ اول سال، هفته‌ای است که اولین پنج‌شنبهٔ سال را دربر می‌گیرد. شروع هفته دوشنبه است (استاندارد ISO 8601).
    • "US": هفتهٔ اول سال در ۱ ژانویه شروع می‌شود و شروع هفته، یکشنبه است. در بیشتر سال‌ها هفتهٔ اول، یک هفتهٔ ناقص خواهد بود.
    • "Instance": هفتهٔ اول سال در ۱ ژانویه شروع می‌شود و شروع هفته همان روزی است که در تنظیمات بومی‌سازی برای Instance مشخص کرده‌اید. در اکثر سال‌ها هفتهٔ اول ناقص خواهد بود.

توجه کنید که هیچ‌کدام از این سه Mode دقیقاً با الگوریتمی که Query builder برای گروه‌بندی بر اساس Week of year استفاده می‌کند منطبق نیست.

مقایسهٔ الگوریتم‌های مختلف برای اولین و آخرین هفته

  • در Query builder وقتی از Group by Week of year استفاده می‌کنید:

    How the week numbers are calculated for Group by Week of year

  • برای week(column) یا week(column, "ISO"):

    How the week numbers are calculated by ISO

  • برای week(column, "US"):

    How the week numbers are calculated by US method

  • برای week(column, "Instance") وقتی اولین روز هفته در Instance دوشنبه باشد:

    How the week numbers are calculated by Instance method

SQL

پایگاه‌های دادهٔ SQL مختلف، رویکردها و توابع متفاوتی برای استخراج Week of year دارند. بعضی موتورهای SQL چندین تابع و چند الگوریتم مختلف برای محاسبهٔ Week of year ارائه می‌کنند. برای جزئیات باید به مستندات پایگاه‌دادهٔ خودتان مراجعه کنید.

در این‌جا چند مثال (ناقص) از توابع مختلف آورده شده است:

DatabaseExampleFirst week algorithm
PostgresEXTRACT(WEEK FROM TIMESTAMP created_at)الگوریتم ISO
MySQLWEEKOFYEAR("2017-06-15")اولین روز هفته دوشنبه است و هفتهٔ اول سال بیش از ۳ روز دارد. توابع جایگزین دیگری هم وجود دارند.
BigQueryEXTRACT(WEEK FROM DATE ticreated_at)هفته‌ها از ۰ شماره‌گذاری می‌شوند. تاریخ‌های قبل از اولین یکشنبهٔ سال در هفتهٔ ۰ قرار می‌گیرند. توابع جایگزین دیگری هم هست.
RedshiftDATE_PART(week, TIMESTAMP created_at)الگوریتم ISO