Metabase

عیب‌یابی syncها، scanها، و fingerprinting

ابتدا، بررسی کنید که آیا داده شما به‌روز نیست به دلیل cache کردن مرورگر:

  1. cache مرورگر خود را پاک کنید.
  2. صفحه متابیس خود را refresh کنید.
  3. صفحه متابیس خود را در یک پنجره ناشناس باز کنید.

بعد از اینکه تأیید کردید که به یک view غیرcache شده از جداول و ستون‌های خود نگاه می‌کنید، ادمین پایگاه داده خود را برای کمک با عیب‌یابی tag کنید:

  • Syncها، اگر جداول یا ستون‌های شما گم شده‌اند، یا انواع داده ستون اشتباه هستند.
  • Scanها، اگر مقادیر ستون شما گم شده یا اشتباه هستند (مثلاً، در منوهای dropdown فیلتر شما).
  • Fingerprinting، اگر یک scan دستی trigger کرده‌اید، اما تغییرات اعمال نمی‌شوند.

همگام‌سازی

  1. اگر متابیس را self-host می‌کنید، مطمئن شوید instance متابیس و هر درایور پایگاه داده community به‌روز هستند.

  2. به Admin > Tools > Logs بروید تا وضعیت sync را بررسی کنید.

  3. یک کوئری علیه پایگاه داده خود از ویرایشگر SQL متابیس اجرا کنید تا خطاهای اتصال پایگاه داده یا امتیاز پایگاه داده که در لاگ‌ها فهرست نشده‌اند را بررسی کنید:

    SELECT
       *
    FROM
        "your_schema"."your_table_or_view"
    LIMIT 1
    
  4. در صورت نیاز، جدول یا view را دوباره همگام‌سازی دستی کنید.

موارد خاص

اگر تازه یک پایگاه داده جدید در متابیس تنظیم کرده‌اید، کوئری sync اولیه نیاز به زمان دارد تا شروع شود. اگر sync اصلاً شروع نشده است، عیب‌یابی اتصالات پایگاه داده را امتحان کنید.

توضیح

یک کوئری sync باید مثل این در جدول اجرای کوئری پایگاه داده شما نمایش داده شود (با استفاده از امتیازات برای کاربر پایگاه داده در جزئیات اتصال پایگاه داده):

SELECT
    TRUE
FROM
    "your_schema"."your_table_or_view"
WHERE
    1 <> 1
LIMIT 0

برای اجرای کوئری sync، متابیس باید:

  • با موفقیت به پایگاه داده شما متصل شود، و
  • امتیازات برای کوئری کردن آن پایگاه داده اعطا شود.

اگر اتصال شکست می‌خورد یا امتیازات پایگاه داده اشتباه هستند، کوئری sync نمی‌تواند اجرا شود. اگر متابیس نمی‌تواند با پایگاه داده شما همگام‌سازی کند بعد از اینکه برای اولین بار آن را تنظیم کردید، سپس کوئری‌های scan و fingerprinting اولیه نیز اجرا نمی‌شوند.

باز کردن ستون‌های JSON با رکوردهای Object

  1. به Admin > Databases > پایگاه داده شما > Show advanced options بروید.
  2. روی Disable "JSON unfolding" کلیک کنید
  3. روی Save changes کلیک کنید.
  4. روی Sync database schema کلیک کنید.

توضیح

متابیس سعی می‌کند رکوردهای JSON و JSONB را در طول فرآیند sync باز کند، که می‌تواند بخش قابل توجهی از زمان اجرای کوئری را اشغال کند. اگر تعداد زیادی رکورد JSON دارید، سعی کنید گزینه باز کردن خودکار را غیرفعال کنید تا sync را از slow-motion بیرون بکشید. به خاطر داشته باشید که می‌توانید وضعیت sync را از Admin > Tools > Logs دنبال کنید.

اسکن کردن

  1. به Admin > Table Metadata بروید.
  2. پایگاه داده و جدول را انتخاب کنید.
  3. به ستونی که می‌خواهید به‌روزرسانی کنید بروید، و روی آیکون gear کلیک کنید.
  4. روی Discard cached field values کلیک کنید.
  5. روی Re-scan this field کلیک کنید.
  6. به Admin > Tools > Logs بروید تا وضعیت scan را دنبال کنید و خطاها را از آنجا debug کنید.

موارد خاص

اگر منتظر اجرای scan اولیه هستید بعد از اتصال یک پایگاه داده، مطمئن شوید که sync اولیه ابتدا تکمیل شده است (به خاطر داشته باشید می‌توانید وضعیت را از Admin > Tools > Logs بررسی کنید).

توضیح

کوئری‌های scan علیه پایگاه داده شما برای نمونه‌گیری مقادیر ستون از اولین 1,000 ردیف در یک جدول یا view اجرا می‌شوند:

SELECT
    "your_table_or_view"."column" AS "column"
FROM
    "your_schema"."your_table_or_view"
GROUP BY
    "your_table_or_view"."column"
ORDER BY
    "your_table_or_view"."column" ASC
LIMIT 1000

یک scan شکست خورده توسط یک کوئری scan شکست خورده ایجاد می‌شود---می‌توانید به لاگ‌ها نگاه کنید تا کوئری را مشابه کوئری‌های دیگری که مستقیماً علیه پایگاه داده خود اجرا می‌کنید debug کنید.

توجه داشته باشید که وقتی یک فیلتر جعبه جستجو را به یک فیلتر dropdown تغییر می‌دهید از Table Metadata، یک کوئری scan برای آن فیلد trigger می‌کنید. اگر یک فیلتر dropdown دارید که همه مقادیر در یک فیلد را pick up نمی‌کند، به خاطر داشته باشید که متابیس فقط اولین 1,000 مقدار منحصر به فرد در هر فیلد را نمونه‌گیری می‌کند، و حداکثر 100 کیلوبایت متن را ذخیره می‌کند. اگر بیش از 1,000 مقدار منحصر به فرد در یک ستون دارید، یا داده‌های text-heavy زیادی (مثل URLهای طولانی یا پاسخ‌های نظرسنجی)، می‌توانید:

  • از یک فیلتر جعبه جستجو برای آن فیلد استفاده کنید.
  • داده را بیشتر در فرآیند ETL یا ELT خود پاک کنید.

Fingerprinting

برای trigger دستی مجدد یک کوئری fingerprinting برای یک ستون مشخص:

  1. به Admin > Databases > پایگاه داده شما > Show advanced options بروید.
  2. Periodically refingerprint tables را toggle ON کنید و روی Save changes کلیک کنید.
  3. به Admin > Table Metadata بروید.
  4. پایگاه داده و جدول خود را انتخاب کنید.
  5. visibility جدول را به "Hidden" تغییر دهید.
  6. visibility را دوباره به "Queryable" تغییر دهید.
  7. 10 ثانیه صبر کنید.
  8. به ستون خود بروید و Type را از "Entity Key" به "No semantic type" تغییر دهید، و دوباره به "Entity Key".

موارد خاص

اگر منتظر اجرای کوئری fingerprinting اولیه هستید بعد از اتصال یک پایگاه داده، مطمئن شوید که sync اولیه ابتدا تکمیل شده است (به خاطر داشته باشید می‌توانید وضعیت را از Admin > Tools > Logs بررسی کنید).

اگر از MongoDB استفاده می‌کنید، متابیس اولین 10,000 سند در هر collection را fingerprint می‌کند. اگر همه فیلدهای خود را نمی‌بینید، به این دلیل است که آن فیلدها ممکن است در آن اولین 10,000 سند وجود نداشته باشند. برای اطلاعات بیشتر، به مستند مرجع MongoDB ما مراجعه کنید.

توضیح

کوئری fingerprinting اولیه به اولین 10,000 ردیف از یک جدول یا view مشخص در پایگاه داده شما نگاه می‌کند:

SELECT
    *
FROM
    "your_schema"."your_table_or_view"
LIMIT 10000

اگر اولین 10,000 ردیف نماینده داده در یک جدول نیستند (مثلاً، اگر داده sparse با تعداد زیادی خالی یا null دارید)، می‌توانید مشکلاتی مثل این ببینید:

  • انواع فیلتر اشتباه، مثل یک category وقتی یک تقویم می‌خواهید.
  • تجسم‌های histogram که کار نمی‌کنند (چون متابیس نیاز به یک مقدار min و max برای تولید binها دارد).

متابیس یک گزینه built-in برای trigger کردن کوئری‌های fingerprinting دستی ندارد. می‌توانید تنظیمات یک فیلد را با استفاده از مراحل بالا "reset" کنید تا سعی کنید یک کوئری fingerprinting را force کنید، اما تضمین نمی‌شود که روی همه نسخه‌های متابیس کار کند.

همگام‌سازی یا اسکن کردن زمان زیادی می‌گیرد

برای سرعت بخشیدن به syncها:

  • امتیازات استفاده شده برای اتصال به پایگاه داده را محدود کنید تا متابیس فقط یک زیرمجموعه محدود از schemaها یا جداول را همگام‌سازی کند.
  • فرکانس کوئری‌های sync را کاهش دهید.

برای سرعت بخشیدن به scanها:

توضیح

Syncها و scanها در نهایت فقط دو نوع کوئری هستند که علیه پایگاه داده شما اجرا می‌شوند، بنابراین سرعت اجرا توسط تعداد کوئری‌هایی که اجرا می‌شوند، فرکانس اجرا، اندازه داده شما، و مقدار منابعی که به پایگاه داده خود اختصاص داده‌اید محدود می‌شود. متابیس گزینه‌هایی برای تنظیم تعداد و فرکانس کوئری‌های sync و scan به شما می‌دهد، چون متأسفانه، نمی‌توانیم پایگاه داده شما را با قدرت بیشتر imbue کنیم... (هنوز؟)

موضوعات مرتبط

آیا هنوز گیر کرده‌اید؟

اگر نمی‌توانید مشکل خود را با استفاده از راهنماهای عیب‌یابی حل کنید: