جزء من سلسلة Data Analytics & BI
اقرأ الدليل الكاملOdoo + Power BI: دليل تكامل التحليلات الكامل
Odoo 19 Enterprise includes solid built-in reporting, but for organizations that need self-service analytics, cross-system data modeling, and enterprise-grade visualization, Power BI is the natural complement. يؤدي ربط بيانات Odoo التشغيلية بمحرك Power BI التحليلي إلى فتح الرؤى التي لا تستطيع تقارير Odoo الأصلية توفيرها.
This guide covers every aspect of the Odoo-Power BI integration: connection architecture, data modeling best practices, building key business dashboards, DAX measure creation, incremental refresh configuration, and deployment in Microsoft Fabric for enterprise scale.
الوجبات الرئيسية
- ثلاث طرق اتصال: PostgreSQL direct، وOdoo REST API، وODBC عبر تصدير Odoo
- يوفر وضع DirectQuery بيانات في الوقت الفعلي؛ يوفر وضع الاستيراد أداءً أفضل لمجموعات البيانات الكبيرة
- يتطلب مخطط PostgreSQL الخاص بـ Odoo إلغاء التسوية لنماذج بيانات Power BI الفعالة
- التحديث التزايدي يقلل من وقت التحميل للجداول الكبيرة (account.move، Stock.move)
- يعكس الأمان على مستوى الصف في Power BI التحكم في الوصول على مستوى الشركة في Odoo
- يلزم نشر البوابة لنظام Odoo المحلي؛ يتصل السحابة Odoo مباشرة
- يعمل Microsoft Fabric (Power BI Premium) على تمكين بيانات Odoo في مستودع المؤسسة
- المقاييس الرئيسية: الإيرادات، هامش الربح الإجمالي، دوران المخزون، تقادم المستحقات، OEE
خيارات بنية التكامل
اختر بنية الاتصال المناسبة بناءً على احتياجات النشر وإعداد التقارير الخاصة بـ Odoo.
الخيار 1: اتصال PostgreSQL المباشر (مستحسن)
قم بتوصيل Power BI مباشرةً بقاعدة بيانات PostgreSQL الخاصة بـ Odoo باستخدام موصل PostgreSQL:
الايجابيات:
- الوصول الكامل إلى جميع جداول Odoo والبيانات الأولية
- أفضل أداء للصلات المعقدة
- يدعم كلا من وضعي الاستيراد والاستعلام المباشر
سلبيات:
- يتطلب الوصول إلى الشبكة من Power BI Gateway إلى PostgreSQL
- تتطلب التغييرات في نموذج بيانات Odoo تحديث استعلامات Power BI
- الوصول المباشر إلى قاعدة البيانات يتجاوز التحكم في الوصول الخاص بـ Odoo
الخيار 2: واجهة برمجة تطبيقات Odoo REST
اتصل عبر موصل الويب الخاص بـ Power BI باستخدام واجهة برمجة تطبيقات REST الخاصة بـ Odoo:
الايجابيات:
- يعمل دون الوصول إلى الشبكة إلى PostgreSQL
- يحترم حقوق الوصول الخاصة بـ Odoo لكل مستخدم
- لا توجد بيانات اعتماد قاعدة البيانات المطلوبة
سلبيات:
- أبطأ من PostgreSQL المباشر (استدعاء API واحد لكل جدول)
- يؤثر تحديد المعدل على عمليات سحب البيانات الكبيرة
- من الصعب ترقيم الصفحات بكفاءة لمجموعات البيانات الكبيرة
الخيار 3: التصدير إلى مستودع البيانات
بيانات ETL Odoo في مستودع بيانات مخصص (Azure Synapse، وSnowflake، وBigQuery):
الايجابيات:
- أقصى قدر من الأداء على نطاق واسع
- فصل BI عن تخطيط موارد المؤسسات (ERP).
- يمكن دمج أنظمة مصدر متعددة
سلبيات:
- أعلى تكلفة وتعقيد للبنية التحتية
- يعتمد زمن وصول البيانات على جدول ETL (عادةً من ساعة واحدة إلى 24 ساعة)
- يتطلب صيانة خط أنابيب ETL
البنية الموصى بها لمعظم المؤسسات: Direct PostgreSQL مع بوابة Power BI (محليًا) أو الاتصال المباشر (cloud Odoo)، ووضع الاستيراد مع التحديث المتزايد، والتحديث المجدول كل 1-4 ساعات.
إعداد اتصال PostgreSQL
الخطوة 1: الوصول إلى الشبكة
بالنسبة لنظام Odoo المحلي:
- قم بتثبيت بوابة البيانات المحلية على خادم يتمتع بإمكانية الوصول إلى الشبكة إلى PostgreSQL
- قم بتكوين البوابة باستخدام بيانات اعتماد Microsoft 365 الخاصة بك
- افتح منفذ PostgreSQL (5432 أو 5433) من خادم البوابة إلى خادم Odoo DB
بالنسبة إلى السحابة Odoo (AWS، وAzure، وGCP):
- قم بتكوين مجموعة الأمان / جدار الحماية للسماح بالوارد من نطاقات IP الخاصة بـ Power BI
- أو: استخدم البوابة المحلية على جهاز افتراضي سحابي في نفس VPC
الخطوة 2: إنشاء مستخدم قاعدة بيانات للقراءة فقط
لا تقم مطلقًا بتوصيل Power BI بمستخدم قاعدة بيانات Odoo الرئيسية. إنشاء مستخدم مخصص للقراءة فقط:
-- Create read-only user for Power BI
CREATE USER powerbi_reader WITH PASSWORD 'strong_password_here';
-- Grant connection to database
GRANT CONNECT ON DATABASE your_odoo_db TO powerbi_reader;
-- Grant schema usage
GRANT USAGE ON SCHEMA public TO powerbi_reader;
-- Grant SELECT on all current and future tables
GRANT SELECT ON ALL TABLES IN SCHEMA public TO powerbi_reader;
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO powerbi_reader;
الخطوة 3: التكوين في Power BI Desktop
- افتح Power BI Desktop → الحصول على البيانات → قاعدة بيانات PostgreSQL
- أدخل:
- الخادم: مضيف PostgreSQL الخاص بك (والمنفذ إذا لم يكن 5432)
- قاعدة البيانات: اسم قاعدة بيانات Odoo الخاصة بك
- اسم المستخدم: powerbi_reader
- كلمة المرور: كلمة مرور المستخدم للقراءة فقط
- حدد وضع الاتصال: استيراد (مستحسن) أو استعلام مباشر
جداول Odoo الرئيسية لـ Power BI
يعد فهم مخطط PostgreSQL الخاص بـ Odoo أمرًا ضروريًا لبناء نماذج بيانات دقيقة.
الجداول المالية:
| الجدول | الوصف | الحقول الرئيسية |
|---|---|---|
account_move | الفواتير، الفواتير، قيود اليومية | نوع_التحرك، الحالة، تاريخ_الفاتورة، المبلغ_الإجمالي، معرف_العملة |
account_move_line | البنود الموجودة في إدخالات دفتر اليومية | move_id، account_id، الخصم، الائتمان، الكمية، السعر_المجموع |
account_account | شجرة الحسابات | الرمز، الاسم، نوع_الحساب |
account_payment | مدفوعات العملاء/البائعين | المبلغ، تاريخ_الدفع، الحالة، معرف_الشريك |
جداول المبيعات:
| الجدول | الوصف | الحقول الرئيسية |
|---|---|---|
sale_order | أوامر البيع | الاسم، الحالة، date_order، المبلغ_الإجمالي، Partner_id، user_id |
sale_order_line | خطوط أمر البيع | معرف الطلب، معرف المنتج، المنتج_uom_qty، السعر_الإجمالي |
crm_lead | فرص إدارة علاقات العملاء | الاسم، Stage_ID، الإيرادات_المتوقعة، الاحتمالية، معرف_المستخدم |
جداول الجرد:
| الجدول | الوصف | الحقول الرئيسية |
|---|---|---|
stock_quant | مستويات المخزون الحالية | معرف المنتج، معرف الموقع، الكمية |
stock_move | جميع حركات المخزون | معرف_المنتج، الحالة، التاريخ، الكمية_تم |
stock_picking | مستندات التسليم/الاستلام | picking_type_id، الحالة، الموعد المحدد |
product_template | البيانات الرئيسية للمنتج | الاسم، list_price، categ_id، النوع |
الموارد البشرية والرواتب:
| الجدول | الوصف | الحقول الرئيسية |
|---|---|---|
hr_employee | موظفين | الاسم، معرف_القسم، معرف_الوظيفة، معرف_الشركة |
hr_attendance | الوقت والحضور | معرف الموظف، check_in، check_out |
hr_payslip | كشوف المرتبات | معرف_الموظف، تاريخ_من، تاريخ_إلى، الحالة |
تصميم نموذج بيانات Power BI
تصميم المخطط النجمي لبيانات Odoo:
قم بتحويل مخطط Odoo الطبيعي إلى مخطط نجمي للحصول على الأداء الأمثل لـ Power BI:
[Date Table] (dimension)
↓
[Sales Fact Table]
↓
[Product Dimension] ← [Product Category Dimension]
↓
[Customer Dimension] ← [Country Dimension]
↓
[Salesperson Dimension]
↓
[Company Dimension]
رمز Power Query M — جدول حقائق المبيعات:
let
Source = PostgreSQL.Database("your-odoo-server:5433", "your_db"),
SaleOrderLine = Source{[Schema="public", Item="sale_order_line"]}[Data],
SaleOrder = Source{[Schema="public", Item="sale_order"]}[Data],
ProductTemplate = Source{[Schema="public", Item="product_template"]}[Data],
ProductProduct = Source{[Schema="public", Item="product_product"]}[Data],
// Join order lines with orders
JoinWithOrder = Table.NestedJoin(
SaleOrderLine, {"order_id"},
SaleOrder, {"id"},
"Order", JoinKind.Inner
),
// Expand order columns needed
ExpandOrder = Table.ExpandTableColumn(
JoinWithOrder, "Order",
{"name", "state", "date_order", "partner_id", "user_id", "company_id"},
{"order_name", "order_state", "date_order", "partner_id", "user_id", "company_id"}
),
// Filter: confirmed and done orders only
FilterState = Table.SelectRows(
ExpandOrder,
each [order_state] = "sale" or [order_state] = "done"
),
// Select and rename final columns
SelectColumns = Table.SelectColumns(FilterState, {
"id", "order_id", "product_id", "date_order", "partner_id",
"user_id", "company_id", "product_uom_qty", "price_unit",
"price_subtotal", "price_tax", "price_total"
}),
// Change types
ChangedTypes = Table.TransformColumnTypes(SelectColumns, {
{"date_order", type datetime},
{"price_subtotal", type number},
{"product_uom_qty", type number}
})
in
ChangedTypes
تدابير مؤشر داكس الأساسية
** الإيرادات والهامش: **
// Total Revenue (Net)
Revenue = SUMX(SalesFact, SalesFact[price_subtotal])
// Revenue MTD
Revenue MTD =
CALCULATE([Revenue], DATESMTD(DateTable[Date]))
// Revenue YTD
Revenue YTD =
CALCULATE([Revenue], DATESYTD(DateTable[Date]))
// Revenue vs Prior Period
Revenue vs PY =
VAR CurrentRevenue = [Revenue]
VAR PriorYearRevenue =
CALCULATE([Revenue], SAMEPERIODLASTYEAR(DateTable[Date]))
RETURN
DIVIDE(CurrentRevenue - PriorYearRevenue, PriorYearRevenue, 0)
// Gross Margin
Gross Margin =
SUMX(SalesFact,
SalesFact[price_subtotal] -
(RELATED(ProductDim[standard_price]) * SalesFact[product_uom_qty])
)
// Gross Margin %
Gross Margin % =
DIVIDE([Gross Margin], [Revenue], 0)
** تدابير الجرد: **
// Current Stock Value
Stock Value =
SUMX(
StockQuant,
StockQuant[quantity] * RELATED(ProductDim[standard_price])
)
// Inventory Turnover (annualized)
Inventory Turnover =
DIVIDE(
[COGS Annualized],
[Average Inventory Value],
0
)
// Days of Inventory Outstanding
DIO =
DIVIDE(365, [Inventory Turnover], 0)
// Stockout % (products with zero stock)
Stockout Rate =
DIVIDE(
COUNTROWS(FILTER(StockQuant, StockQuant[quantity] <= 0)),
COUNTROWS(StockQuant),
0
)
تقادم المستحقات:
// Current (0-30 days)
AR Current =
CALCULATE(
SUM(ARFact[amount_residual]),
ARFact[days_overdue] <= 0
)
// 1-30 days overdue
AR 1-30 Days =
CALCULATE(
SUM(ARFact[amount_residual]),
ARFact[days_overdue] >= 1 && ARFact[days_overdue] <= 30
)
// Days Sales Outstanding
DSO =
DIVIDE(
SUM(ARFact[amount_residual]),
[Revenue] / 365,
0
)
صفحات لوحة المعلومات الرئيسية
1. لوحة القيادة التنفيذية
- الإيرادات مقابل الميزانية (مخطط القياس)
- اتجاه الإيرادات (الرسم البياني الخطي، 13 شهرا المتداول)
- هامش الربح الإجمالي % (بطاقة KPI مع الاتجاه)
- أفضل 10 عملاء حسب الإيرادات (مخطط شريطي)
- أفضل 10 منتجات حسب الإيرادات (شريط أفقي)
- الإيرادات حسب المنطقة (خريطة مملوءة)
2. خط أنابيب المبيعات (CRM)
- خط الأنابيب حسب المرحلة (مخطط قمع)
- قيمة خط الأنابيب المرجحة (KPI)
- معدل الفوز/الخسارة (مخطط دائري)
- متوسط اتجاه حجم الصفقة
- أداء مندوب المبيعات (جدول المصفوفة)
- التوقعات مقابل الفعلية (خط + شريط التحرير والسرد)
3. نظرة مالية
- ملخص الربح والخسارة (جدول يتضمن منذ بداية العام، مقارنة بالعام الماضي)
- الوضع النقدي (KPI)
- تقادم المستحقات (شريط مكدس)
- أعمار الذمم الدائنة (شريط مكدس)
- اتجاه DSO (مخطط خطي)
4. لوحة معلومات المخزون
- قيمة المخزون حسب الفئة (الخريطة الهيكلية)
- دوران المخزون حسب المستودع (شريط)
- المخزون بطيء الحركة (الجدول: المخزون > 90 يومًا)
- بنود مخاطر نفاد المخزون (الجدول: أيام التغطية أقل من 7)
- تنبيهات نقطة إعادة الترتيب (البطاقات)
5. لوحة معلومات الموارد البشرية
- عدد الموظفين حسب القسم (شريط)
- الحضور مقابل الساعات المقررة (المقياس)
- استخدام رصيد الإجازات (المصفوفة)
- اتجاه معدل الدوران (الخط)
تحديث تزايدي للجداول الكبيرة
تنمو جداول account_move_line وstock_move وmail_message في Odoo إلى ملايين الصفوف. يمنع التحديث التزايدي عمليات إعادة تحميل الجدول بالكامل عند كل تحديث.
** تكوين التحديث المتزايد: **
- في Power Query، أضف المعلمات
RangeStartوRangeEnd(نوع التاريخ والوقت) - قم بتصفية عمود التاريخ:
Table.SelectRows(Source, each [write_date] >= RangeStart and [write_date] < RangeEnd) - انقر بزر الماوس الأيمن فوق الجدول في جزء الحقول → التحديث التزايدي
- تعيين: تخزين آخر 12 شهرًا، تحديث آخر 3 أيام
جداول Odoo التي تستفيد أكثر من التحديث التزايدي:
account_move_line: التصفية حسبdatestock_move: التصفية حسبdatesale_order: التصفية حسبdate_ordermail_message: التصفية حسبdate
الأمان على مستوى الصف
قم بتنفيذ الأمان على مستوى الصف (RLS) في Power BI لعكس التحكم في الوصول على مستوى الشركة في Odoo.
// RLS filter: user sees only their assigned companies
[company_id] IN
CALCULATETABLE(
VALUES(UserCompanyMapping[company_id]),
UserCompanyMapping[user_email] = USERPRINCIPALNAME()
)
قم بإنشاء جدول UserCompanyMapping (يتم صيانته في Power BI أو مزامنته من Odoo) لتعيين عناوين البريد الإلكتروني لمعرفات الشركة المعتمدة.
الأسئلة المتداولة
هل يمكنني استخدام DirectQuery مع قاعدة بيانات PostgreSQL الخاصة بـ Odoo للحصول على بيانات في الوقت الفعلي؟
نعم، ولكن مع التحذيرات. يعد DirectQuery على PostgreSQL الخاص بـ Odoo ممكنًا للوحات المعلومات ذات الاستعلامات البسيطة. ستكون لوحات المعلومات المعقدة التي تحتوي على العديد من المقاييس بطيئة لأن كل صورة مرئية تقوم بتشغيل استعلامات SQL جديدة مقابل قاعدة بيانات الإنتاج الخاصة بك. بالنسبة لمعظم حالات الاستخدام، يعد وضع الاستيراد مع التحديث لمدة ساعة واحدة هو المفاضلة الأفضل بين الحداثة والأداء.
كيف أتعامل مع بيانات Odoo متعددة العملات في Power BI؟
يقوم Odoo بتخزين المبالغ بعملة المعاملة وعملة الشركة. استخدم الحقل amount_currency للعملة الأصلية وdebit/credit (أو price_subtotal) لمعادل عملة الشركة. بالنسبة للدمج على مستوى المجموعة في Power BI، استخدم مبالغ عملة شركة Odoo وقم بتطبيق جدول أبعاد تحويل العملة المنفصل لإعداد تقارير متسقة.
ما هو تأثير الأداء على قاعدة بيانات PostgreSQL الخاصة بـ Odoo عند تحديث Power BI؟
يقوم التحديث الكامل لمجموعة بيانات Power BI بتشغيل استعلامات تحليلية متعددة في وقت واحد مقابل PostgreSQL. بالنسبة لقواعد بيانات Odoo الكبيرة (> 50 جيجابايت)، يمكن أن يستهلك ذلك قدرًا كبيرًا من عمليات الإدخال/الإخراج ووحدة المعالجة المركزية أثناء نافذة التحديث. أفضل الممارسات: جدولة التحديثات خارج ساعات الذروة (على سبيل المثال، 2:00-4:00 صباحًا)، واستخدام نسخة طبق الأصل للقراءة من PostgreSQL لاستعلامات Power BI، وتنفيذ التحديث المتزايد لتقليل نطاق الاستعلام.
هل يمكنني توصيل Power BI بمجتمع Odoo (الإصدار المجاني) عبر PostgreSQL؟
نعم. يتصل Power BI بأي قاعدة بيانات PostgreSQL بغض النظر عن التطبيق الذي يديرها. يتطابق مخطط PostgreSQL الخاص بمجتمع Odoo تقريبًا مع مخطط Enterprise (باستثناء بعض الجداول المخصصة للمؤسسات فقط). طريقة الاتصال هي نفسها؛ فقط تأكد من أن مستخدم قاعدة البيانات للقراءة فقط لديه حق الوصول إلى قاعدة بيانات المجتمع.
كيف أحافظ على مزامنة نموذج بيانات Power BI الخاص بي عند ترقية Odoo إلى إصدار جديد؟
يمكن لترقيات إصدار Odoo إعادة تسمية جداول قاعدة البيانات أو إعادة هيكلتها، خاصة بالنسبة للوحدات التي خضعت لإعادة هيكلة كبيرة. بعد أي ترقية لـ Odoo: قم بإجراء مقارنة لمخططات الجدول بين الإصدارات القديمة والجديدة، وقم بتحديث استعلامات Power Query للإشارة إلى الأعمدة المعاد تسميتها، والتحقق من صحة جميع مقاييس DAX مقابل المخطط الجديد. أنشئ فحصًا لتغيير المخطط في دليل الترحيل الخاص بك.
الخطوات التالية
يتطلب إنشاء تكامل Odoo + Power BI على مستوى الإنتاج خبرة في نمذجة البيانات ومعرفة PostgreSQL وفهمًا عميقًا لمخطط Odoo. إذا تم تنفيذها بشكل صحيح، فإنها توفر منصة تحليلية موحدة تعمل على تغيير الطريقة التي يتخذ بها فريق القيادة لديك القرارات.
تقدم ECOSIRE حلول تحليلات Odoo + Power BI الشاملة - بدءًا من بنية قاعدة البيانات ونمذجة البيانات وحتى تصميم لوحة المعلومات وتطوير DAX ونشرها. يجمع فريقنا بين خبرة Odoo وتخصص Power BI.
تحدث إلى ECOSIRE حول تكامل تحليلات Odoo →
استكشف خدمات Power BI الخاصة بـ ECOSIRE →
شارك متطلبات إعداد التقارير الخاصة بك وسنقوم بتصميم بنية Power BI التي تمنح فريق القيادة الخاص بك رؤية فورية لكل أبعاد عمليات Odoo الخاصة بك.
بقلم
ECOSIRE Research and Development Team
بناء منتجات رقمية بمستوى المؤسسات في ECOSIRE. مشاركة رؤى حول تكاملات Odoo وأتمتة التجارة الإلكترونية وحلول الأعمال المدعومة بالذكاء الاصطناعي.
مقالات ذات صلة
Odoo Accounting vs QuickBooks: Detailed Comparison 2026
In-depth 2026 comparison of Odoo Accounting vs QuickBooks covering features, pricing, integrations, scalability, and which platform fits your business needs.
Building Financial Dashboards with Power BI
Step-by-step guide to building financial dashboards in Power BI covering data connections to accounting systems, DAX measures for KPIs, P&L visualisations, and best practices.
AI + ERP Integration: How AI is Transforming Enterprise Resource Planning
Learn how AI is transforming ERP systems in 2026—from intelligent automation and predictive analytics to natural language interfaces and autonomous operations.
المزيد من Data Analytics & BI
Building Financial Dashboards with Power BI
Step-by-step guide to building financial dashboards in Power BI covering data connections to accounting systems, DAX measures for KPIs, P&L visualisations, and best practices.
Case Study: Power BI Analytics for Multi-Location Retail
How a 14-location retail chain unified their reporting in Power BI connected to Odoo, replacing 40 spreadsheets with one dashboard and cutting reporting time by 78%.
GoHighLevel + Power BI: Advanced Reporting and Analytics
Connect GoHighLevel to Power BI for advanced marketing analytics. Build executive dashboards, track multi-channel ROI, and create automated reports that go beyond GHL's native reporting.
GoHighLevel Reporting and Analytics: Measuring What Matters
Master GoHighLevel reporting and analytics. Learn to build custom dashboards, track ROI across channels, measure funnel conversion, and make data-driven marketing decisions.
Odoo Events Module: Planning, Registration, and Analytics
Complete guide to Odoo 19 Events: create events, manage registrations, sell tickets, track attendance, and analyze event ROI with native ERP integration.
Using OpenClaw AI Agents to Automate Power BI Reports
How OpenClaw AI agents automate Power BI report generation, distribution, and data preparation — delivering analytics at scale without manual BI developer intervention.