2017-07-18 4 views
1

Ich benutze die Import Modul von Azure Machine Learning (Azure ML), um Daten von DocumentDB zu bekommen.Import von DocumentDB zu Azure Machine Learning - Datetime mit Millisekunden

Der Import funktioniert gut.


In den DocumentDBDokumente sind DateTime mit milliseconds, wie:

"Current": "2017-07-17T20: 18: 55,757316"

und in Azure ML wird es als DateTime-Feature erkannt und es wird so angezeigt:

2017-07-17T20: 18: 55

Das Problem ist, dass die milliseconds fehlen.

Ich habe versucht, die milliseconds mit dem Edit Metadata Modul zu bekommen, aber es funktioniert nicht für mich. Darüber hinaus habe ich versucht,R zu verwenden, um die CurrentTime zu numerischen, wie diese zu konvertieren:

time.milliseconds = as.numeric(dataset1[['CurrentTime']]); 
print(time.milliseconds,digits=15) 

Aber die milliseconds fehlen noch.


Wie kann ich die ganzeDateTime mit milliseconds bekommen?


UPDATE:

Der komplette R Code:

options("digits.secs"=6) 

dataset1 <- maml.mapInputPort(1) # class: data.frame 

time.milliseconds = as.numeric(dataset1[['CurrentTime']]); 
dataset <- cbind(dataset1, time.milliseconds) 

maml.mapOutputPort("dataset"); 

Das Ergebnis:

enter image description here


Mein Vorschlag ist, dass der Import Modul mit DocumentDB nicht unterstützt milliseconds!?


Vorerst ich meine CurrentTime als milliseconds von Epoche zu demDocumentDB hochladen. Ich hoffe es gibt einen besseren Weg ..

+0

Beachten Sie, dass 6-stellig = Mikrosekunden. Millisekunden wären 3. Außerdem denke ich, wenn Sie genau hinsehen, werden Sie sehen, dass Sie 7 Ziffern haben, die eine Einheit von 100 Nanosekunden sind und in .NET allgemein als "Ticks" bezeichnet werden. –

+0

Auch bedenken Sie, dass, nur weil Sie Subsekunden Informationen in Ihren Daten haben, bedeutet nicht, dass Informationen unbedingt richtig oder relevant sind. Das sollte man aufgrund der * Quelle * der Information entscheiden. Zum Beispiel, wenn es von einem Computer-Uhr gerade kommt, hängt es von der Genauigkeit und der Präzision der Uhr des Computers - die in der Regel nicht weniger als <10ms, sondern auch Taktsynchronisation berücksichtigt usw. Vor allem, wenn die Daten aus Richtung verschiedene Quellen, ich persönlich würde nichts unter 5 Minuten vertrauen. –

+0

Danke, aber ich denke wirklich, dass das Problem durch das Modul "Import" verursacht wird. Meine Problemumgehung ist, dass ich "CurrentTime" als Millisekunden (Double) aus der Epoche hochlade. Jetzt kann ich mit meinen Daten arbeiten. –

Antwort

0

Möglicherweise müssen options("digits.secs"=6) (oder zumindest drei), um sie gedruckt zu sehen. Zeuge:

R> options("digits.secs"=0) ## suppresses sub-second display, default 
R> Sys.time() 
[1] "2017-07-18 07:22:00 CDT" 
R> options("digits.secs"=6) ## overrides default and forces six digits 
R> Sys.time() 
[1] "2017-07-18 07:22:05.161853 CDT" 
R> 

So stehen die Chancen, wenn die Daten mit Subsekunden Präzision als Datum gespeichert sind, dann sollten sie mit ihm zu importiert werden - „Sie gerade sehen es nicht“ wegen der Standard-Anzeige Granularität muss überschrieben werden.

+0

Vielen Dank für Ihre Zeit. Ich habe das versucht, aber es funktioniert nicht. Ich habe meine Antwort mit dem ganzen R-Code und dem Ergebnis aktualisiert. –

Verwandte Themen