2017-02-22 5 views
1

Ich bin ein Student in Wirtschaft und ich habe nicht viel Erfahrung in Data Science. Ich habe versucht, das Problem so genau wie möglich zu beschreiben, wenn es etwas unklar, lass es mich wissen, ist :)MS Acces - Berechnen

Ich habe einige Probleme mit Datenberechnungen für meine Abschlussarbeit Arbeit:

Das Problem: Ich möchte analysieren ein Datensatz mit 3 Spalten und 20 Millionen Zeilen. Die 3 Spalten sind Zeitstempel, Benutzer (ca. 130 Benutzer) und Energieverbrauch (Watt pro Sekunde).

Data

In dem Beispiel wird die Datensatz dargestellt. Die Zeitstempel basieren auf Intervallen von 10-15 Sekunden und sind diese Zeitstempel sind aufeinanderfolgend. Die Messung mit dem Zeitstempel 1458185209 erfolgt also 10-15 Sekunden nach der Messung mit dem Zeitstempel 1458185109. Diese Zeitstempel werden anonym generiert. Ich kenne jedoch die genaue Anfangs- und Endzeit und das Datum der Messungen. Es gibt genau 153 Tage.

Aus diesen Informationen möchte ich den durchschnittlichen Verbrauch pro Benutzer pro Tag berechnen. Sagen wir, es gibt ca. 300.000 Messpunkte für Benutzer1 im Datensatz. Die gesamte Messzeit beträgt 2 Monate. So kann der Durchschnittsverbrauch eines Benutzers berechnet werden, indem der Durchschnitt von Zeitstempel 1 bis Zeitstempel 4918 (300.000/61 Tage) genommen wird.

Ich möchte dies für alle Benutzer für alle Tage in dem angegebenen Zeitraum tun.

Ein weiteres Problem ist, dass nicht alle Benutzer die gleiche Menge an Messungen haben. Die Messungen können jedoch gleichmäßig über die 153 Tage verteilt werden. Zum Beispiel hat der erste Tag für Benutzer1 278 Messungen und für Benutzer2 313 Messungen.

Im Bild können Sie die Gesamtmessungen und den Gesamtverbrauch für die Benutzer sehen.

Ich versuchte, dies in Access zu lösen, aber es ist mir bisher nicht gelungen. Ich habe irgendwelche Tipps oder Vorschläge (vorzugsweise in Access), lassen Sie es mich wissen :)

Vielen Dank!

+1

dies einfach eine SQL-Anweisung verwendet getan werden kann, wenn Ihr Zeitstempel ist ein echter Zeitstempel (z. B. ein Unix-Zeitstempel) und kann daher in eine Datumszeit konvertiert werden, um einen Zeitbereich zu definieren und nach Tagen zu gruppieren. Beantworten Sie diese zuerst –

+0

Vielen Dank! Ich habe meine Unix-Zeitstempel in ein Datetime umgewandelt und jetzt kann ich es beenden :) – Laurens

Antwort

1

Ist es möglich, dass, wo nicht alle Benutzer die gleiche Anzahl von Messungen haben, dass sie keine Energie verwendet haben? Das wäre leicht zu sagen, wenn es keine Datensätze mit Nullverbrauch gibt.

Um die Intervalle zu verstehen und zu etwas Sinnvollem zu konvertieren, sehen Sie sich den folgenden Code an. Alles, was Sie in Access tun müssen, würden, ist das Datum/Zeit zu berechnen: DateAdd ("s", Timestamp, # 1/1/1970 #)

Function Date_Timestamp() 

' Timestamp should be # of seconds since 1/1/1970 

Dim lTimestamp As Long 
Dim dStartDate As Date 
Dim dThisDate As Date 
Dim lSecPerMin As Long 
Dim lSecPerHr As Long 
Dim lSecPerDay As Long 
Dim lSecPerYr As Long 
Dim lNbrDays As Long 

dStartDate = #1/1/1970# 

lTimestamp = 1460210005 
lSecPerMin = 60 
lSecPerHr = 60 * lSecPerMin  ' =  3,600 
lSecPerDay = 24 * lSecPerHr  ' =  86,400 
lSecPerYr = 365 * lSecPerDay ' = 31,536,000  ** Don't use this (Leap Years!!) 
lNbrDays = lTimestamp/lSecPerDay 

' Just show the approximate date... 
dThisDate = DateAdd("d", lNbrDays, #1/1/1970#) 
Debug.Print "Timestamp: " & lTimestamp & vbTab & "# Days: " & lNbrDays & vbTab & "Date: " & dThisDate 

' To be more precise, show the time also... 
dThisDate = DateAdd("s", lTimestamp, #1/1/1970#) 
Debug.Print "Timestamp: " & lTimestamp & vbTab & "Date/Time: " & dThisDate 

End Function 
+0

Vielen Dank für Ihre Hilfe, ich habe das Problem behoben! – Laurens

Verwandte Themen