我有一张包含 2 列的 UPS 表
地点 | 维护_1 | 维护_2 |
---|---|---|
城市1 | 是的 | 无 |
城市2 | 是的 | 是的 |
城市3 | 不 | |
城市4 | 是的 | 不 |
我需要从 2 个 Maint_1 和 Maint_2 列中计算未进行维护的城市的百分比( Power BI 中的度量),忽略“n/a”和空/无值。
在上表中,“无维护的城市百分比” = 2/6 = 33.33
分子 = 2 (否 +否)
除数 = 6(是 + 是 + 否 + 是 +是+否)
我在表格 UPS 中有 2 列,如下所示
Location 1st Service Age 2nd Service Age
town1 3 0
town2 5 2
town3 6 0
town4 0 0
town5 2 1
如何计算(测量)两列的平均年龄,忽略 0 和切片器。对于上述问题,答案应该是 19/6 = 3.17,如果全为零,则给出 0.00
先感谢您
我正在使用 Power Automate 查询 Power BI 数据集。
查询工作正常 - 但是当我检查输出的长度是否> 0(这样我可以确定是否发送通知电子邮件)时,我收到错误:
无法处理第 0 行和第 0 列处操作“条件”的模板语言表达式:“模板语言函数“length”要求其参数为数组或字符串。提供的值类型为“对象”。有关使用详情,请参阅https://aka.ms/logicexpressions#length。”
我的流程设置如下:
我的条件设置如下:
...错误显示如下:
我也尝试过:
长度(输出('Run_a_query_against_a_dataset')?['body/value'])
和
长度(主体('针对数据集运行查询'))
有人能看到我做错什么吗 - 我只是想在发送不必要的电子邮件之前检查“针对数据集运行查询”的长度。
感谢您的帮助,
标记
Power BI 的 DAX 中是否可以有用户定义的函数?
当绘制像这样的散点图 + 围绕应该分组在一起的点的矩形时,Deneb(Vega-Lite)规范会是什么样的?
以下代码创建散点图,但我不确定如何创建矩形。
{
"data": {
"values": [
{"Average": 6.01,"Groups": "Group1","Index": 6,"Date": "2023-09-16"},
{"Average": 13.21,"Groups": "Group1","Index": 8,"Date": "2023-11-04"},
{"Average": 3.63,"Groups": "Group1","Index": 8,"Date": "2023-12-23"},
{"Average": 5.91,"Groups": "Group1","Index": 7,"Date": "2024-02-10"},
{"Average": 6.19,"Groups": "Group1","Index": 10,"Date": "2024-03-30"},
{"Average": 3.97,"Groups": "Group1","Index": 10,"Date": "2024-05-18"},
{"Average": -1.52,"Groups": "Group1","Index": 10,"Date": "2024-07-06"},
{"Average": 1.28,"Groups": "Group1","Index": 10,"Date": "2024-08-24"},
{"Average": 3.39,"Groups": "Group1","Index": 10,"Date": "2024-10-15"},
{"Average": 1.21,"Groups": "Group1","Index": 23,"Date": "2024-12-03"},
{"Average": -0.13,"Groups": "Group1","Index": 15,"Date": "2025-01-21"},
{"Average": 4.49,"Groups": "Group1","Index": 16,"Date": "2025-03-11"},
{"Average": 34.97,"Groups": "Group2","Index": 6,"Date": "2023-09-16"},
{"Average": 25.14,"Groups": "Group2","Index": 8,"Date": "2023-11-04"},
{"Average": 27.59,"Groups": "Group2","Index": 8,"Date": "2023-12-23"},
{"Average": 27.2,"Groups": "Group2","Index": 7,"Date": "2024-02-10"},
{"Average": 23.91,"Groups": "Group2","Index": 10,"Date": "2024-03-30"},
{"Average": 26.29,"Groups": "Group2","Index": 10,"Date": "2024-05-18"},
{"Average": 26.43,"Groups": "Group2","Index": 10,"Date": "2024-07-06"},
{"Average": 25.21,"Groups": "Group2","Index": 10,"Date": "2024-08-24"},
{"Average": 25.51,"Groups": "Group2","Index": 10,"Date": "2024-10-15"},
{"Average": 38.46,"Groups": "Group2","Index": 23,"Date": "2024-12-03"},
{"Average": 46.44,"Groups": "Group2","Index": 15,"Date": "2025-01-21"},
{"Average": 56.63,"Groups": "Group2","Index": 16,"Date": "2025-03-11"},
{"Average": 17.39,"Groups": "Group3","Index": 6,"Date": "2023-09-16"},
{"Average": 9.15,"Groups": "Group3","Index": 8,"Date": "2023-11-04"},
{"Average": 7.46,"Groups": "Group3","Index": 8,"Date": "2023-12-23"},
{"Average": 6.62,"Groups": "Group3","Index": 7,"Date": "2024-02-10"},
{"Average": 4.15,"Groups": "Group3","Index": 10,"Date": "2024-03-30"},
{"Average": 5.52,"Groups": "Group3","Index": 10,"Date": "2024-05-18"},
{"Average": 6.08,"Groups": "Group3","Index": 10,"Date": "2024-07-06"},
{"Average": 5.54,"Groups": "Group3","Index": 10,"Date": "2024-08-24"},
{"Average": 5.77,"Groups": "Group3","Index": 10,"Date": "2024-10-15"},
{"Average": 5.23,"Groups": "Group3","Index": 23,"Date": "2024-12-03"},
{"Average": 4.83,"Groups": "Group3","Index": 15,"Date": "2025-01-21"},
{"Average": 9.56,"Groups": "Group3","Index": 16,"Date": "2025-03-11"
}
]
},
"layer": [
{
"mark": {
"type": "point"
},
"encoding": {
"y": {
"field": "Average",
"type": "quantitative",
"title": null
},
"x": {
"field": "Date",
"type": "ordinal",
"title": null
},
"color": {
"field": "Groups",
"type": "nominal"
},
"shape": {
"field": "Groups"
}
}
},
{
"mark": {
"type": "rule",
"stroke": "black",
"strokeWidth": 1
},
"encoding": {
"x": {
"field": "MinDate",
"type": "ordinal"
}
},
"transform": [
{
"aggregate": [
{
"op": "min",
"field": "Date",
"as": "MinDate"
}
],
"groupby": ["Index"]
},
{
"calculate": "datum.MinDate - 1",
"as": "MinDate"
}
]
},
{
"mark": {
"type": "rule",
"stroke": "black",
"strokeWidth": 1
},
"encoding": {
"x": {
"field": "MaxDate",
"type": "ordinal"
}
},
"transform": [
{
"aggregate": [
{
"op": "max",
"field": "Date",
"as": "MaxDate"
}
],
"groupby": ["Index"]
},
{
"calculate": "datum.MaxDate + 1",
"as": "MaxDate"
}
]
}
]
}
此代码返回以下 plo,并且 x 轴中的日期看起来不太好并且它有一个 NaN。
是否可以从垂直线中移除 x 轴并仅保留点中的 x 轴?
geom_mark_rect
在 R 中创建所需的输出。使用 R 包中的函数自动创建矩形ggforce
。它基于Index
列。
我可以使用 R visual 在 Power BI 中创建这个图,但速度很慢。
require("ggplot2")
library(ggplot2)
require("ggforce")
library(ggforce)
gt_shape <- 1:length(unique(dataset$Groups))
gt_ymax <- ceiling(max(dataset$Average) + (0.15 * max(dataset$Average)))
gt_ymin <- floor(min(dataset$Average) - (0.15 * min(dataset$Average)))
ggplot(dataset, aes(x = Date, y = Average, group = as.character(Index))) +
geom_point(aes(shape = Groups, color = Groups, fill = Groups), stroke = 1, na.rm = TRUE) +
geom_mark_rect(show.legend = FALSE) +
theme_minimal() +
ylim(gt_ymin, gt_ymax) +
labs(
y = "",
x ="Date"
) +
scale_shape_manual(values = gt_shape) +
scale_colour_viridis_d(option = "turbo") +
scale_fill_viridis_d(option = "turbo", guide = "none") +
theme(
legend.position = "bottom",
text = element_text(colour = "black"),
axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1)
)
谢谢。
想象一下我有一张“交易”表
包含以下列:
列名 | 数据类型 |
---|---|
运输编号 | ID |
顾客 | 细绳 |
預約日期 | 日期时间 |
数量 | 漂浮 |
活动 | 细绳 |
以及以下行
运输编号 | 顾客 | 預約日期 | 数量 | 活动 | 预期的 | 措施 | 柱子 |
---|---|---|---|---|---|---|---|
1 | 阿尔伯特 | 03-24-23 | 100 | 一个 | 真的 | 错误的 | 真的 |
2 | 阿尔伯特 | 03-27-23 | 50 | 一个 | 错误的 | 错误的 | 真的 |
3 | 阿尔伯特 | 03-29-23 | 二十五 | 一个 | 错误的 | 错误的 | 错误的 |
4 | 苏西 | 03-27-23 | 50 | 一个 | 真的 | 真的 | 真的 |
5 | 鲍里斯 | 03-27-23 | 500 | 一个 | 真的 | 真的 | 真的 |
6 | 玛莎 | 03-27-23 | 10 | 一个 | 真的 | 真的 | 真的 |
7 | 安娜 | 03-21-23 | 50 | 一个 | 真的 | 错误的 | 真的 |
8 | 安娜 | 03-22-23 | 50 | 一个 | 错误的 | 错误的 | 真的 |
9 | 安娜 | 03-27-23 | 5 | 一个 | 错误的 | 错误的 | 错误的 |
问题:如果交易是初始交易,我如何获取每一行的信息?
这意味着在一组具有相同 [客户] 和相同 [活动] 的交易中,它是具有最低 [预订日期] 的交易。
不幸的是我的经验仍然有限。
尝试 1) 我尝试了一种措施:
InitialTransaction =
VAR InitialTransaction =
CALCULATE(
MIN(Transaction[BookDateMEZ]),
ALLEXCEPT(Transaction, Transaction[Customer], Transaction[Campaign])
)
RETURN
IF(SELECTEDVALUE(Transaction[Book Date]) = InitialTransaction, TRUE(), FALSE())
结果:
尝试2)我尝试了Clolumn:
InitialTransactionColumn =
VAR TransactionRank =
RANKX(
FILTER(
Transaction,
Transaction[Customer] = EARLIER(Transaction[Customer]) &&
Transaction[Campaign] = EARLIER(Transaction[Campaign])
),
Transaction[Book Date],
,
ASC,
DENSE
)
RETURN
IF(TransactionRank = 1, TRUE(), FALSE())
结果:
我有包含两列的数据集。第一列是群组名称,第二列是该群组中的用户。
团体 | 用户 |
---|---|
A 组 | 用户 A |
A 组 | 用户 B |
A 组 | 用户C |
A 组 | 用户D |
B 组 | 用户 A |
B 组 | 用户E |
我正在尝试在 power bi 桌面中将其转换,这样不是为每个用户设置一行,而是为每个组设置一行,第一列是组,第二列是单个字符串,其中的所有用户都用分隔符分隔。
团体 | 用户 |
---|---|
A 组 | 用户 A;用户 B;用户 C;用户 D |
B 组 | 用户 A;用户 B |
我曾尝试使用 power bi Desktop 中的各种数据透视和转置选项,但我对这些选项还比较陌生,并没有得到我想要的结果,也不确定我是否正确使用了它们。
我在 Power BI 中有一个视觉对象,我在其中仅显示某些值。我想添加第二个视觉对象,但这样一来,第一个视觉对象中显示的值将在第二个视觉对象中排除,反之亦然。因此,每次过滤已经在前一个视觉对象上过滤过的值(即使只有一个)时,都应该显示空矩阵表。在这里,我尝试使用 AI 的建议对列 Acc Unit 进行过滤,但对我来说不起作用:
SelectedValues = CONCATENATEX(VALUES('YourTable'[YourColumn]), 'YourTable'[YourColumn], ", ")
然后
FilterMeasure = IF(CONTAINSSTRING([SelectedValues], 'YourTable'[YourColumn]), 0, 1)
若您愿意,请告知。
BR,
我在 PBI 中有一张如下所示的表:
ID | 姓名 | 日期 | 表现 | 国家 | 地区 |
---|---|---|---|---|---|
1 | 乔 | 2023 年 12 月 31 日 | 好的 | 英国 | 欧洲 |
2 | 安娜 | 2023 年 12 月 31 日 | 需要改进 | 西班牙 | 欧洲 |
3 | 罗伯特 | 2023 年 12 月 31 日 | 好的 | 日本 | 亚洲 |
4 | 内特 | 2023 年 12 月 31 日 | 超出预期 | 英国 | 欧洲 |
5 | 艾玛 | 2023 年 12 月 31 日 | 好的 | 日本 | 亚洲 |
1 | 乔 | 2024 年 12 月 31 日 | 杰出的 | 英国 | 欧洲 |
2 | 安娜 | 2024 年 12 月 31 日 | 好的 | 西班牙 | 欧洲 |
3 | 罗伯特 | 2024 年 12 月 31 日 | 好的 | 日本 | 亚洲 |
4 | 内特 | 2024 年 12 月 31 日 | 好的 | 英国 | 欧洲 |
5 | 艾玛 | 2024 年 12 月 31 日 | 超出预期 | 日本 | 亚洲 |
我正在尝试用它构建一条折线图,这样我就可以直观地看到绩效百分比的钟形曲线(例如,x%表现良好,y%需要改进等),并比较曲线多年来的变化情况。
因此,对于 X 轴,我添加了“性能”,图例基于日期。
对于 Y 轴,我尝试了以下测量:
Total % =
DIVIDE(
COUNT('Data'[Performance]),
CALCULATE(
COUNT('Data'[Performance]),
ALLEXCEPT('Data', 'Data'[Date])
),
0
)
这种方式是可行的,因为总数现在基于日期,但如果我添加基于国家或地区的切片器,我希望总数根据切片器适当更改。例如,如果我在切片器中筛选英国,我希望总数为第一年,然后是英国。
但按照现在的工作方式,总数仍然仅基于日期列,因此当我在切片器上选择英国时,我得到的百分比非常低,因为“良好”的表现者可能占全球的 10%。
重申一下,我想要实现的是,当我在切片器上选择其他东西时,总数应该基于年份和切片器。
有什么方法可以实现吗?非常感谢!