در بسیاری از پروژههای Odoo، یک چالش تکراری وجود دارد:
«چطور سریع یک گزارش تحلیلی بسازیم، آن را تست کنیم، و اگر مفید بود به سیستم اضافه کنیم؟»
در حالت معمول، برای ساخت یک گزارش تحلیلی باید:
- مدل جدید بسازیم
- SQL View تعریف کنیم
- View (Pivot / Graph) طراحی کنیم
- دسترسیها را تنظیم کنیم
این فرآیند زمانبر است و برای تحلیلهای آزمایشی (Exploratory Analysis) مناسب نیست. حتی ممکن است راهی که طراحی میکنیم نیازهای ما را پوشش ندهد و این همه هزینه از بین خواهد رفت. باید دنبال راهی باشیم که با کمترین هزینه یک سیستم گزارشی ایجاد کنیم و بعد آن را به صورت یک ماژول طراحی کنیم.
این کار معادل با Odoo Studio است که شما میتوانید یک سیستم نمونه را طراحی کنید و بعد از اینکه به این نتیحه رسیدید که کار درست است آن را تبدیل به یک ماژول کنید.
اینجاست که ماژول bi_sql_editor وارد میشود.
🧠 bi_sql_editor چیست؟
ماژول bi_sql_editor از مجموعه OCA، یک ابزار تحلیل داده داخل Odoo بدون نیاز به کدنویسی ماژول است. هدف این است که تحلیلها را به سادگی در اودوو پیاده سازی، تست و تحلیل کنیم و در نهایت یک مدل آماده برای پیاده سازی ایجاد کنیم.
فراموش نکنید: این ماژول نیست بلکه بخضی از یک فرآیند است. در گام اول با این ابزار تحلیل و طراحی میکنیم و در نهایت ماژول طراحی میکنیم.
این ابزار به شما اجازه میدهد:
- با SQL دادهها را پردازش کنید
- همان لحظه آن را به یک مدل تبدیل کنید
- و بلافاصله در قالب Pivot، Graph و List تحلیل کنید
این روش میتواند هزینههای طراحی و تولید را کاهش دهد و سرعت توسعه را افزایش دهد. پیشنهاد من این هست که حتما از این تکنیک در پروژهها استفاده کنید.
🎯 چرا این ابزار مهم است؟
قبل از اینکه وارد جزئیات شویم، یک سؤال کلیدی است که باید به آن جوابی شفاف و کامل دهیم.
آیا همیشه باید برای هر گزارش یک ماژول بنویسیم؟
پاسخ: ❌ نه
حالتهای زیر را در نظر بگیرید:
- نمیدانیم دقیقا گزارش به چه دادههایی نیاز دارد
- هنوز نمیدانیم گزارش واقعاً مفید است یا نه
- نیاز داریم چند سناریو را تست کنیم
- میخواهیم سریع به جواب برسیم
در این تمام این حالتها، توسعه ماژول کار اشتباهی است و تنها به از بین رفتن هزینه، و زمان تیم منتهی خواهد شد. همیشه این حالتها را در نظر داشته باشید و با مشاهده هر کدام از آنها، دست از توسعه ماژول جدید بکشید و تا شفاف شدن کامل مسئله منتظر بمانید.
⚡ راهحل: تحلیل سریع (Rapid BI)
bi_sql_editor دقیقاً برای این مرحله طراحی شده. این ماژول کاربردهای زیر را به سادگی برای تیم توسعه ایجاد خواهد کرد:
- ساخت سریع مدل تحلیلی
- بدون Python و XML
- بدون restart سرور
- با امکان تغییر فوری
یکی از کاربردهای مهم این ماژول قابلیت طراحی و تست کوئریهای پایگاه داده است. در این ماژول مفاهیم data preparation برای گزارشها به صورت کامل مدل شده است. حتی شما با مفاهیم پایه آشنا خواهید شد و در طراحیهای خود آنها را لحاظ خواهید کرد.
⚙️ نحوه کار (گامبهگام)
1️⃣ نوشتن Query
فرض کنیم میخواهیم مصرف بتن را تحلیل کنیم:
SELECT
sml.partner_id,
sml.product_id,
DATE(sml.date) AS day,
SUM(sml.qty_done) AS total_qty,
SUM(sml.full_weight - sml.empty_weight) AS net_weight
FROM stock_move_line sml
WHERE sml.state = 'done'
GROUP BY sml.partner_id, sml.product_id, day
2️⃣ تبدیل به مدل
ماژول به صورت خودکار:
- یک مدل _auto = False میسازد
- دادهها را از همین Query میگیرد
3️⃣ تولید View
به صورت اتوماتیک:
- List View
- Pivot View
- Graph View
4️⃣ تحلیل توسط کاربر
کاربر میتواند:
- Group By بر اساس مشتری
- تحلیل روزانه
- مقایسه محصولات
- بررسی وزن خالص
🔥 یک مثال واقعی
میخواهیم یک مسئله روز مره که با آن روبرو هستیم را بررسی کنیم و با ا ستفاده از این ماژول راه حلی برای آن طراحی کنیم. فرض کنید که مدیر یکی از مشتریها (مدیری شرکتی که ما اودوو آنها را پشتیبانی میکنیم) میپرسد:
«کدام پروژه بیشترین مصرف مواد اولیه را در هفته گذشته داشته؟»
با bi_sql_editor:
- Query را مینویسی
- Pivot را باز میکنی
- Group By → پروژه
- Filter → هفته گذشته
👉 جواب در چند ثانیه آماده است. حالا اگر این نوع گزارش همواره مورد نیاز باشد و مدیر شرکتهای دیگر به آن نیاز داشته باشند میتوانید آن را به یه ماژول تبدیل کنید و برای سایر مشتریها هم استفاده کنید.
🧩 حل ۴ سؤال کلیدی طراحی گزارش
در مقالههای دیگر مثل راهنمای جامع روشهای ایجاد گزارش و تحلیل داده در اودوو نشان دادیم که برای طراحی یک گزارش باید به چهار سوال اساسی جواب دهیم. پاسخی که به این سوالها داده میشود تعیین کننده طراحی و پیاده سازی است. حالا میخواهیم این سوالها را با استفاده از امکاناتی که در bi_sql_editor وجود دارد جواب دهیم. پاسخ این چهار سوال اساسی به صورت زیر خواهد بود:
1. دادهها چطور آماده میشوند؟
تنها ابزاری که در آماده سازی دادهها میتواند استفاده شود کوئریهای پایگاه داده است. برای استفاده از این ماژول باید به Postgresql کاملا مسلط باشید. به صورت خلاصه پاسخ این سوال به صورت زیر خواهد بود:
✔ با SQL
✔ aggregation، join، محاسبات
2. چه کسانی دسترسی دارند؟
گزارشها اطلاعات پایهای و مهمی را از سیستم استخراج میکنند از این رو امنیت و دسترسی به آنها بسیار مهم است. باید امکاناتی باشد که دسترسی به این گزارش را مدیریت کنیم. برای این کار امکاناتی در سیستم در نظر گرفته شده است. در ماژول bi_sql_editor از ابزارهای زیر برای مدیریت دسترسیها استفاده میکنیم:
✔ تعریف Access Group
✔ فقط read-only
3. چطور نمایش داده میشوند؟
بعد از اینکه دادهها آماده شدند باید به این سوال جواب دهیم که به چه روشی دادهها نمایش داده میشوند. این ماژول از امکانات پایهای اودوو برای این کار استفاده میکند. برای همین میتوانیم بگوییم که با استفاده از امکانات زیر دادهها نمایش داده میشوند.
- Pivot
- Graph
- List
4. چه زمانی بهروز میشوند؟
دادههایی که در تحلیلها به کار گرفته میشوند باید به روز باشند تا برای تصمیمگیری معتبر باشد. از این رو باید امکاناتی برای به روز رسانی آنها در نظر گرفت. استفاده از Materialized View و Scheduled Action برای به روز رسانی یکی از امکاناتی است که در این سیستم در نظر گرفته شده است. بنابر این میتوانیم به صورت خلاصه بگویم که روشهای زیر برای به روز رسانی استفاده میشود:
✔ real-time (هر بار اجرای query)
✔ یا محدود شده با استفاده از Materialized View و Scheduled Action
🧠 معماری افزونه در طراحی و پیاده سازی گزارش
معماری تولید گزارش ار میتوانیم به سه لایه تقسیم کنیم. این ماژول هم برای این سه لایه امکاناتی را در نظر گرفته است. در این بخش سه لایه از گزارشگیری و نحوه عملکرد این ماژول رو در تولید گزارش توضیح خواهد داد.
1️⃣ Data Processing
👉 SQL Query
2️⃣ Presentation
👉 Pivot / Graph / Dashboard
3️⃣ Reporting
👉 PDF / Excel
⚡ مزایای کلیدی
- سرعت توسعه بسیار بالا
- مناسب تحلیلهای اکتشافی (Exploratory)
- کاهش هزینه توسعه
- مناسب تیمهای بیزینسی
⚠️ محدودیتها
- مناسب production نهایی نیست
- وابسته به دانش SQL
- n نهایی نیست
- ❌ وابسته به دانش SQL
- ❌ perf
- performance برای دادههای بسیار بزرگ
🚀 الگوی مناسب پیشنهادی حرفهای
به روشهای متفاوتی میتوانید از این ماژول استفاده کنیم. اما سوال اصلی این هست که بهترین روش در استفاده از این ماژول چیست؟ در این قسمت من یک روش عملی برای استفاده از این ماژول طراحی کردهام. این روش در بسیاری از پروژه ها استفاده شده و کارایی خوبی دارد. با استفاده از این روش مراحل انجام پروژه کاملا شفاف و بی ابهام خواهد بود.
در تمام این مراحل استفاده از ماژول bi_sql_editor به عنوان ابزار اصلی در نظر گرفته شده است. تنها مفاهیم را توضیح دادهایم، روش استفاده از این ماژول در بلاگهای دیگر توضیح داده شده است.
مرحله 1: کشف (Discovery)
در این مرحله باید نیاز مشتری به صورت دقیق مشخص شود. بهینه بودن و کارایی در این مرحله در نظر گرفته نمیشود. استفاده از تکنیکهای Agile میتواند بسیار مفید باشد.
- گزارش بساز
- تحلیل کن
- با مشتری بررسی کن که درست است
- دوباره تکرار کن
با این تکنیک دقیقا تعیین کنید که نیاز واقعی چیست.
سعی کنید در این مرحله محدودیتهای اودوو را برای مشتری توضیح دهید. برای نمونه اودوو یک ساختار یک پارچه و منظم دارد. در یک گزارش تنها یک مدل دادهای را میتوان استفاده کرد. نمیتوانید نصف گزارش بر اساس یک مدل باشد و نصف دیگر آن بر اساس مدل دیگر. این نکته بسیار مهم است.
شما باید همیشه این گونه فکر کنید که یک مدل دادهای دارید و ان را نمایش میدهید. این مدل میتواند از پردازش مدلهای دیگر ایجاد شود اما در نهایت یک مدل ثابت است.
مرحله 2: تثبیت (Stabilization)
فرض کنید که نیاز مشتری به صورت کامل درک کردید و یک نمونه اولیه از آن ایجاد کردید. حالا زمان این هست که این گزارش را تثبیت کنید، کارایی آن را افزایش دهید، دسترسیها را تعیین کنید و برای آن یک راهنمای اولیه ایجاد کنید.
در این مرحله باید گامهای زیر را دنبال کنید.
- تبدیل به SQL View
- بهینهسازی
- ایندکسگذاری
- تعیین دسترسیها
- آماده کردن راهنما
مرحله 3: ارائه (Presentation)
در این مرحله باید دسترسی به داده، نحوه نمایش و خروجیهای سیستم را به صورت دقیق مشخص کنید. تمام روشهایی که میشود لایه نمایش را ایجاد کرد در این ماژول نیست. میتوانید از امکانات ماژولهای دیگر هم استفاده کنید. در زیر برخی از این روشها را لیست شده است.
- Pivot
- List
- Spreed Sheet
- Dashboard
- KPI
🎯 جمعبندی
اگر در Odoo با این مسائل روبهرو هستی:
- نیاز به گزارشهای جدید
- تغییرات سریع در تحلیل
- عدم قطعیت در نیازها
👉 bi_sql_editor بهترین نقطه شروع است
و اگر درست استفاده شود، میتواند Odoo را از یک ERP ساده به یکسیستم تحلیل داده (BI System) تبدیل کند. با ترکیب امکانات این ماژول، Odoo External API میتوانیم اودوو را به سادگی به سیستمهای BI متصل کنیم.