2015-11-05 26 views
0

是否可以彙總測量或創建超出標準dateFromdateTo查詢的自定義查詢?例如,我有一個時間增量爲1分鐘的測量值(2015-01-01T05:05:00,2015-01-01T05:05:00,2015-01-01T05:05:00, ...),我想以15分鐘的間隔查詢測量結果(2015-01-01T05:15:00,2015-01-01T05:30:00,2015-01-01T05:45:00,... )使用Cumulocity API自定義日期查詢

到目前爲止,我只拿出這些解決方案:

  1. 使用標準的API請求在 https://tenant.cumulocity.com/measurement/measurements?dateFrom=2015-10-01&dateTo=2015-11-05 然後扔掉大部分數據將使用的時間加載數據的巨量。
  2. 使用cep(cumulocity事件語言)每隔15分鐘使用最接近1分鐘的測量值生成一個新測量值,看起來有點過度殺傷力,不是很優雅。
  3. 批量請求確切的分鐘 https://tenant.cumulocity.com/measurement/measurements?dateFrom=2015-11-05T05:15:00%2B01:00&dateTo=2015-11-05T05:16:00%2B01:00 這將在大量的API請求,也似乎不是很有效。
  4. 使用/measurements/series端點,它只會給我所有的系列,即使那些我不想要的系列,以及每小時和每天只有聚合選項(據我所知)。

有沒有更好的方法來做到這一點?

回答

1

您已經捕獲了幾乎所有當前可用的機制。還有一種可能性 - 不確定這是否適用於您:

  1. 使用例如以下方式標記從設備發送的第十五測量值。一個不同的類型。

我通常會使用2.它實際上非常高效,它類似於傳統SQL中的物化視圖,再加上您可以在任何地方和所有小部件中使用數據。

好運:-)

乾杯, 安德烈

1

我寧願CEP解決方案。該規則不會那麼複雜。你當然會將這些測量結果存儲兩次,這並不好,但是用特定的類型或片段進行所需的測量會爲您提供最快的查詢方式。

而不是複製測量,您可以在CEP規則中每15分鐘爲測量添加一個特殊片段。您無法更新測量值,因此您必須每15分鐘刪除一次測量值,然後創建一個具有完全相同值的新測量值,但添加一個分段值(例如「aggregatedMeasurement」:{})。然後

您的查詢看起來是這樣的:對於3點 https://tenant.cumulocity.com/measurement/measurements?dateFrom=2015-10-01&dateTo=2015-11-05&fragmentType=aggregatedMeasurement

還有一個想法:

你可以使用SmartREST創建查詢字符串模板,離開dateFrom和dateTo用作佔位符。 從客戶端,您將不得不使用SmartREST中的擴展功能僅發出一個請求。 在服務器端,這仍然會變成單個請求,所以你不會獲得任何速度。