Я пытаюсь извлечь количество произведенных деталей в минуту, где v — агрегированный счетчик деталей, произведенных до этого времени.
Мой лазурный SQL-запрос выглядит следующим образом:
select
x.fqn,
( max(cast(y.arrayvalue.v as BIGINT))-(min(cast(y.arrayvalue.v as BIGINT)))) as ppm
from
(SELECT
TS.ArrayIndex,
TS.ArrayValue.FQN,
TS.ArrayValue.vqts
FROM
[EventHubInput] as hub
timestamp by y.arrayvalue.t
CROSS APPLY GetArrayElements(hub.timeseries) AS TS) as x
cross apply GetArrayElements(x.vqts) AS y
where x.fqn like '%Production%' and y.arrayvalue.q=192
group by tumblingwindow(minute,1),x.fqn
Мои входные данные выглядят так
{
"timeSeries": [
{
"fqn":"MyEnterprise.Gateways.GatewayE.CLX.Tags.StateBasic",
"vqts":[
{
"v": "" ,
"q": 192 ,
"t":"2016-06-24T16:39:45.683+0000"
}
]
}, {
"fqn":"MyEnterprise.Gateways.GatewayE.CLX.Tags.ProductionCount",
"vqts":[
{
"v": 264 ,
"q": 192 ,
"t":"2016-06-24T16:39:45.683+0000"
}
]
}, {
"fqn":".Gateways.GatewayE.CLX.Tags.StateDetailed",
"vqts":[
{
"v": "" ,
"q": 192 ,
"t":"2016-06-24T16:39:45.683+0000"
}
]
} ]
Мой запрос не дает результата. когда я удаляю метку времени с помощью y.arrayvalue.t и добавляю y.arrayvalue.t в предложение group by, я получаю некоторый результат. Я понимаю, что, возможно, это связано с тем, что у меня есть более 1 поля временной метки для каждого события, поэтому я хотел знать, можно ли присвоить временные данные первого массива временной метке с помощью... что-то вроде временной метки по y [0] .t