2015-11-17 56 views
0

我正在使用最後一個函數來創建一個標識接收到的最新記錄的標誌(這樣我就可以在Power BI中只顯示最新值)。Azure流分析 - Last()函數始終等於時間戳

SELECT 
    events.deviceId 
    ,events.[timestamp] 
    ,events.externaltemp 
    ,LAST(events.[timestamp]) OVER (PARTITION BY events.DeviceId LIMIT DURATION(day, 1)) as latest 
    ,case when LAST(events.[timestamp]) OVER (PARTITION BY events.DeviceId LIMIT DURATION(day, 1)) = [timestamp] then 1 else 0 end as LastestFlag 
    INTO 
[powerBI] 
    FROM 
    [EventHub] as events timestamp by [timestamp] 

但是我看到的最後一個函數總是返回相同的日期時間爲我的時間戳,所以我的查詢中的所有行看起來他們是收到的最後一個。我的數據每秒都有記錄。

(或者,我希望用ROW_NUMBER函數給我的東西過濾到識別的最新記錄 - 但這並沒有出現在流分析存在尚未)

回答

1

最好的方式來完成這在目前是雙向電力內部具有Q &在這個類似的問題提到了一個問題: Latest value in PowerBi from ASA

你的做法是行不通的。如果您針對SQL Server運行該查詢,則會針對每個設備標記一行,並將其稱爲最新版本,因爲SQL Server更加面向批處理。流分析是暫時的,並且可以實時運行。所以它正在處理的行總是那一刻的最新行。另外,一旦輸出行被髮送到Power BI,它就不能被更新。因此,Power BI中的每一行都會被標記爲最新版本的Stream Analytics處理過的最新版本。