Power BI / Power Query [M代码] - 根据源添加自定义列

时间:2018-05-29 13:42:44

标签: powerbi powerquery navision m

IF ([Cost Type]="REVISED") THEN (IFNULL([Gis Labour],0)+IFNULL([Gis Im And E Labour],0)+IFNULL([Gis Im And E Non Labour],0)+IFNULL([OTHER_DIVISIONS_EXPENSE],0))

ELSEIF ([Cost Type]="ORIGINAL") THEN (IFNULL([Gis Labour],0)+IFNULL([Gis Im And E Labour],0)+IFNULL([Gis Im And E Non Labour],0)+IFNULL([OTHER_DIVISIONS_EXPENSE],0))

END 

使用上述代码从Microsoft Dynamics Navision中的多个实体(公司)提取数据(以Company1为例)。

尝试根据公司名称添加具有唯一标识符的自定义列。

let
Source = Sql.Databases("xx.x.x.x"),
zzz_LIVE = Source{[Name="NAVzzz_LIVE"]}[Data],
#"COMPANY1$G_L Entry" = NAVzzzLIVE{[Schema="dbo",Item="COMPANY1$G_L Entry"]}[Data],

是否可以通过M代码实现这一目标?

非常感谢。

2 个答案:

答案 0 :(得分:1)

这样的事情怎么样?

let
    Source = Sql.Databases("xx.x.x.x"),
    zzz_LIVE = Source{[Name="NAVzzz_LIVE"]}[Data],
    Name1 = "Company1",
    Name2 = "Company2",
    [...]
    #"COMPANY1" = NAVzzzLIVE{[Schema="dbo",Item=Name1&"$G_L Entry"]}[Data],
    #"Added Custom1" = Table.AddColumn(#"COMPANY1", "Company", each Name1),
    #"COMPANY2" = NAVzzzLIVE{[Schema="dbo",Item=Name2&"$G_L Entry"]}[Data],
    #"Added Custom2" = Table.AddColumn(#"COMPANY2", "Company", each Name2),
    [...]
    Table.Combine(#"Added Custom1",#"Added Custom2",[...])

那样你

答案 1 :(得分:0)

我无法对此进行测试,但我认为它可能适合您:

let 
    Source = Sql.Databases("xx.x.x.x"), 
    zzz_LIVE = Source{[Name="NAVzzz_LIVE"]}[Data],
    #"COMPANY1$G_L EntrySrc" = NAVzzzLIVE{[Schema="dbo",Item="COMPANY1$G_L Entry"]},
    #"COMPANY1$G_L Entry" = #"COMPANY1$G_L EntrySrc"[Data],
    #"Added Custom" = Table.AddColumn(#"COMPANY1$G_L Entry", "Company",   
    each Record.Field(#"COMPANY1$G_L EntrySrc", "Item")) 
in
    #"Added Custom"

我将导航步骤(#" COMPANY1 $ G_L Entry")分成两部分,以便我可以引用其记录。否则,[数据]会妨碍。

如果我更正,它会将COMPANY1 $ G_L条目返回到您的新列。您可以将Record.Field(#"COMPANY1$G_L EntrySrc", "Item")更改为Text.Before(Record.Field(#"COMPANY1$G_L EntrySrc", "Item"), "$G_L"),只返回COMPANY1。