Давайте рассмотрим набор данных с простым отношением «многие ко многим»: банковские счета, которые могут иметь несколько владельцев.Две таблицы подготовлены и доступны в Apache Spark.
Owner,Account
John,A01
John,A02
Bob,A02
Bob,A03
Ana,A03
Account,Balance
A01,2000.0
A02,3000.0
A03,5000.0
В Spark, если я хочу проверить остатки на счетах для каждого пользователя, я начинаю с таблицы «владельцев», к которой я присоединяюсь с таблицей «счетов».
Owner,Account,Balance (joined)
John,A01,2000.0
John,A02,3000.0
Bob,A02,3000.0
Bob,A03,5000.0
Ana,A03,5000.0
Таким образом, я могу суммировать остатки, и суммы на владельца являются правильными.Но общая сумма будет неправильной, потому что отдельные счета появляются несколько раз.
Owner,Balance
John, 5000.0
Bob, 8000.0
Ana, 5000.0
Total (wrong), 18000.0
Если я хочу получить общую сумму денег в банке, я запускаю агрегирование непосредственно в таблице «счетов».
Total (right), 10000.0
Теперь я хотел бы представить свой набор данных Spark в виде куба OLAP с Sparkube , чтобы бизнес-пользователи могли создавать свои собственные панели мониторинга в Excel и Tableau.Есть ли способ заставить Sparkube понять отношение «многие ко многим» и раскрыть как правильные агрегаты для каждого владельца, так и правильные итоги.