-2

我为一家物流公司做 Power BI。想根据停止位置显示性能。数据目前是按订单 ID 列出的所有订单的表格,因此 -- ID、Rev $、Pickup Stop、Delivery Stop。幸运的是,一切都是两站式的负载。

我正在努力构建一个计算表,该表同时查看提货站和交货站,同时还尊重页面上设置的过滤器。我希望停靠表显示如下内容:停靠位置、X 取件、$X 取件收入、X 交付量、$X 交付收入。

我该怎么办?我尝试了多种方法,但每次它要么错过过滤器,要么一次只能处理一站。

谢谢!

当前数据
称之为订单
当前数据,称之为订单

我试图将
其命名为 Stops的计算表
我正在尝试制作的计算表,称之为 Stops

4

1 回答 1

0

在给定订单的情况下,创建Stops的一种方法是使用 Power Query,可通过Power BI 主页选项卡访问。Queries=>Transform Data

Table.Group函数是魔法发生的地方。不幸的是,它需要通过在高级编辑器中编码来完成,因为 UI 不提供这些自定义聚合。

  • 当 PQ 编辑器打开时:Home => Advanced Editor
  • 前三行应替换为您在自己的Orders表中阅读的任何内容。
  • 粘贴以下 M 代码的其余部分,以代替您自己查询中设置行下方的内容
  • 阅读评论并探索Applied Steps以了解算法

M代码

let
    //Input data and set datatypes
    //These lines should be replaced with whatever you need to 
    //set up your data table
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("bYzBCoMwEER/Zck5BxPRu1RaLJaW6qEQPIS4tEExoonQv+/a0oLQyw5vZnaUYuepxQmKnHFWO697uOKCQ0DiizVdGKHybiTKsbcLTs8PN1wxIZMooiR938z3evCawyFbKczeDhzq268qyBZpsg23f9+qJF+Skuwe1ui741CU/2djsmO53lJ3SFsth/3aPWrTzY7Kp4o1zQs=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t, Column3 = _t, Column4 = _t]),
    #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
    dataSource = Table.TransformColumnTypes(#"Promoted Headers",{
        {"Order ID", Int64.Type}, {"Total Revenue", Int64.Type}, 
        {"Pickup Stop", type text}, {"Delivery Stop", type text}}),

    //Unpivot to get single column of Stops
    #"Unpivoted Columns" = Table.UnpivotOtherColumns(dataSource, {"Order ID", "Total Revenue"}, "Attribute", "Stop"),

    //Group by stop and do the aggregations
    #"Grouped Rows" = Table.Group(#"Unpivoted Columns", {"Stop"}, {
        {"Orders Picked Up", (t)=> List.Count(List.Select(t[Attribute], each _ = "Pickup Stop" )), Int64.Type},
        {"Total Revenue Picked Up", (t)=> List.Sum(Table.SelectRows(t, each [Attribute]="Pickup Stop")[Total Revenue]), type number},
        {"Orders Delivered", (t)=> List.Count(List.Select(t[Attribute], each _ = "Delivery Stop" )), Int64.Type},
        {"Total Revenue Delivered", (t)=> List.Sum(Table.SelectRows(t, each [Attribute]="Delivery Stop")[Total Revenue]), type number}
        })
in
    #"Grouped Rows"

订单
在此处输入图像描述

停止
在此处输入图像描述

于 2021-08-26T18:32:59.460 回答