在Power BI中的M langauge中执行每个子查询

时间:2017-05-04 21:28:24

标签: mysql powerbi powerquery m

我正在将各种风格的SQL转换为Power BI。我有以下查询/代码,我试图用M语法表示:

while($row = $result->fetch_assoc())
{
    $rate = SELECT CAD FROM ExchangeRate WHERE date<='" . $row['d'] . "' ORDER BY date DESC LIMIT 1
    $monthlySalesUSD += $daily/$rate;
}

基本上,它会查询特定交易日期的汇率,然后将当天的销售数字除以当天的汇率。

在Power BI Advanced Query中,我定义了以下摘录:

    #"Added Custom1" = Table.AddColumn(#"Changed Type", "SalesUSD", each [Inserted Rounding] / List.First(Table.Column(Table.First(Table.SelectRows(Table.Sort(warehouse_ExchangeRate,{{"date", Order.Descending}}),each [date] <= #"Changed Type"[DATELASTFULFILLMENT])),"CAD"))),

#"Changed Type"包含每日交易总数和日期。总计在[Inserted Rounding],日期在[DATELASTFULFILLMENT]。所以基本上,对于 #"Changed Type"中的每一行,我想得到日期,查看汇率,然后将销售额除以该汇率。我似乎无法获得的是如何从每个当前行中提取日期。

1 个答案:

答案 0 :(得分:1)

我找到了答案,感谢MarcelBeug指出了我正确的方向。我发现this post让我知道你可以在添加列中做lambdas。这给了我以下步骤:

#"Fixed Join" = Table.AddColumn(#"Inserted Date", "ExchangeRate",
        (Earlier) => Table.SelectRows(warehouse_ExchangeRate,
                     each [date] <= Earlier[Date])),
#"Expanded ExchangeRate" = Table.ExpandTableColumn(#"Fixed Join", "ExchangeRate", {"CAD"}, {"CAD"})

这给了我最接近的比赛,小于销售日期,然后我可以将其分成销售给我USD值,然后从中选择我需要的列。