Metabase

کار با JSON

فیلتر کردن JSON

در query builder، متابیس نمی‌تواند JSON در ستون‌ها را parse کند، بنابراین فقط می‌توانید با "Is empty" یا "Not empty" فیلتر کنید.

باز کردن JSON

با برخی پایگاه‌داده‌ها، متابیس می‌تواند ستون‌های JSON را به فیلدهای سازنده‌شان باز کند، که سپس می‌توانید با استفاده از query builder روی آن‌ها فیلتر کنید.

در اینجا یک جدول با یک ستون که حاوی JSON است وجود دارد.

یک جدول با یک ستون JSON

متابیس می‌تواند آن ستون JSON را باز کند تا هر کلید در object JSON ستون خودش را در جدول داشته باشد. در اینجا فیلدهای بازشدهٔ جدول با ستون JSON تصویرشده در بالا آورده شده است:

فیلدهای بازشده

و در اینجا مقادیر همانطور که در جدول دیده می‌شوند:

مقادیر بازشده

این باز کردن به شما امکان می‌دهد برای مقادیر یافت‌شده در object JSON اصلی فیلتر کنید.

متابیس نام‌های ستون بازشده را با نام ستون اصلی که حاوی JSON بود prefix می‌کند. می‌توانید نام‌های ستون را در Admin settings > Table metadata تغییر دهید، یا با ایجاد یک مدل و ویرایش ابردادهٔ ستون.

Toggle کردن باز کردن JSON برای یک پایگاه داده

اگر متوجه کاهش عملکرد از این باز کردن JSON شدید، توصیه می‌کنیم آن را خاموش کنید.

برای خاموش کردن باز کردن JSON برای یک پایگاه داده:

  1. روی Gear در گوشهٔ بالا سمت راست کلیک کنید.
  2. Admin settings را انتخاب کنید
  3. به تب Databases بروید.
  4. پایگاه داده مرتبط را انتخاب کنید.
  5. روی Show advanced options کلیک کنید.
  6. Allow unfolding of JSON columns را toggle کنید.
  7. به پایین اسکرول کنید و روی دکمهٔ Save changes کلیک کنید.
  8. روی Sync database schema کلیک کنید.
  9. روی Re-scan field values کلیک کنید.

Toggle کردن باز کردن JSON برای یک ستون خاص

اگر عملکرد کاهش می‌یابد، یا ترجیح می‌دهید JSON را در ستون اصلی نگه دارید، می‌توانید باز کردن را برای فیلدهای جداگانه در تنظیماتشان خاموش کنید.

  1. روی Gear در گوشهٔ بالا سمت راست کلیک کنید.
  2. Admin settings را انتخاب کنید.
  3. به تب Table metadata بروید.
  4. پایگاه داده‌ای که حاوی فیلد موردنظر برای به‌روزرسانی است را انتخاب کنید.
  5. جدولی که حاوی فیلد است را انتخاب کنید.
  6. فیلد حاوی JSON اصلی را انتخاب کنید
  7. در بخش Behavior، گزینهٔ Unfold JSON را پیدا کنید و Yes یا No را انتخاب کنید. اگر ستون باز شده بود، متابیس این ستون JSON را از نمای مخفی کرده است، بنابراین اگر می‌خواهید ستون JSON دوباره قابل مشاهده باشد، باید قابلیت مشاهدهٔ ستون را به Everywhere تغییر دهید.
  8. به بالا اسکرول کنید و روی دکمهٔ Filter values کلیک کنید و Re-scan this field را انتخاب کنید.

تنظیم JSON بازشده

برای اینکه باز کردن JSON کار کند، نوع دادهٔ ستون باید JSON باشد

به‌عنوان مثال، اگر یک CSV با JSON در آن آپلود می‌کنید، ممکن است نیاز به به‌روزرسانی داده/نوع در پایگاه داده داشته باشید. توجه داشته باشید که نمی‌توانید نوع داده را از طریق متابیس ویرایش کنید؛ فقط می‌توانید نوع فیلد آن را تغییر دهید. بنابراین حتی اگر نوع فیلد در متابیس Field containing JSON باشد، اگر داده/نوع JSON نباشد، متابیس گزینهٔ باز کردن ستون را به شما نمی‌دهد. باید نوع ستون را در خود پایگاه داده تغییر دهید.

پایگاه‌داده‌هایی که از باز کردن JSON پشتیبانی می‌کنند

  • BigQuery: به‌طور خودکار فعال است، فقط برای انواع STRUCT اعمال می‌شود.

    اگر داده شما در نوع داده STRUCT در BigQuery ذخیره شده است، می‌توانید فیلدهای تو در توی جدول را کوئری کنید. این به‌طور پیش‌فرض فعال است. با این حال، متابیس JSON ذخیره‌شده در BigQuery را به‌عنوان نوع JSON باز نمی‌کند. این به این دلیل است که در BigQuery، فیلدهای تو در تو بخشی از تعریف خود جدول هستند، بنابراین وقتی متابیس با پایگاه داده BigQuery شما همگام می‌شود، قادر خواهد بود ابرداده دربارهٔ هر یک از جداول شما، از جمله جداول با فیلدهای تو در تو را دریافت کند. با این حال، کوئری کردن فیلدهای تو در تو به آرایه‌ها (REPEATED (STRUCT)) در BigQuery گسترش نمی‌یابد.

  • Druid (JDBC)

  • MongoDB: به‌طور خودکار برای همهٔ فیلدهای تو در تو فعال است.

  • MySQL

  • PostgreSQL