Подсчет элементов из таблицы на основе количества появлений в другой таблице

#mysql #powerbi #dax

Вопрос:

Я загрузил базу данных MySQL в PowerBI; вот как выглядит модель данных:

Модель данных PowerBI

Я хотел бы воспроизвести этот запрос MySQL с помощью DAX:

 SELECT
    concat(substring(ano, 1, 3), 0) AS decada,
    nombre_pais,
    nombre_ciudad,
    count(nombre_ciudad) AS numero
FROM
    paises
        NATURAL JOIN ciudades
            NATURAL JOIN autores
                NATURAL JOIN publican
                    NATURAL JOIN discos
                        NATURAL JOIN canciones
                            NATURAL JOIN listas_spotify
GROUP BY
    decada,
    nombre_ciudad
 

Он вычисляет, сколько раз каждый город (из таблицы ciudades ) появляется в базе данных в зависимости от количества песен (из таблицы canciones ) по группам (из таблицы autores ), расположенным в этом городе, по десятилетиям (из таблицы listas_spotify , которая включает параметр даты).

Заказывая numero , я получаю такой столик:

 decada, nombre_pais, nombre_ciudad, numero
1980, Inglaterra, Londres, 23
1990, Inglaterra, Londres, 15
1980, Inglaterra, Mánchester, 11
2000, EEUU, Austin, 11
2000, EEUU, Nueva York, 10
1980, EEUU, Boston, 9
1980, EEUU, Nueva York, 8
1990, Inglaterra, Mánchester, 7
1990, Inglaterra, Oxford, 7
...
 

Если я напрямую загружу эту таблицу в PowerBI, легко создать такой график (отфильтрованный только для пяти крупных городов).:

График появления городов

Но я понятия не имею, как получить его из модели данных PowerBI с помощью DAX. Я не ожидаю полного решения своей проблемы, просто чтобы узнать, как связать таблицы, чтобы подсчитать количество элементов из одной в зависимости от параметров из другой, чтобы я мог воссоздать свой SQL-запрос с синтаксисом DAX.

Ответ №1:

Я бы создал таблицу слияния с помощью PowerQuery со всеми необходимыми полями, а затем сгруппировал по

Комментарии:

1. Я достиг этой окончательной таблицы, используя NATURALINNERJOIN() -так что теперь у меня есть много бессмысленных промежуточных таблиц в моей модели -, а затем СУММИРУЙТЕ() ее. Я проведу небольшое исследование по поводу слияния. Спасибо!

2. Сделайте все это в PowerQuery и проверьте сворачивание запросов docs.microsoft.com/en-us/power-query/power-query-folding Это позволит ему передать SQL обратно в БД, если вы хотите