为复杂的输出连接输入
Posted
技术标签:
【中文标题】为复杂的输出连接输入【英文标题】:Joining inputs for a complicated output 【发布时间】:2016-08-04 06:56:02 【问题描述】:我是天蓝色分析的新手。我使用分析来获取用户的反馈。我在一秒钟内发送到 azure 大约有 50 个事件,我试图从两个输入中获得组合结果,但无法获得工作输出。我的问题是在 sql 查询中输出。
现在我正在发送输入。
建议:
"appId":"1","sequentialId":"28","ItemId":"1589018","similaristyValue":"0.104257207028537","orderId":"0"
显示日志:
"appId":"1","sequentialId":"28","ItemId":"1589018"
我需要将它们与 sequenceId 和 ItemId 连接并计算两个有序序列之间的差异。
例如:我发送 10 个 Recommandations 事件,之后(例如 2 秒后)我发送 3 个 ShownLog 事件。所以我需要做的是我必须得到前 3 个的总和(因为我发送了 3 个显示日志事件)事件的相似性值,由“recommandations”中的“orderid”排序。我还需要从“ShownLog”中获取similarityValues 的总和。最后我需要一个输入(对于每个顺序 ID):
sequentialID 差异 168 1.21
到目前为止,我所做的是。我将所有输入保存在我的天蓝色 sql 中,并且我设法编写了我想要的 sql。你可能会找到它的 mssql 查询:
declare @sumofSimValue float;
declare @totalItemCount int;
declare @seqId float;
select
@sumofSimValue = sum(b.[similarityValue]),
@totalItemCount = count(*),
@seqId = a.sequentialId
from EventHubShownLog a inner join EventHubResult b on a.sequentialId=b.sequentialId and a.ItemId=b.ItemId group by a.sequentialId
--select @sumofSimValue,@totalItemCount,@seqId
SELECT @seqId, SUM([similarityValue])-@sumofSimValue
FROM (
SELECT TOP(@totalItemCount) [similarityValue]
FROM [EventHubResult] where sequentialId=@seqId order by orderId
) AS T
但它会在分析中产生很多错误。它也缺乏天蓝色分析的逻辑。我希望我能说出问题所在。
你能告诉我如何为我的系统做这样的工作吗?如何使用时间窗口或如何正确加入?
【问题讨论】:
【参考方案1】:对于每个显示的日志,您必须选择相似值的总和。是这个意图吗?为什么不直接加入并选择总和?它只会选择与显示的日志一样多的行。
要确定的一件事是推荐事件和显示的日志事件之间的最大时间差,您可以使用 Azure 流分析加入,https://msdn.microsoft.com/en-us/library/azure/dn835026.aspx
【讨论】:
以上是关于为复杂的输出连接输入的主要内容,如果未能解决你的问题,请参考以下文章