PowerBI 有办法做财务付款表格吗?

Power Pivot 云天明 ⋅ 于 2019-01-25 11:15:21 ⋅ 最后回复由 云天明 2019-01-25 18:16:42 ⋅ 3056 阅读

我有很多订单数据,然后数据里面有的字段大概是:
['订单号'],['订单厂家'],['订单日期'],['发货日期'],['到货日期'],['总金额']
然后我们和不同的厂家签订的付款方式不同,比如说:
厂家A,我们和他签的合约是“下单付30%,剩下的70%到货后7天内付。”
厂家B,我们和他签的合约是“发货前付20%,剩下的80%到货后5天内付。”

现在的是任务是要做一个自动化报表,只要有订单数据进来,就自动识别 厂家是哪个,这个订单的 首款付款日期和金额尾款付款日期和金额,PowerBI有办法做到吗?我想了好几天都想不出来赶怎么做,希望有大神可以指点一下,感激不尽!

最佳答案
  • 焦棚子 微软 MVP
    2019-01-25 18:06:42

    @云天明
    第一就是条约规范

    file

    第二把这个连个表导入pq,然后做清洗。

    file

    第三说明:只是把你要的效果做出来了,由于对你的业务不是很清楚,pq写的有些冗余。参考吧。

    条约

    let
        源 = Excel.Workbook(File.Contents("C:\Users\admin\Desktop\finance.xlsx"), null, true){[Item="付款条约",Kind="Sheet"]}[Data],
        删除 = Table.SelectColumns(源,{"Column4", "Column5", "Column6", "Column7", "Column8", "Column9"}),
        标题 = Table.PromoteHeaders(删除, [PromoteAllScalars=true]),
        类型 = Table.TransformColumnTypes(标题,{{"厂家", type text}, {"首款方式", type text}, {"首款天数", Int64.Type}, {"首款比例", Int64.Type}, {"尾款方式", type text}, {"尾款天数", Int64.Type}})
    in
        类型

    订单

    let
        源 = Excel.Workbook(File.Contents("C:\Users\admin\Desktop\finance.xlsx"), true, true){[Item="订单",Kind="Sheet"]}[Data],
        类型 = Table.TransformColumnTypes(源,{{"订单号", Int64.Type}, {"订单日期", type date}, {"发货日期", type date}, {"到货日期", type date}, {"金额", type number}, {"厂家", type text}}),
        自定义 = Table.AddColumn(类型, "自定义", 
        each 
            let 
                dt=Table.SelectRows(条约, (T)=> (T[厂家] = [厂家])) ,
                sd=
                if dt[首款方式]{0}="下订单" then [订单日期]+#duration(dt[首款天数]{0},0,0,0)
                else if dt[首款方式]{0}="发货" then [发货日期]+#duration(dt[首款天数]{0},0,0,0)
                else if dt[首款方式]{0}="到货" then [到货日期]+#duration(dt[首款天数]{0},0,0,0)
                else [订单日期],
                sp= dt[首款比例]{0}*[金额]/100,
                ed=
                if dt[尾款方式]{0}="下订单" then [订单日期]+#duration(dt[尾款天数]{0},0,0,0)
                else if dt[尾款方式]{0}="发货" then [发货日期]+#duration(dt[尾款天数]{0},0,0,0)
                else if dt[尾款方式]{0}="到货" then [到货日期]+#duration(dt[尾款天数]{0},0,0,0)
                else [订单日期],
                ep=[金额]-sp
            in 
                [首款日期= sd ,
                首款=if sd =null then null else sp,
                尾款日期=ed,
                尾款=if ed =null then null else ep]),
        展开 = Table.ExpandRecordColumn(自定义, "自定义", {"首款日期", "首款", "尾款日期", "尾款"} ),
        类型2 = Table.TransformColumnTypes(展开,{{"首款日期", type date}, {"尾款日期", type date}, {"首款", type number}, {"尾款", type number}})
    in
        类型2
回复数量: 6
  • 焦棚子 微软 MVP
    2019-01-25 11:55:57

    很简单嘛,给个脱敏数据。一会就搞定了。
    你说的文字就已经把问题解决了。
    上案例。

  • 焦棚子 微软 MVP
    2019-01-25 17:22:03

    @云天明

    这个应该是你要的结果吧,就是一个数据清洗。还有没到建模的步骤。

    file

  • 云天明
    2019-01-25 17:50:07

    @焦棚子 咋做的,大哥教教我T.T

  • 焦棚子 微软 MVP
    2019-01-25 18:06:42

    @云天明
    第一就是条约规范

    file

    第二把这个连个表导入pq,然后做清洗。

    file

    第三说明:只是把你要的效果做出来了,由于对你的业务不是很清楚,pq写的有些冗余。参考吧。

    条约

    let
        源 = Excel.Workbook(File.Contents("C:\Users\admin\Desktop\finance.xlsx"), null, true){[Item="付款条约",Kind="Sheet"]}[Data],
        删除 = Table.SelectColumns(源,{"Column4", "Column5", "Column6", "Column7", "Column8", "Column9"}),
        标题 = Table.PromoteHeaders(删除, [PromoteAllScalars=true]),
        类型 = Table.TransformColumnTypes(标题,{{"厂家", type text}, {"首款方式", type text}, {"首款天数", Int64.Type}, {"首款比例", Int64.Type}, {"尾款方式", type text}, {"尾款天数", Int64.Type}})
    in
        类型

    订单

    let
        源 = Excel.Workbook(File.Contents("C:\Users\admin\Desktop\finance.xlsx"), true, true){[Item="订单",Kind="Sheet"]}[Data],
        类型 = Table.TransformColumnTypes(源,{{"订单号", Int64.Type}, {"订单日期", type date}, {"发货日期", type date}, {"到货日期", type date}, {"金额", type number}, {"厂家", type text}}),
        自定义 = Table.AddColumn(类型, "自定义", 
        each 
            let 
                dt=Table.SelectRows(条约, (T)=> (T[厂家] = [厂家])) ,
                sd=
                if dt[首款方式]{0}="下订单" then [订单日期]+#duration(dt[首款天数]{0},0,0,0)
                else if dt[首款方式]{0}="发货" then [发货日期]+#duration(dt[首款天数]{0},0,0,0)
                else if dt[首款方式]{0}="到货" then [到货日期]+#duration(dt[首款天数]{0},0,0,0)
                else [订单日期],
                sp= dt[首款比例]{0}*[金额]/100,
                ed=
                if dt[尾款方式]{0}="下订单" then [订单日期]+#duration(dt[尾款天数]{0},0,0,0)
                else if dt[尾款方式]{0}="发货" then [发货日期]+#duration(dt[尾款天数]{0},0,0,0)
                else if dt[尾款方式]{0}="到货" then [到货日期]+#duration(dt[尾款天数]{0},0,0,0)
                else [订单日期],
                ep=[金额]-sp
            in 
                [首款日期= sd ,
                首款=if sd =null then null else sp,
                尾款日期=ed,
                尾款=if ed =null then null else ep]),
        展开 = Table.ExpandRecordColumn(自定义, "自定义", {"首款日期", "首款", "尾款日期", "尾款"} ),
        类型2 = Table.TransformColumnTypes(展开,{{"首款日期", type date}, {"尾款日期", type date}, {"首款", type number}, {"尾款", type number}})
    in
        类型2
  • 云天明
    2019-01-25 18:16:42

    @焦棚子 谢谢,我研究一下(ฅ´ω`ฅ)

暂无评论~~
  • 请务必阅读并严格遵守《社区管理规范与使用说明》
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 发送表情,可用的 Emoji 见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板粘贴上传, 格式限制 - jpg, png, gif
  • 不支持上传附件,请尽可能用文字和图片将问题描述清楚,如实在需要上传附件,可上传到 共享网盘 后分享链接
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
Ctrl+Enter