首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将数据从流分析输出到powerbi时数据被覆盖

将数据从流分析输出到powerbi时数据被覆盖
EN

Stack Overflow用户
提问于 2018-12-20 19:07:03
回答 3查看 154关注 0票数 0

最近,我一直在使用PowerBI作为输出接收器来处理流分析查询。我做了一个简单的查询,检索一段时间内我们网站请求的http响应码总数,并按日期和响应码进行分组。输入数据从持有BLOB存储的存储帐户中检索。这是我的问题:

代码语言:javascript
复制
SELECT
    DATETIMEFROMPARTS(DATEPART(year,R.context.data.eventTime), DATEPART(month,R.context.data.eventTime),DATEPART(day,R.context.data.eventTime),0,0,0,0) as datum,     
    request.ArrayValue.responseCode,
    count(request.ArrayValue.responseCode)
INTO
  [requests-httpresponsecode]
FROM
  [cvweu-internet-pr-sa-requests] R TIMESTAMP BY R.context.data.eventTime
OUTER APPLY GetArrayElements(R.request) as request
GROUP BY DATETIMEFROMPARTS(DATEPART(year,R.context.data.eventTime), DATEPART(month,R.context.data.eventTime),DATEPART(day,R.context.data.eventTime),0,0,0,0), request.ArrayValue.responseCode, System.TimeStamp

由于连续导出在2018年9月3日变得活跃,因此我选择了2018年9月3日的作业开始时间。因为我对到今天为止的统计数据很感兴趣,所以我没有包括日期间隔,所以我希望看到从2018年9月3日到现在(2018年12月20日)的数据。作业运行得很好,没有错误,我选择PowerBI作为输出接收器。我立即看到这张图表是从9月3日开始传播的,按天分组并计数。到现在为止还好。几天后,我注意到输出数据集不再是从9月3日开始的,而是从12月2日到现在。显然,数据正在被覆盖。

下面的链接显示:

https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-power-bi-dashboard

"defaultRetentionPolicy: BasicFIFO:数据为先进先出,最大为200,000行。“

但是我的输出表没有接近200.000行:

代码语言:javascript
复制
datum,count,responsecode
2018-12-02 00:00:00,332348,527387
2018-12-03 00:00:00,3178250,3282791
2018-12-04 00:00:00,3170981,4236046
2018-12-05 00:00:00,2943513,3911390
2018-12-06 00:00:00,2966448,3914963
2018-12-07 00:00:00,2825741,3999027
2018-12-08 00:00:00,1621555,3353481
2018-12-09 00:00:00,2278784,3706966
2018-12-10 00:00:00,3160370,3911582
2018-12-11 00:00:00,3806272,3681742
2018-12-12 00:00:00,4402169,3751960
2018-12-13 00:00:00,2924212,3733805
2018-12-14 00:00:00,2815931,3618851
2018-12-15 00:00:00,1954330,3240276
2018-12-16 00:00:00,2327456,3375378
2018-12-17 00:00:00,3321780,3794147
2018-12-18 00:00:00,3229474,4335080
2018-12-19 00:00:00,3329212,4269236
2018-12-20 00:00:00,651642,1195501

编辑:我已经根据https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-quick-create-portal创建了流输入源。我也可以创建一个引用输入,但这会使我的查询失效,因为APPLY和GROUP BY不受支持,而且我还认为流输入是我想要的,根据https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-add-inputs

我遗漏了什么?是我的问题吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-01-04 16:24:49

看起来问题出在我的问题上。我不得不用TUMBLINGWINDOW(day,1)代替System.TimeStamp.

TUMBLINGWINDOWSystem.TimeStamp在前端产生完全相同的图表输出,但在后端似乎以不同的方式处理。这没有以任何方式反映到前端,所以这是令人困惑的。我怀疑在后端发生了一些事情,这是由于不使用TUMBLINGWINDOW时处理查询的方式造成的,并且您碰巧比预期更早地达到了每个数据集200k行的限制。下面的查询就是生成预期结果的查询。

代码语言:javascript
复制
SELECT
    request.ArrayValue.responseCode,
    count(request.ArrayValue.responseCode),
    DATETIMEFROMPARTS(DATEPART(year,R.context.data.eventTime), DATEPART(month,R.context.data.eventTime),DATEPART(day,R.context.data.eventTime),0,0,0,0) as date     
INTO
  [requests-httpstatuscode]
FROM
  [cvweu-internet-pr-sa-requests] R TIMESTAMP BY R.context.data.eventTime
OUTER APPLY GetArrayElements(R.request) as request
GROUP BY DATETIMEFROMPARTS(DATEPART(year,R.context.data.eventTime), DATEPART(month,R.context.data.eventTime),DATEPART(day,R.context.data.eventTime),0,0,0,0),
        TUMBLINGWINDOW(day,1), 
        request.ArrayValue.responseCode

就在我们说话的时候,我的流分析工作运行得很顺利,并产生了从9月3日到现在的预期输出,数据没有被覆盖。

票数 0
EN

Stack Overflow用户

发布于 2018-12-20 19:30:12

看起来您正在流式传输到 dataset。流式数据集不会将数据存储在数据库中,而是只保留最后一个小时的数据。如果您希望将数据推送到其中,则必须在创建数据集时启用Historic data analysis选项:

这将创建PushStreaming dataset (也称为混合)和basicFIFO保留策略(即保留了大约200k-210k条记录)。

票数 0
EN

Stack Overflow用户

发布于 2019-01-04 07:31:46

你说得对,Azure Stream Analytics应该创建一个"PushStreaming“或”混合“数据集。你能确认你的数据集被正确地配置为“混合”(你甚至可以在创建as shown here之后检查这个属性)吗?

如果是正确的类型,请您澄清以下几点:

  1. 您的数据架构会发生变化吗?例如,如果您发送数据{a: 1, b: 2},然后发送{c: 3, d: 4},Azure流分析将尝试更改表的架构,这可能会使较旧的数据无效。
  2. 您如何确认数据集中的行数?
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53867459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档