PowerBI DAX函数学习:TOPN

DAX中很实用的表函数:TOPN,返回表的前N行,具体用法如下:

 

这是个表函数,最后一个参数很有用,选择为1时,可以当作bottomN使用,所以DAX中并没有单独的这个函数。

 

紧接着就是大家最喜爱的牛刀小试环节:

1.模拟数据

2.建模》新表》表 2 = TOPN(5,'表','表'[数值],DESC)

 

不知道有没有朋友发现,明明是前五个,却只有四个输出。那么就可以推测,TOPN输出的是前N名输出的非重复数值,这点可要记住了

 

好了,最后贴上自己的demo资源:

https://download.youkuaiyun.com/download/qq_37319035/12047488

 

### Power BI 中 TOPN 函数的使用方法 TOPNDAX (Data Analysis Expressions) 的一个重要函数,主要用于返回指定数量或百分比的最大值记录集合。其语法如下: #### 语法结构 `TOPN(<number_of_records>, <table>, <column>, [<order>])` - `number_of_records`: 返回的记录数。 - `table`: 被操作的数据表名称。 - `column`: 进行排序依据的列。 - `[order]`: 可选参数,默认为降序排列 (`DESC`)。 以下是关于如何在 Power BI 中使用 TOPN 函数的具体示例和解释。 --- #### 示例场景:获取销售额最高的前 N 名客户 假设我们有一张名为 `Sales` 的销售数据表,其中包含以下字段: - CustomerName: 客户姓名 - SalesAmount: 销售金额 目标是从这张表格中提取销售额最高的前 5 名客户的列表。 ##### 步骤实现 定义一个新的度量值来应用 TOPN 函数: ```dax TopCustomers = CALCULATETABLE( VALUES(Sales[CustomerName]), TOPN(5, Sales, Sales[SalesAmount], DESC) ) ``` 上述代码的作用是基于 `SalesAmount` 列按降序排列,并选取前五条记录对应的客户名字[^1]。 --- #### 动态图表标题的应用实例 当需要创建动态显示顶部 N 条记录的可视化时,可以结合其他高级技术一起完成。例如,通过变量声明的方式灵活调整展示的数量范围。 下面的例子展示了如何利用 VAR 和 TOPN 结合生成动态筛选条件下的子集表: ```dax FilteredTable = VAR NumberOfSelectedDays = COUNTROWS('DateSelection') VAR SelectedDays = FILTER('Dates', 'Dates'[IsSelected]) RETURN CALCULATETABLE( ALL('Dates'), TOPN(NumberOfSelectedDays - 1, SelectedDays, 'Dates'[DateValue], ASC) ) ``` 这里的关键在于先统计选定日期总数并减去一天作为输入参数传递给 TOPN 函数,从而达到排除最后一天的效果[^3]。 --- #### RANKX 与 TOPN 组合运用技巧 除了单独使用外,还可以配合 RANKX 实现更复杂的业务需求。比如去除汇总行中的数值干扰情况。 考虑这样一个例子——我们需要排出各产品的销量排行但不希望看到总计那一行列入最终结果之中。此时可以通过增加一层逻辑判断达成目的: ```dax RankingWithoutTotalRow = IF ( ISBLANK([Product Name]), BLANK(), RANKX ( ALL ('Products'), SUM ('Products'[Quantity Sold]), , DESC, Skip ) ) ``` 接着再调用此自定义列参与后续过滤过程即可[^4]。 --- #### 数据差异处理注意事项 值得注意的是,在执行 UNION 或 EXCEPT 类型的操作过程中可能会遇到重复项问题。按照官方文档描述,“如果某行同时存在于两个源表里头的话那么它连同它的副本都不会被纳入到输出当中;而要是仅仅属于第一个表达式的部分则依旧保留下来。”因此实际开发期间务必留意此类细节以免影响分析准确性[^5]。 --- ### 总结 综上所述,POWER BI 提供的强大功能使得我们可以轻松构建各种类型的地理空间视图以及复杂查询语句。随着版本迭代更新速度加快,未来还将带来更多可能性等待探索发现[^2]!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值