excel - Excel - 电源查询 2016
问题描述
我从两个表中获取数据。
客户(包含客户 ID 和订单/资金总额
订单(包含客户 ID 和每个订单)
我创建了一个 Power Query,然后选择了“将查询合并为新的”选项。选择匹配的列(客户 ID)并选择选项:Left Outer(所有来自第一个和,从第二个匹配 => 所有来自客户表,匹配来自订单表)。然后我扩展了查询的最后一列,以包括我想要的订单表中的内容,从而在左侧生成下表。右边那个是我要的。问题是资金金额已经是每个客户的总数。我不需要分解每个订单的价值。我仍然需要显示的订单,但我不需要它们的值(只是每个客户的总数)。可以像右下角那样做吗?否则,总数就差远了。
解决方案
我认为您要做的是仅加入Customer
列中每个值的第一个实例。似乎没有任何功能或 GUI 元素允许您这样做(我查看了Power Query M 的参考文档,也许我错过了一些东西)。
为了复制您的数据,我从一些表开始(左表命名Customers
,右表命名Orders
):
然后我使用M
下面的代码(前几行只是为了从工作表中获取我的表格):
let
customers = Excel.CurrentWorkbook(){[Name = "Customers"]}[Content],
orders = Excel.CurrentWorkbook(){[Name = "Orders"]}[Content],
merged = Table.NestedJoin(orders, {"CUSTOMER"}, customers, {"CUSTOMER"}, "merged", JoinKind.LeftOuter),
indexColumn = Table.AddIndexColumn(merged, "Temporary", 0, 1),
indexes =
let
uniqueCustomers = Table.Distinct(Table.SelectColumns(indexColumn, {"CUSTOMER"})), // Want to keep as table
listOfRecords = Table.ToRecords(uniqueCustomers),
firstOccurenceIndexes = List.Accumulate(listOfRecords, {}, (listState, currentItem) =>
List.Combine({listState, {Table.PositionOf(indexColumn, currentItem, Occurrence.First, "CUSTOMER")}})
)
in
firstOccurenceIndexes,
expandSelectively =
let
toBoolean = Table.TransformColumns(indexColumn, {{"Temporary", each List.Contains(indexes, _), type logical}}),
tableOrNull = Table.AddColumn(toBoolean, "toExpand", each if [Temporary] then [merged] else null),
dropRedundantColumns = Table.RemoveColumns(tableOrNull, {"merged", "Temporary"}),
expand = Table.ExpandTableColumn(dropRedundantColumns, "toExpand", {"FUNDING"})
in
expand
in
expandSelectively
如果您的表名和列名与我的匹配(包括区分大小写),那么您可能只需将M
上面的所有代码复制粘贴到高级编辑器中并让它为您工作。否则,您可能需要根据需要进行调整。
这是我将查询加载到工作表时得到的。
可能有更好(更有效)的方法来做到这一点,但这就是我现在所拥有的。
推荐阅读
- angular - 如何在 Angular 9 中处理 ul li 的 mouseover 和 mouseout 事件
- python - Iron Python 设置
- adfs - 如何在 ADFS 服务器中为联合身份验证服务设置附加绑定以进行身份验证
- python - 检查矩阵/数组元素方式模整数的条件
- javascript - AWS - 在现有 React Web 应用程序上使用用户名和密码从现有 Cognito 用户池获取用户令牌
- reactjs - 从 Laravel 显示图像到 Html
- javascript - 如何使用带有任何组件的完整 css 代码的 javascript 编辑 css 样式
- java - 带 IAM 的 AWS MSK - 超时异常
- python - python用特殊字符分割一个字符串
- swift - VStack 子级填充(不扩展)其父级