0

我正在使用 Exchange 2010 数据。我有 MessageID、Sender、Recipients 和 _time。根据事件类型,可以拆分收件人(即,给定消息的所有收件人不包括在事件中,而是拆分为多个事件)。以下是数据示例:

_time    MessageID    Sender    Recipients
4:25      <12345>     Sender1   Recipient1
4:50      <12345>     Sender1   Recipient2

我使用此查询通过 MessageID 和 Sender 将多个 Recipients 值组合成一个事件:

index=ExchangeIndex sourcetype=MSExchange:2010:Message tracking
| stats values(Recipients) as recip by MessageID, Sender
| table _time, MessageID, Sender, recip

这导致:

_time     MessageID   Sender    recip
          <12345>     Sender1   Recipient1; Recipient2

_time 未填充,因为values如果 _time 包含在by语句中,则不会工作,因为特定 MessageID 的每个事件都发生在不同的时间。因此,我需要以某种方式dedup同时获取 MessageID(以获取最新的 _time)并填充 Recipients 值。

我试过这个:

| stats max(_time) as datetime by MessageID, Sender
| stats values(Recipients) as recip by datetime, MessageID, Sender
| table datetime, MessageID, Sender, recip

但这也不起作用,它会导致 recip 没有被填充:

_time    MessageID    Sender    recip
4:50     <12345>      Sender1   

我想要的输出如下所示:

_time     MessageID   Sender    recip
4:50      <12345>     Sender1   Recipient1; Recipient2

我应该如何做到这一点?

4

2 回答 2

0

我想我明白你的意思了。收据和发件人没有相同的时间戳,所以它们永远不能在同一行?

如果是这样,请在下面尝试这个.. 这假设收据和发件人彼此在 10 分钟内

index=ExchangeIndex sourcetype=MSExchange:2010:Message tracking
| bin _time span=10m
| stats values(Recipients) as recp values(MessageID) AS MessageID 
  values(Sender) AS Sender by _time
于 2017-11-21T19:13:06.817 回答
0

尝试这个:

index=ExchangeIndex sourcetype=MSExchange:2010:Message tracking
stats latest(_time) as latestTime, values(Recipients) as recip by MessageID, Sender
table latestTime, MessageID, Sender, recip
convert ctime(latestTime)
于 2017-12-18T06:18:45.863 回答