Ich versuche, eine Spalte zu erstellen, die die Summe der Verzögerung von 24 Zeilen berechnet. In diesem Fall habe ich eine Spalte „Niederschlag“, die stündliche Niederschlagssummen enthält. Es gibt eine zweite Spalte „Niederschlagsstation“, die angibt, von welchem Ort aus jeder Wert aufgezeichnet wurde. Ich habe die Spalten nach „DateTime“ und „Precipitation Station“ sortiert. Ich suche nach einer effizienten Möglichkeit, die vorherigen 24 Werte in der Spalte „Niederschlag“ zu summieren und so eine neue Spalte zu erstellen, die mir sagt, wie viel es in den letzten 24 Stunden geregnet hat. Diese 24-Stunden-Summe ist stationsspezifisch und kann daher die Lag-24-Werte nicht berechnen, wenn die Lag-24-Niederschläge nicht übereinstimmen.
Am Ende habe ich das selbst herausgefunden, es ist eine einfache Summationsfunktion. Ich dachte, ich würde es posten, falls jemand anderes so etwas tun muss.
If( :Precipitation Station == Lag( :Precipitation Station, 1 ),
Summation( i = 1, 24, Lag( :Precipitation, i ) ),
:Precipitation
);
Ich versuche eigentlich nicht, den Gesamtniederschlag für eine bestimmte Station/ein bestimmtes Datum zu berechnen, sondern eher für eine Station/einen vorherigen 24-Stunden-Zeitraum. Wenn also beispielsweise die Datums- und Uhrzeitangabe für ein bestimmtes Datum der 03.01.2020 09:00:00 Uhr ist, würde ich die vorherigen 24 Werte in der Niederschlagsspalte nehmen und diese summieren wollen. Also beginnend mit dem 03.01.2020, 08:00:00 Uhr, bis zum 02.01.2020, 09:00:00 Uhr. Im Wesentlichen ein bewegliches 24-Stunden-Zeitfenster. Diese Spalte würde mir somit für jede Zeile meiner Datentabelle den vorherigen Regen der letzten 24 Stunden liefern.
Wenn Sie versuchen, die Niederschlagssumme für einen bestimmten Tag/eine bestimmte Station zu berechnen, erstellen Sie eine neue Spalte, die nur den Datumsteil von datetime enthält.Führen Sie dann eine tabellarische Aufstellung nach Datum und Station durch und geben Sie „Precip“ in die Mitte ein.
Dieses Programm erstellt einen Beispieldatensatz mit einer Formelspalte für das Datum und einem Tabulate-Programm zur Berechnung des Niederschlags nach Datum/Station.
New Table( "Example", Add Rows( 20 ),
New Script( "Tabulate",
Tabulate(
Show Control Panel( 0 ),
Add Table(
Column Table( Analysis Columns( :Precip ) ),
Row Table( Grouping Columns( :Precip Date, :Station ) )
)
)
),
New Column( "Precip Datetime", Numeric, "Continuous", Format( "ddMonyyyy h:m:s", 22, 0 ),
Input Format( "ddMonyyyy h:m:s", 0 ),
Set Values(
[3660710400, 3660714000, 3660717600, 3660721200, 3660724800, 3660710400,
3660714000, 3660717600, 3660721200, 3660724800, 3660796800, 3660800400,
3660804000, 3660807600, 3660811200, 3660796800, 3660800400, 3660804000,
3660807600, 3660811200]
),
Set Display Width( 186 )
),
New Column( "Station", Character, "Nominal",
Set Values(
{"A", "A", "A", "A", "A", "B", "B", "B", "B", "B", "A", "A", "A", "A",
"A", "B", "B", "B", "B", "B"}
)
),
New Column( "Precip", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [1, 2, 3, 4, 5, 3, 4, 5, 1, 1, 4, 5, 6, 7, 5, 4, 5, 6, 7, 8] )
),
New Column( "Precip Date", Character, "Nominal",
Formula( Short Date( :Precip Datetime ) )
)
);