Power Query追加与合并处理不同关系。跨境订单报表需要先确认订单和商品行粒度,避免一对多展开重复销售金额,并核对去重、日期、编号和币种口径。
一个跨境团队经营几家店铺,月底导出销售表、退款表和商品资料,再做成一份经营报表,这个需求很普通。问题往往出在“合并”二字:把两个月的订单接在一起,和给订单补上商品信息,并不是同一种操作;退款明细看起来也能按订单号关联,但关联以后销售金额可能被重复带出来。
Power Query可以减少反复复制、粘贴和整理表格的工作,却不会替卖家理解每一行代表什么。它按选择的字段和规则执行,哪怕结果看起来很整齐,数字也不一定就是经营者想统计的数字。使用之前,先确定报表粒度、来源和计算含义,比先找一个“万能合并模板”更有用。
本文用自拟的简化订单说明几个常见关系,不涉及某家平台实际账单,也没有把假设金额当成真实费率。卖家应结合自己导出的字段和口径处理,尤其不要在多个平台之间只凭列名猜测业务含义。
追加订单与关联展开的不同报表关系原创概念插画
假设一家店铺导出9月与10月的订单明细,两份表的每一行都代表一条订单商品记录,需要放到一起统计。这更接近Power Query里的追加查询,也就是Append。微软的追加说明介绍,追加会把多张表的内容放到一张表中,列按列名对应,而不是按照原表的列位置对应。
因此,9月表的数量在第四列、10月表在第六列,只要列名与含义已经对齐,位置变化本身不是主要问题。相反,两份表都把金额放在第五列,却一份叫Amount、另一份叫Sales Amount,追加不会因为位置相同就自动认定是同一个字段。缺少对应列的部分会出现空值。
但统一列名也有前提。某份导出中的Amount可能是商品销售金额,另一份可能含运费或折扣。卖家先读懂字段,再决定怎样映射到统一报表;不能为了让追加结果整齐,直接把所有带“金额”的列改成同一个名字。列名相同,只说明工具知道往哪里放,不能证明放进去的数据可直接比较。
处理多店铺资料时,可以在追加前加入店铺、平台、站点、币种和来源文件等信息。只要报表用途需要这些维度,就应让它们跟着每一行走。等到多份资料合到一起以后,再用记忆判断某笔订单来自哪家店,通常已经太晚。来源字段也有助于发现同一份文件是否重复导入。
假设订单明细里有SKU,希望补上商品名称与内部分类,应考虑按SKU关联商品资料。这更接近合并查询,也就是Merge。微软的合并概览说明,可以根据一列或多列的匹配值连接两张表,并选择不同的连接方式。
这里不要求两边的列名完全一样。一边叫Seller SKU、另一边叫内部货号,只要业务上确实能匹配,就可以选择这两列。但匹配列的数据类型需要一致,内容也要按实际规则对应。名称相似的两个字段,如果一个是平台商品ID、另一个是商家SKU,就不能拿来代替。
多个店铺使用同一套SKU时,还需要判断商品资料是否在店铺之间通用。如果各店独立编号,同一个SKU文字可能指向不同商品,关联条件就不能只有SKU。可以把店铺和SKU一起作为匹配条件。选择多列时,两张表的选取顺序要一致:第一列对第一列,第二列对第二列,而不是工具自动根据中文意思重新排列。
报表目的也决定连接方式。若要保留全部订单,同时补充匹配到的商品资料,左外连接符合这种需求;若只保留两边都匹配的记录,内连接可能把未找到商品资料的订单排除。后一种结果不一定是工具出错,而可能是选择的规则确实如此。卖家不能仅因总行数下降,就认定这些订单应被删除。
一个容易被忽略的动作是展开。合并得到的匹配内容通常位于新的表列里,把相关字段展开后,才会出现在普通报表列中。微软对表列展开的说明表明,展开可以把内部表变成多行、多列。它并没有承诺每条原记录永远只留下原来的一行。
用一个自拟例子看得更清楚:订单表中只有一条订单商品记录,销售额100欧元;另一张表中,与这条记录匹配的备注有两条。展开两条备注以后,原来的100欧元可能在两行中分别出现。此时直接对销售额求和,会得到200欧元,但并没有发生第二笔销售。
所以,关联前要知道右侧表的匹配条件是否唯一。商品主资料通常希望一组匹配条件只对应一条;如果同一SKU列出了两个版本,卖家应先确定哪一版在当前报表中有效。不能指望展开操作替团队决定,也不能在看见金额翻倍以后,简单除以二掩盖所有问题。
右侧出现多条记录有时是合理业务。一个订单有多次发货、一件商品有多条标签、一笔付款有多个处理记录,都可能是真实的一对多关系。可以单独保留这些明细,也可以按明确目的汇总后再关联。选择哪种做法,取决于要分析销售、物流还是资金记录。把不同明细强行压成一张平表,才是重复计算容易出现的地方。
订单粒度不止一种。有的表一行就是一个订单,有的表一行是一件商品,有的则记录商品数量与行金额。退款表也可能一行一笔退款,或者一行对应退回的一件商品。合并前,两张表应分别写清每一行代表什么。
假设订单A含两条商品行,金额分别60欧元和40欧元;退款明细有两条,分别退10欧元和15欧元。如果只按订单号把两个明细表关联并展开,两条商品行都可能匹配到两条退款行,形成四行。直接求和会把销售额算成200欧元、退款算成50欧元,而这笔订单原本销售额100欧元、退款25欧元。
如果目的只是看订单层面的销售与退款,可以先分别按同一订单范围汇总,再在订单层面关联。若目的是看哪件商品退了多少,则应寻找真实的商品行关联字段,按原始资料核对。不能把订单层面的退款平均摊给所有商品后,称为平台提供的商品退款结果。分摊可以作为内部分析方法,但规则应由团队明确并注明。
同样,运费、订单优惠和支付费用可能位于订单层,而商品金额位于商品行层。把这些字段带到每条商品行以后,后续汇总要明确哪些只计一次,哪些按既定规则分摊。否则商品越多的订单,统计出来的运费或费用反而越高,形成一个很难仅凭总额发现的偏差。
看到重复订单号,很多人会先点删除重复项。但一个订单有两件商品,订单号出现两次是正常的;如果只按订单号去重,就可能删掉其中一条真实商品行。判断重复需要与报表粒度对应,不能因为某一列相同就认定整行冗余。
微软关于重复值的说明也提示,Power Query区分文本大小写,删除重复项时并不保证保留重复记录中的第一条。因此,“先按更新时间降序,再一键去重,就一定得到最新状态”不应作为未经验证的通用规则。
处理订单快照时,需要明确更新时间、记录来源和有效状态,再按确定的选择规则取记录。处理日常新增流水时,则要看是否重复导入了相同流水。两种情况不能共用一条“相同订单号只保留一个”的规则。尤其是订单状态被多次更新的资料,删除记录和选择当前有效版本,是两件不同的事。
SKU的大小写也应按真实编号规则处理。若内部货号区分大小写,就不能为了让匹配变多而全部转成大写;如果业务已经确认大小写没有区别,可以规范后再处理。清理动作应服从商品编号规则,不能反过来让报表清理改变商品身份。
Power Query有不同的数据类型,但类型设置也需要经营含义支撑。微软的数据类型介绍区分文本、数值与日期等类型。订单编号里有数字,并不意味着它应该参与数值运算。前导零有意义的编号,应从原始导入环节保持文本含义,不能等字符已经丢失以后,指望改回文本自动恢复。
日期也应确认指哪一个业务环节。下单、支付、发货、退款和结算日期,可以落在不同月份。9月下单、10月退款的订单,销售分析和退款分析需要分别使用对应日期,而不是把合并后出现的任意一个日期列改名为“日期”供所有报表使用。跨时区导出还要确认统计日的定义。
金额字段应保留币种。自拟例子中,100欧元和100英镑不能仅因都是数字100,就合成一项200的“总销售额”。如果团队需要换算成统一币种,应明确汇率来源、适用日期和内部换算口径,并保留原币金额。换算后的经营分析数字,也不自动等于银行实际结算到账金额。
退款正负号需要先核对。一份报表用正数表示退款金额,另一份用负数冲减销售,合并以后不能直接套同一条减法。来源不同的记录可以整理成统一计算口径,但应保留能够解释转换的字段和规则。结果表越简洁,前面的口径越要清楚。
报表能刷新成功,只代表查询步骤得到了结果。卖家还可以在关键阶段核对行数、按币种分开的金额和未匹配记录。追加后,是否包含预期文件;关联后,行数是否因一对多关系增加;过滤后,是否排除了真实订单;退款汇总后,是否仍能追到原记录,这些检查都有具体业务意义。
新月份的导出列名发生变化,也可能让原来的查询不再按预期处理。不要因为文件来自同一平台,就假定字段永远不变。出现空列或不匹配时,应先看原始字段与处理步骤,不宜统一把空值补成零。没有匹配到商品资料,与商品售价真的为零,并不是同一种信息。
团队可以给最终报表保留一份简短口径说明:一行代表什么、覆盖哪些店铺、使用哪种日期、销售和退款如何计算、哪些记录尚未匹配。这样运营换人、增加新店或交给财务复核时,不必从一串查询步骤里猜业务意思。
Power Query适合把已经讲清楚的整理规则反复执行。跨境卖家先分清追加与关联,先把订单、商品行、退款和结算各自的层次理顺,刷新就能节省工作;如果这些关系含混,工具只会更快地生成一份看似完整的错误报表。
声明:本文系作者独立观点,不代表ESG跨境立场。文中涉及的平台规则、费率及出海政策具有时效性,实际运营请以平台官方最新公布为准。如有版权争议、内容勘误或业务交流,欢迎随时与我们联系。
二维码加载中...
使用微信扫一扫登录
使用账号密码登录
平台顾问
微信扫一扫
马上联系在线顾问
小程序
ESG跨境小程序
手机入驻更便捷
返回顶部