This question has no satisfactory answer. Please feel encouraged to answer it or comment.
Let's consider the following data model. We have three dimensions in our model. If you need to name them, be it (A) product, (B) brand, (C) region. B is a container for A, so it is a hierarchy. Many products in one brand. The tables denoted as A, B, C, AB, ABC are bridge tables which contain only unique values.
Now the questions:
Is the AB bridge table necessary in the following model? Couldn't we connect A and B tables directly to ABC.
Is it a good idea to create Cartesian product for all the dimensions in the model as a Central Bridge Table?
Should we plug Budget table with AB dimensions to bridge AB or to bridge ABC? Depending on what is the answer to first question.
How should we plug Advertizing table to the model? To bridge ABC or to especially created bridge table BC and that one connect to ABC?
Now the schema:
+-------+
| |
| A +-----+
| | |
+-------+ |
|
v
+-------+ +--+----+ +--------+ +------------+
| | | | | | | Sales |
| B +--> AB +----->| ABC +----->| ABC |
| | | | | | | |
+-------+ +--+----+ +---+----+ +------------+
^
|
+-------+ | +------------+
| | | | Budget |
| C +---------------------+ | AB |
| | | |
+-------+ +------------+
+------------+
| Advertizing|
| BC |
| |
+------------+
DAX bridging.
I love to construct bridge tables in DAX, not in M. There a few reasons for that. First, it is done with simple code. Second, it introduces sort of tidiness to Query Editor because I see there only source tables (not bridges).
So creating a Bridge for A dimension looks like this:
#A =
DISTINCT (
UNION (
TOPN ( 0, ROW ( "A", "Apple" ) ),
DISTINCT ( Sales[A] ),
DISTINCT ( Budget[A] ),
DISTINCT ( Advertizing[A] )
)
)
Bridge for AB would be a Cartesian product of so created A and B:
AB =
CROSSJOIN (
DISTINCT ( '#A'[A] ),
DISTINCT ( '#B'[B] ),
"A@B", COMBINEVALUES("@",'#A'[A], '#B'[B])
)
Update after receiving the first answer.
I don't want to edit the content of my question once the bounty has started. After the first answer, I realized that hierarchies came to my question by accident and distract you from what I would like to find out. You can forget about hierarchies and treat dimensions A, B, C as independent dimensions.
I would like to focus on how to build a star schema in case we have many independent dimensions and some tables, say dictionaries with joined dimensions. For example, we can have a sales budget defined by region and brand, and an advertising budget defined by product_color. Should we build a central bridge table that has all dimensions (Cartesian product of ABC)? Or alternatively, should the central bridge table have thickbranches with many dimensions? In the second case we would have [AB] -> [ABC] <- [BC].