Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# StreamInsight将窗口开始时间传递到UDA_C#_Linq_Streaminsight - Fatal编程技术网

C# StreamInsight将窗口开始时间传递到UDA

C# StreamInsight将窗口开始时间传递到UDA,c#,linq,streaminsight,C#,Linq,Streaminsight,我有个问题,我被困了两天。也许你们中有人能帮我 我尝试将窗口的开始时间传递给用户定义的聚合。不幸的是,我不知道怎么做。我认为应该这样做: var tot = from row in tumblingWin select new { value = row.UserDefinedAggregate<Dataclass, Total2, double>(new StartBoundsConfig

我有个问题,我被困了两天。也许你们中有人能帮我

我尝试将窗口的开始时间传递给用户定义的聚合。不幸的是,我不知道怎么做。我认为应该这样做:

var tot = from row in tumblingWin
          select new
          {
              value = row.UserDefinedAggregate<Dataclass, Total2, double>(new StartBoundsConfig
              {
                  Winstart = row.WinStart().Ticks                       
              }) * processinginterval,
          };
UDA看起来是这样的:

public class Total2: CepAggregate<Dataclass,double>
{
    private Dataclass lastone; //keep it, if needed for next window
    private StartBoundsConfig _conf;

    public Total2(StartBoundsConfig config)
    {
        _conf = config;
    }

    public override double GenerateOutput(IEnumerable<Dataclass> events)
    {
       //TODO check if value on window start => if not use last from previous as starting value

       bool checkfirst = true;
       long result = 0;
       long tsone = 0;

       foreach (var evts in events)
       {
           if (checkfirst == true)
           {
               tsone = evts.Gentime.Ticks;
               checkfirst = false;
           }
           else
           {
               long tstwo = evts.Gentime.Ticks;
               long delta = tstwo - tsone;
               long value = (long) evts.Value;
               result += delta*value;
               tsone = tstwo;
           }

           lastone = evts;
       }

       return result;          
    }    
}
我试图将窗口开始传递到UDA的配置,并从那里读取它。 有人知道为什么这样不行吗?我怎样才能把窗口的开始时间传递给UDA,在那里用它进行计算

我非常感谢你的任何暗示


你需要一个时间敏感的UDA。从CepTimeSensitiveAggregate see继承,生成输出方法将WindowDescriptor作为签名的一部分。作为奖励,您还将获得事件的临时头,这样您就不需要将此信息作为有效负载的一部分排队。虽然有些边缘用例需要这样做,但在大多数情况下,您并不需要这样做

谢谢你的快速回复。这个链接提供了我需要的其他信息。但再次感谢你的好主意。