You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerBI中用DAX复现MySQL多表关联分组计数查询

问题描述

我已经将一个MySQL数据库导入PowerBI,数据模型如下图所示:
PowerBI数据模型

我希望使用DAX复现如下MySQL查询:

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

该查询的逻辑为:通过paises、ciudades、autores、publican、discos、canciones、listas_spotify多表自然连接,按年代(由含日期参数的listas_spotify表的ano字段取前3位拼接0得到decada字段)、城市分组,统计每个城市(来自ciudades表)对应所在城市的乐队(来自autores表)创作的歌曲(来自canciones表)的数量,输出decada、nombre_pais、nombre_ciudad、numero四个字段,按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实现该逻辑,不需要完整的解决方案,仅想了解如何关联表格,实现基于另一张表的参数统计某张表的项数,从而可以用DAX语法复现上述SQL查询。


解答

PowerBI的数据模型默认会基于已经建立的表间关系自动做筛选传递,不需要像SQL一样手动写JOIN语句,核心逻辑对应如下:

  • 首先处理年代字段:在listas_spotify表中新建计算列decada,公式为CONCATENATE(LEFT(listas_spotify[ano], 3), "0"),和SQL中concat(substring(ano,1,3),0)的逻辑完全一致。
  • 表关联逻辑不用手动实现:只要你导入数据时,各表之间的外键关系已经正确建立(即你数据模型里的连线),DAX会自动沿paises -> ciudades -> autores -> publican -> discos -> canciones -> listas_spotify的关系路径传递筛选条件,等价于SQL里的自然连接效果。
  • 统计歌曲数量直接写度量值即可:新建度量值numero = COUNT(canciones[<表内非空字段名>]),选择canciones表的主键字段计数即可。当你把decada、paises[nombre_pais]、ciudades[nombre_ciudad]三个字段放到可视化对象的维度栏时,DAX会自动按这三个维度分组统计对应符合条件的歌曲数量,和SQL的GROUP BY逻辑效果完全相同。

如果需要直接生成和SQL输出完全一致的计算表,也可以用SUMMARIZECOLUMNS函数实现,本质还是基于上述的自动关联+分组统计逻辑。


内容的提问来源于stack exchange,提问作者Javier Blanco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:45:04