Case Study
Odoo to Tableau Architecture: Surviving 15M+ Records with BigQuery Middleware
How we eliminated XML-RPC timeouts and enabled high-performance Tableau visualizations for 10M+ Odoo records using BigQuery as scalable middleware.


Challenge
Data engineers attempting to scale Odoo-to-Tableau integrations natively hit hard walls. Standard XML-RPC scripts trigger Odoo 504 gateway timeout Nginx proxy_read_timeout large payload errors on bulk exports. Furthermore, generic connectors fail to handle strict BI schemas. This results in the "Many2One Tuple Nightmare," ghost records from flawed write_date polling, and crippling server CPU drains caused by deep pagination limits.
Solution
Deploying the Niyu Labs Odoo to BigQuery Connector as an asynchronous, schema-aware data bridge. This architecture instantly flattens nested Odoo fields (Selection/Many2One), replaces brittle cron-job batching with stateful incremental pipelines, and provides Tableau with a highly optimized, Live connection-ready data warehouse environment.
Result Metrics
- - 15M+ Records Processed: Zero API timeouts or worker crashes.
- - Live Connection Optimized: Sub-second dashboard load times via BigQuery indexing.
- - True State Sync: Eradicated "missed hard deletes" through intelligent CDC synchronization.
"The challenge with Odoo analytics isn't the visualization; it's the extraction pipeline. If your connector crashes a worker node just to refresh a sales dashboard, you don't have an analytics stack—you have an infrastructure liability."
The Reality of Odoo to Tableau at Scale Visualizing Odoo data in Tableau sounds straightforward until you hit enterprise scale. Relying on standard API layers for heavy analytical workloads is a guaranteed path to system failure. The core issue isn't Tableau; it is the transactional nature of Odoo's underlying database. Forcing a live BI tool to run massive aggregations across sale.order and stock.move tables via standard web services chokes the system, causing severe latency and locking production tables.
The Anatomy of the Bottleneck Prior to the intervention, the client utilized a direct connection approach. This resulted in brittle daily extracts. If an extract failed halfway through a 10-million row pull due to a network blip or memory cap, the entire process had to restart. Furthermore, minor structural changes in Odoo routinely caused schema mismatch errors in Tableau, requiring constant engineering triage.
The Architecture Pivot: BigQuery as Middleware To resolve this, we deployed Google BigQuery as a dedicated data warehouse layer. Using the BigQuery Connector Pro, we established a highly resilient, asynchronous pipeline.
Instead of Tableau pulling from Odoo, Odoo now pushes to BigQuery. The connector utilizes incremental syncing, transferring only new or updated records rather than dumping the entire database. Tableau is then repointed to BigQuery, leveraging a native, optimized connection.
Execution and Scale This setup leverages Google’s column-oriented processing power. Tableau’s live queries now execute against BigQuery’s massive compute infrastructure, completely bypassing the Odoo server. Complex joins and aggregations happen in the cloud data warehouse in milliseconds. Furthermore, the connector's schema evolution capability ensures that when the client adds custom fields in Odoo, the changes propagate downstream automatically without breaking the Tableau dashboards.
The Proof The result is a resilient, hands-off analytics stack. Dashboards that previously timed out now render instantly. Business users have unrestricted, rapid access to their data, and the engineering infrastructure operates without the risk of BI-induced ERP crashes.
