我想创建一个自定义函数,在其中传入一个表、一个列和值,并计算满足这些条件的所有行。
到目前为止我有
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 中很舒服,所以如果你有任何提示,请大声说出来。这方面的文档很难获得。干杯。
我有一个字符串列,我只需要每个字符串中的数字,例如
A-123 -> 123
456 -> 456
7-X89 -> 789
Run Code Online (Sandbox Code Playgroud)
如何在 PowerQuery 中做到这一点?
已使用以下代码创建自定义列,但它陷入表达式错误,无法识别 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)
我尝试过删除引号,更改列名,但都无济于事。请建议。提前致谢!
相当于INPower BI的 SQL运算符。就像在子句中一样:
where [Column1] IN ('Value1', 'Value2', 'Value3')
Run Code Online (Sandbox Code Playgroud)
我正在寻找 M 解决方案(不是 DAX)。
如何在 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) 我在 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) 在 Power BI 中,我需要删除列的重复项,但保留空值,因为它们处于“待处理”状态。有没有办法使用 DAX 或查询编辑器来完成?
鉴于下面的 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)
最终,像下面这样的东西将是理想的。
我在 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) 如果我有一个像这样的简单的未透视列表:
| 名称 | 科目 |
|---|---|
| 约翰 | 英语 |
| 山姆 | 艺术 |
| 弗雷德 | 生物学 |
| 约翰 | 生物学 |
| 艾玛 | 艺术 |
| 麦克风 | 生物学 |
如何创建这样的列表,其中行彼此无关,并且每列几乎都是一个单独的列表?旋转不起作用 - 这可能吗?
| 艺术 | 生物学 | 英语 |
|---|---|---|
| 艾玛 | 弗雷德 | 约翰 |
| 山姆 | 约翰 | 无效的 |
| 无效的 | 麦克风 | 无效的 |
谢谢