В этой статье будет рассмотрены примеры использования функции IntervalMatch.
Рассмотрим пример
[tester_signal]:
LOAD
Signal_datetime,
Signal_symbol,
"symbol",
indicator,
"1d",
"6h",
"1h"
FROM [lib://DataFiles/tester_signal.qvd] (qvd);
NoConcatenate
[TEMP tester_price_changes]:
LOAD
datetime,
"symbol",
last_price,
price_change,
price_change_percent,
high_price,
low_price,
volume,
weighted_avg_price,
quote_volume
FROM [lib://DataFiles/tester_price_changes.qvd] (qvd);
[TEMP max_datetime]:
Load max(datetime) as max_datetime
Resident [TEMP tester_price_changes];
LET vMaxDatetime = Timestamp(Num#(Peek('max_datetime',0,'TEMP max_datetime'))+Frac(MakeTime(0,30)));
NoConcatenate
[tester_price_changes]:
LOAD datetime,
Timestamp(datetime,'DD.MM.YYYY h:mm') As [Дата Время Начало],
If(symbol=Previous(symbol) and symbol<>'' and not IsNull(symbol),
Timestamp(Peek('datetime'),'DD.MM.YYYY h:mm'),
Timestamp('$(vMaxDatetime)','DD.MM.YYYY h:mm')
) As [Дата Время Конец],
symbol,
Timestamp(datetime,'DD.MM.YYYY h:mm') As [ДатаВремя Цен],
symbol&'|'&(Num(time(frac(floor(datetime,1/1440)),'hh:mm'))+floor(datetime)) As %ID,
last_price,
price_change,
price_change_percent,
high_price,
low_price,
volume,
weighted_avg_price,
quote_volume
Resident [TEMP tester_price_changes]
Order By symbol,datetime desc
;
Drop Tables [TEMP tester_price_changes];
Left Join([tester_signal])
intervalmatch (Signal_datetime,symbol)
LOAD
[Дата Время Начало],
[Дата Время Конец],
symbol
RESIDENT tester_price_changes;
Left Join(tester_signal)
Load
[Дата Время Начало],
[Дата Время Конец],
symbol,
%ID
RESIDENT tester_price_changes;
DROP Fields [Дата Время Начало], [Дата Время Конец], symbol From [tester_signal];
___