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.
New here? Check out Scope & Limitations to see what data is available and what's not included.
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 and dimensions (reviews, interactions, transactions, locations, employees): target lag of 1 hour in
ANALYTICS - Daily aggregations (
fact_location_daily_stats): target lag of 12 hours inANALYTICS - Customer exports: delivered as daily file drops, within 24 hours of the scheduled run
- Object facts and dimensions (reviews, interactions, transactions, locations, employees): target lag of 1 hour in
- 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 | |
| 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. |
| Customer Saved | fact_customers_saved | A saved customer | Has saved revenue and saved visits. |
| Transactions | fact_transactions | A POS transaction | Transaction-level revenue and customer IDs. |
| Transaction Items | fact_transaction_items | A POS transaction item | Product/item-level transaction detail. |
| 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 and Data Dictionary 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: Facts expose date fields such as
created_at_date,last_version_date, andtransaction_date. 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.