У меня есть следующий набор данных:
Country,Commodity,Year,Type,Amount
US,Vegetable,2010,Harvested,2.44
US,Vegetable,2010,Yield,15.8
US,Vegetable,2010,Production,6.48
US,Vegetable,2011,Harvested,6
US,Vegetable,2011,Yield,18
US,Vegetable,2011,Production,3
Argentina,Vegetable,2010,Harvested,15.2
Argentina,Vegetable,2010,Yield,40.5
Argentina,Vegetable,2010,Production,2.66
Argentina,Vegetable,2011,Harvested,15.2
Argentina,Vegetable,2011,Yield,40.5
Argentina,Vegetable,2011,Production,2.66
Bhutan,Vegetable,2010,Harvested,7
Bhutan,Vegetable,2010,Yield,35
Bhutan,Vegetable,2010,Production,5
Bhutan,Vegetable,2011,Harvested,2
Bhutan,Vegetable,2011,Yield,6
Bhutan,Vegetable,2011,Production,3
Дано:
- Если в какой-либо одной стране в данных указано n лет, все в других странах также должно быть такое же число n лет. Например: если в США есть данные за 2011 и 2012 годы, то для всех остальных стран будут данные за 2011 и 2012 годы.
Условия:
- Агрегация происходит только при выборе нескольких стран. Группировка будет по товарам и годам.
Например: если пользователь во внешнем интерфейсе выбирает США и Аргентину, мы должны показать -
Сумма полученной доходности = (Урожай в США + Урожай в Аргентине) / (Производство в США + Производство в Аргентине) , т.е. (2,44 + 15,2) / (6,48 + 2,66), аналогично для трех стран это будет добавление трех значений урожая делится добавлением трех производственных значений и так далее. Это должно быть заполнено в новой строке.
Примечание : пользователи во внешнем интерфейсе могут выбрать любую комбинацию стран. Единственная цель сделать это в бэкэнде, а не динамически делать это во фронтенде, заключается в том, что AWS QuickSight (наш инструмент визуализации), хотя и может заполнять сумму в выбранных фильтрах столбца, но еще не поддерживает вычисление по этим производным суммированным полям. . Следовательно, все расчеты для всех комбинаций стран должны быть предварительно заполнены (очень наивный подход), чтобы сделать их доступными в отчете.
Два моих вопроса ко всем SQL экспертам:
- Как я могу заполнить строки всех комбинаций стран, сгруппированных по годам и товарам, чтобы в них были данные для всех возможных комбинаций.
- Учитывая, что я могу заполнить все комбинации строк, как будет ли инструмент отчетности понимать, какую производную строку выбрать в зависимости от выбора стран, поскольку эта строка помечена как США + Аргентина, эта строка - США + Бутан и т. д. c.
Приветствуются любые решения.
SQL Предпочтительный инструмент: Spark SQL или Athena SQL (работает на Presto) или HiveQL. Менее предпочтительны: Oracle, PG SQL
Примечание 2 : единственная цель публикации этого вопроса, хотя я сформулировал то же самое в другом вопросе, заключается в том, что я не Я не хочу навязывать свой наивный подход кому-то, кто пытается решить проблему, поэтому здесь я определил проблему с большей ясностью, чем просьба о помощи в решении. А в другом вопросе я изложил свой подход к ожидаемому результату. Если вы хотите увидеть другой вопрос, здесь .