It seems like E-A-V architecture makes a lot of sense for our data, as different events have different properties, but I haven't worked with E-A-V database in Tableau before. It seems like it would create a mess of Joins, or I'd have to have a pretty over-the-top flow in Tableau Prep to shape it. Searching forums it doesn't look like there's much on using Tableau with Segment,io or E-A-V in general.
Does anyone have any thoughts or experience? What Database architecture would you use if not E-A-V, or how did you manage E-A-V with Tableau?
hi
I would avoid exposing the raw EAV structure directly to Tableau. It can quickly become difficult to analyze because each event property becomes a separate row and requires pivots/joins.
A better approach is to keep the raw Segment events in an EAV/JSON-friendly structure, but create a curated analytics layer for Tableau:
- Event fact table → one row per event
- Common attributes → dedicated columns (user_id, event_name, timestamp, etc.)
- Frequently analyzed event properties → promoted to columns
- Rare/dynamic properties → keep in JSON/semi-structured form
Then Tableau connects to this curated layer rather than doing extensive transformations in Tableau Prep.
This gives you the flexibility of EAV for raw data while keeping the Tableau model simple and performant.