I’m developing an ETL process, and need a bridge table for a one-to-many relationship between a fact table and a dimension table (MySQL database). There is a limited number of combinations (some thousands), so I want to re-use group keys from the bridge table to to limit the size.
Any group of dimensions belonging to a fact row will consist of a number of dimension keys (1 to around 15), assigned to a unique group key, as below:
group_key | dimension_key
-----------------------
1 | 1
1 | 3
1 | 4
2 | 1
2 | 2
2 | 3
3 | 1
3 | 4
How do I go about retrieving the unique group key for the dimensions 1,3,4 (ie. 1)?
I think you’re asking for a query that returns the groups such that all dimensions in a specific list are associated with the group. That is, rows must exist mapping that group to each of the dimensions, and you want to know which groups satisfy this.
The other solution is to count the matching rows in the group:
But I find that usually
GROUP BYis a performance killer particularly in MySQL.