Power BI 中的小时计算
Hour over Hour calculation in Power BI
我目前有一个数据集,其中包含日期列、小时列和销售列。
编辑 2:我添加了一个带有附加列的示例数据集
https://ufile.io/dq2av
date | Hour | Sales
1/1 1 1
1/1 2 2
1/1 3 3
我想做的是一个计算字段,所以它更像是
date | Hour | Sales | Last Hour
1/1 1 1 0
1/1 2 2 1
1/1 3 3 2
有没有人有这方面的经验?
更新 #4:在 Joe 和 Marc 的共同帮助下,我已经解决了这个问题。
我创建了序列列
Sequence = FORMAT(Sheet1[Click_Date], "General Number")+(.1*Sheet1[dtClickHour])
仅供参考 - 如果您有大量记录,请将 .1 扩展为 .00001,因为它会在序列中四舍五入为整数
索引
Index = RANKX(Sheet1, Sheet1[Sequence],,ASC,DENSE)
上一小时蛋糕点击次数
Cake Clicks Last Hour = if(Sheet1[dtClickHour]=0, 0, SUMX(FILTER(Sheet1,Sheet1[Index]=earlier(Sheet1[Index])-1),Sheet1[Cake Clicks]))
我可以从这里开始的唯一额外步骤是将 Cake Click Last Hours 的计算更改为平均值。
根据附加信息更新了公式。
要将上一小时的点击次数放入当前小时的行中,请使用此公式添加一个新列。
Cake Clicks Last Hour = CALCULATE(
IF(ISBLANK(SUM(Clicks[Cake Clicks])), 0, SUM(Clicks[Cake Clicks])),
FILTER(Clicks,
Clicks[Click_Date] = EARLIER(Clicks[Click_Date]) &&
Clicks[dtClickHour] = EARLIER(Clicks[dtClickHour]) - 1
)
)
@Joe 提供的答案与您的上述信息对我有用。
我从这个开始(名为表 3):
并使用
添加了一个新列
`Cake Clicks Last Hour = CALCULATE(
IF(ISBLANK(MAX(Table3[Cake Clicks])), 0, MAX(Table3[Cake Clicks])),
FILTER(Table3,
Table3[Click_Date] = EARLIER(Table3[Click_Date]) &&
Table3[dtClickHour] = EARLIER(Table3[dtClickHour]) - 1
)
)`
...这是用您的最新信息(例如,您的专栏名称)编辑的 Joe 的代码。
如果适合你,请select他的回答。
否则,这是另一种可能对您有帮助的选择。我从上面的 table 开始并得出这个:
方法如下:
我添加了一个名为 "Sequence" 的新列,为我提供了一个包含日期和时间的序列计数:Sequence = FORMAT(Table3[Click_Date], "General Number")+(.1*Table3[dtClickHour])
我添加了一个名为 "Index" 的新列,这样我就有了一些东西来识别记录号:Index = COUNTROWS(FILTER(Table3,Table3[Sequence]<earlier(Table3[Sequence])))
我添加了一个名为 "Cake Clicks Last Hour" 的新列,它使用索引来确定要提取的值:Cake Clicks Last Hour = if(Table3[dtClickHour]=0, 0, sumx(FILTER(Table3,Table3[Index]=earlier(Table3[Index])-1),Table3[Cake Clicks]))
我目前有一个数据集,其中包含日期列、小时列和销售列。
编辑 2:我添加了一个带有附加列的示例数据集 https://ufile.io/dq2av
date | Hour | Sales
1/1 1 1
1/1 2 2
1/1 3 3
我想做的是一个计算字段,所以它更像是
date | Hour | Sales | Last Hour
1/1 1 1 0
1/1 2 2 1
1/1 3 3 2
有没有人有这方面的经验?
更新 #4:在 Joe 和 Marc 的共同帮助下,我已经解决了这个问题。 我创建了序列列
Sequence = FORMAT(Sheet1[Click_Date], "General Number")+(.1*Sheet1[dtClickHour])
仅供参考 - 如果您有大量记录,请将 .1 扩展为 .00001,因为它会在序列中四舍五入为整数
索引
Index = RANKX(Sheet1, Sheet1[Sequence],,ASC,DENSE)
上一小时蛋糕点击次数
Cake Clicks Last Hour = if(Sheet1[dtClickHour]=0, 0, SUMX(FILTER(Sheet1,Sheet1[Index]=earlier(Sheet1[Index])-1),Sheet1[Cake Clicks]))
我可以从这里开始的唯一额外步骤是将 Cake Click Last Hours 的计算更改为平均值。
根据附加信息更新了公式。
要将上一小时的点击次数放入当前小时的行中,请使用此公式添加一个新列。
Cake Clicks Last Hour = CALCULATE(
IF(ISBLANK(SUM(Clicks[Cake Clicks])), 0, SUM(Clicks[Cake Clicks])),
FILTER(Clicks,
Clicks[Click_Date] = EARLIER(Clicks[Click_Date]) &&
Clicks[dtClickHour] = EARLIER(Clicks[dtClickHour]) - 1
)
)
@Joe 提供的答案与您的上述信息对我有用。
我从这个开始(名为表 3):
并使用
添加了一个新列`Cake Clicks Last Hour = CALCULATE(
IF(ISBLANK(MAX(Table3[Cake Clicks])), 0, MAX(Table3[Cake Clicks])),
FILTER(Table3,
Table3[Click_Date] = EARLIER(Table3[Click_Date]) &&
Table3[dtClickHour] = EARLIER(Table3[dtClickHour]) - 1
)
)`
...这是用您的最新信息(例如,您的专栏名称)编辑的 Joe 的代码。
如果适合你,请select他的回答。
否则,这是另一种可能对您有帮助的选择。我从上面的 table 开始并得出这个:
方法如下:
我添加了一个名为 "Sequence" 的新列,为我提供了一个包含日期和时间的序列计数:
Sequence = FORMAT(Table3[Click_Date], "General Number")+(.1*Table3[dtClickHour])
我添加了一个名为 "Index" 的新列,这样我就有了一些东西来识别记录号:
Index = COUNTROWS(FILTER(Table3,Table3[Sequence]<earlier(Table3[Sequence])))
我添加了一个名为 "Cake Clicks Last Hour" 的新列,它使用索引来确定要提取的值:
Cake Clicks Last Hour = if(Table3[dtClickHour]=0, 0, sumx(FILTER(Table3,Table3[Index]=earlier(Table3[Index])-1),Table3[Cake Clicks]))