标签: m

Power Query - 如果自定义函数计数

从这个问题开始

我想创建一个自定义函数,在其中传入一个表、一个列和值,并计算满足这些条件的所有行。

到目前为止我有

let 
    fCountif = (tbl as table, col as text, value as any) as number =>
    let
        select_rows = Table.SelectRows(tbl, each [col] = value),
        count_rows = Table.RowCount(select_rows)
    in
        count_rows
in
    fCountif
Run Code Online (Sandbox Code Playgroud)

但是我遇到了各种各样的问题。第一个是调用函数来测试它,当我为表名传入一个字符串时,它会向函数发送一个文字字符串,而不是将其转换为表。这可能只是通过查询编辑器按钮调用它时出现的问题,并且在我的其余 M 代码中使用该函数时应该会自行解决。

第二个是如何将col值传递到[col]函数的部分中。我已经看到了使用脂肪火箭其他例子[column name] <= col只是不能得到它的工作。

我正在努力了解函数,并且在 vba 中很舒服,所以如果你有任何提示,请大声说出来。这方面的文档很难获得。干杯。

m powerquery powerbi

2
推荐指数
1
解决办法
1936
查看次数

只保留字符串中的数字/删除所有非数字

我有一个字符串列,我只需要每个字符串中的数字,例如

A-123  -> 123
456    -> 456
7-X89  -> 789   
Run Code Online (Sandbox Code Playgroud)

如何在 PowerQuery 中做到这一点?

m powerquery powerbi

2
推荐指数
1
解决办法
3938
查看次数

查询中无法识别电源双开关

已使用以下代码创建自定义列,但它陷入表达式错误,无法识别 SWITCH 函数:

= Table.AddColumn(#"Removed Columns", "Empolyees", each SWITCH([Index],  
1, Empolyees = "Chris1",   
2, Empolyees = "Chris2",
3, Empolyees = "Chris3",
4, Empolyees = "Chris4", 
5, Empolyees = "Chris5",
6, Empolyees = "Chris6",
7, Empolyees = "Chris7",
8, Empolyees = "Chris8",
BLANK()
))
Run Code Online (Sandbox Code Playgroud)

我尝试过删除引号,更改列名,但都无济于事。请建议。提前致谢!

m dax powerbi powerbi-datasource powerbi-desktop

2
推荐指数
1
解决办法
6443
查看次数

电源查询 M IN 运算符

相当于INPower BI的 SQL运算符。就像在子句中一样:

where [Column1] IN ('Value1', 'Value2', 'Value3')
Run Code Online (Sandbox Code Playgroud)

我正在寻找 M 解决方案(不是 DAX)。

m powerquery powerbi

2
推荐指数
1
解决办法
6339
查看次数

Power BI 通过 LIKE 子句连接两个表

如何在 Power BI 中使用 LIKE 子句连接两个表?假设我们有两个表:

+------------------+  +--------+
|    Messy_Name    |  |  Tag   |
+------------------+  +--------+
| red apple        |  | apple  |
| apple very tasty |  | banana |
| good apple green |  +--------+
| yellow banana    |            
| banana split     |            
+------------------+            
Run Code Online (Sandbox Code Playgroud)

我们希望将它们加入到 PBI M 或 DAX(最好是两者)中,模仿以下 SQL 查询:

select
  a.Messy_Name
 ,b.Tag
from FactTable a
outer apply
    (
    select top 1
     b.Tag
    from TagList b
    where a.Messy_Name like '%'+b.Tag+'%'
    order by b.Tag
    ) b
Run Code Online (Sandbox Code Playgroud)

所以期望的结果是:

+------------------+--------+ …
Run Code Online (Sandbox Code Playgroud)

m dax powerquery powerbi

2
推荐指数
1
解决办法
4035
查看次数

PowerBI:同时将类型更改为多列

我在 Power BI 的 Power Query 编辑器中工作。我有一个名为的表Source,其中列的顺序如下:

| Country | Attribute | 2014 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 |
Run Code Online (Sandbox Code Playgroud)

您可以看到下图中的表格:

图片 我想将列类型更改为从“2014”到“2021”的每一列。我知道可以使用以下命令分别表示每一列:

= Table.TransformColumnTypes(
    Source,
    {{"2014", type number}, {"2015", type number}, {"2016", type number}, {"2017", type number}, {"2018", type number}, {"2019", type number}, {"2020", type number}, {"2021", type number}}
  )
Run Code Online (Sandbox Code Playgroud)

但我想设置一个以自动化方式执行此操作的命令。我正在尝试执行以下操作:

= Table.TransformColumnTypes(
    Source,
    each( {List.Range(Table.ColumnNames(Source), 2, List.Count(Table.ColumnNames(Source)) as number),
    type number} )
  )
Run Code Online (Sandbox Code Playgroud)

所以我试图Table.TransformColumnTypes为“每个”值重复命令:

List.Range(Table.ColumnNames(Source), 2, List.Count(Table.ColumnNames(Source)) …
Run Code Online (Sandbox Code Playgroud)

columnname m powerquery powerbi

2
推荐指数
1
解决办法
3912
查看次数

电源 BI。删除重复项但保留空值

在 Power BI 中,我需要删除列的重复项,但保留空值,因为它们处于“待处理”状态。有没有办法使用 DAX 或查询编辑器来完成?

m dax powerquery powerbi

2
推荐指数
1
解决办法
3611
查看次数

PowerQuery 将记录列表转换为分隔字符串

鉴于下面的 JSON,我尝试将其加载到 Excel 中。我想将“评级”部分格式化为单个分​​隔字符串/单元格。我很新,PowerQuery所以我正在努力做到这一点。我已经设法将记录列表格式化为其自己的表,但是将其连接成一个字符串并将其添加回我的源表中是我绘制空白的地方。任何帮助,将不胜感激。

强大查询

let
    Source = Json.Document(File.Contents("C:\filename.json")),
    Ratings1 = Source[Ratings],
    #"Converted to Table" = Table.FromList(Ratings1, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    LastStep = Table.ExpandRecordColumn(#"Converted to Table", "Column1", { "Source", "Value" })
in
    LastStep
Run Code Online (Sandbox Code Playgroud)

JSON

{
    "Title": "Iron Man",
    "Year": "2008",
    "Rated": "PG-13",
    "Ratings": [{
            "Source": "Internet Movie Database",
            "Value": "7.9/10"
        }, {
            "Source": "Rotten Tomatoes",
            "Value": "93%"
        }, {
            "Source": "Metacritic",
            "Value": "79/100"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

最终,像下面这样的东西将是理想的。

在此输入图像描述

m powerquery

2
推荐指数
1
解决办法
5646
查看次数

Excel Power Query - 通过比较两列来过滤行

我在 Excel 中有一个表,它在 Power Query 编辑器中自外部连接以创建对

Table named Items
-----------------
Item   Value
A      1
B      2
C      3
Run Code Online (Sandbox Code Playgroud)

我创建了一个来自表/范围查询,该查询已关闭并加载到名为“Items”的连接

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Item", type text}, {"Value", Int64.Type}})
in
    #"Changed Type"
Run Code Online (Sandbox Code Playgroud)

然后进行另一个查询,即自反交叉连接

let
    Source = Items,
    #"Added Custom" = Table.AddColumn(Source, "Custom", each Items),
    #"Expanded Custom" = Table.ExpandTableColumn(#"Added Custom", "Custom", {"Item", "Value"}, {"Custom.Item", "Custom.Value"}),
    #"Renamed Columns" = Table.RenameColumns(#"Expanded Custom",{{"Custom.Item", "Item.2"}, {"Custom.Value", "Value.2"}, {"Value", "Value.1"}, {"Item", "Item.1"}}),
    #"Added Custom1" = Table.AddColumn(#"Renamed Columns", "Value", each [Value.1]*[Value.2])
in
    #"Added …
Run Code Online (Sandbox Code Playgroud)

excel m powerquery

2
推荐指数
1
解决办法
4850
查看次数

Power Query - 列作为单独的不相关列表(来自未透视数据)

如果我有一个像这样的简单的未透视列表:

名称 科目
约翰 英语
山姆 艺术
弗雷德 生物学
约翰 生物学
艾玛 艺术
麦克风 生物学

如何创建这样的列表,其中行彼此无关,并且每列几乎都是一个单独的列表?旋转不起作用 - 这可能吗?

艺术 生物学 英语
艾玛 弗雷德 约翰
山姆 约翰 无效的
无效的 麦克风 无效的

谢谢

excel pivot m powerquery

2
推荐指数
1
解决办法
82
查看次数