Cross-Fact Query Behavior in GoodData Great questions — let me address each one based on what the knowledge sources cover.
1. Is that behavior expected? Yes, this is expected behavior. GoodData can only combine objects from different datasets when they are connected through a
single, unambiguous relationship path and share a compatible grain. When you add attributes or facts from datasets that are at different grains — or where the only shared dimension is at a higher level of aggregation than the individual fact rows — GoodData will hide or reject the combination to prevent incorrect results. [
Community Slack]
The core rule is:
fact datasets should not be connected directly to other fact datasets, and relationships must allow a single, clear path between the objects you want to analyze together. [
Community Slack]
2. Recommended pattern when facts only share a higher-level dimension The knowledge sources confirm that without a proper model relationship, combining such data is not directly supported in GoodData metrics or visualizations. The recommended approaches are:
•
Pre-join / pre-aggregate in your data source or ETL (e.g., dbt): Create a single denormalized fact or a pre-aggregated table at the shared grain before it lands in GoodData. This is described as the "most robust solution." [
Community Slack]
•
Create separate metrics and accept limitations: You can build separate metrics for each fact dataset, but you won't be able to compute derived metrics (like averages across both) in a single visualization unless the datasets are related. [
Community Slack]
•
Use a shared conformed dimension: Extract the shared higher-level grouping into a dedicated dimension dataset and reference it from both fact tables. This is the standard pattern for enabling cross-fact filtering and visualization. [
Community Slack]
3. Native LDM constructs to consider before going the ETL route There are a couple of native GoodData features worth evaluating:
•
Data Blending (Multiple Data Sources in LDM): GoodData supports blending metrics from different data sources in a single visualization using
shared conformed dimension attributes (e.g., a common date dimension or a shared primary key dimension). Metrics are aggregated independently per source and then joined
after aggregation on the shared dimension. [
Advanced Modelling Use Cases]Key limitations of data blending to be aware of:
◦ Only
fact-based metrics can be used.
◦ Metrics can only be sliced/filtered using attributes that are references to
common dimension datasets present in each data source.
◦ Only
one data source change is allowed in a single relationship path.
[
Advanced Modelling Use Cases]
•
Aggregate Awareness: If your use case involves pre-aggregated tables (e.g., monthly summaries), GoodData's Aggregate Awareness feature can route queries to the most efficient pre-aggregated dataset. However, note it currently only supports
additive metrics (
SUM
,
MIN
,
MAX
) — not
COUNT DISTINCT
or
AVERAGE
. [
Aggregate Awareness]
Summary I'd suggest first trying the
shared conformed dimension approach in the LDM before committing to ETL denormalization — it may resolve your issue without additional data movement. If the grain mismatch is fundamental, pre-aggregating in dbt to a single fact at the shared grain is the most reliable path. 👍 0 button 👎 0 button ℹ️
Tip: Mention
@kapa.ai in the thread for follow-ups.
👀 Our Support team monitors all messages and will jump in if needed., with interactive elements