Start Here: Business Intelligence Analytics
Welcome to Edge's Business Intelligence (BI) analytics model. This guide helps you get answers quickly and safely from our data.
Key Concepts
- Consistency First: Our primary goal is to ensure that numbers match and analyses are reproducible. Follow the guardrails to stay aligned.
- Know Your Lens: Are you looking at the latest state of something (a snapshot) or its history over time? Picking the right one is important.
- Dates & Locations are Central: Nearly everything is tied to a location and a standardized UTC date. Filter by these first for the best performance and accuracy.
Consistency Contracts
This section outlines what you can count on from the data.
Global Behaviors (Applies Everywhere)
- Time: All timestamps and daily reporting use UTC.
- Freshness Targets: Object facts (like reviews) are updated within 1 hour. Daily rollups are updated within 24 hours.
- Late Data: When late edits arrive, we generally update snapshots.
- Backfills: We recompute history with no lookback limit; numbers from recent history may shift slightly as data settles.
Why your numbers might change: Backfills and late arrivals can revise yesterday's counts.
When to Escalate
If freshness targets aren't met or counts from the deep past keep drifting, please contact the data team with the dataset, time window, and your query.
Which Table Should I Use?
Use this guide to select the right table for your analysis. For a list of the most popular table columns, see Popular Columns. For a detailed breakdown of all metrics, see the Metrics Catalog.
| Friendly Name | Use This Table | One Row Represents... | Notes |
|---|---|---|---|
| Daily Performance | fact_location_daily_stats | A location on a date | Pre-calculated totals for fast dashboards. |
| Reviews (Latest) | fact_reviews | A review's current state | Best for today's totals and ratings. |
| Review History | fact_review_versions | A version of a review | Use to track changes to a review over time. |
| Employee Mentions | fact_employee_mentions | An employee mention | Includes reward amount and payment status. |
| Interactions | fact_interactions | A guest interaction | Has first-response times and who started it. |
| Messages | fact_messages | A single message | Detailed sender, type, and origin information. |
| Dates | dim_dates | A calendar day | Shared calendar for consistent time analysis. |
| Locations | dim_locations | A location | Contains brand, region, and other attributes. |
| Employees | dim_employees | An employee | Names and emails for recognition reports. |
For more advanced use cases and table details, see the Data Contracts documentation.
Guardrails
Follow these rules to ensure your analysis is accurate.
-
Choose Your Review Lens Carefully:
- "How many reviews do we have now?" → Use Reviews (latest).
- "How many different versions of reviews existed over time?" → Use Review Versions.
- Never mix them in the same total.
-
Always Join on the Correct Date: Messages use
created_at, while reviews usedate. The shareddim_datestable helps keep this consistent. -
Filter by Location/Brand First: This is the central key that ties everything together and ensures the best query performance.
-
Prefer Daily Tables for Dashboards: They are lighter, faster, and pre-aggregated for performance. Use event-level tables only when you need row-level detail.
For ready-to-use queries, check out the Cookbook.