ClickHouse/tests/performance/asof.xml
2024-02-13 15:41:17 +03:00

82 lines
2.5 KiB
XML

<test>
<query>
SELECT *
FROM
(
SELECT
RegionID,
toDateTime(EventDate) AS date,
count() AS quantity
FROM test.hits
GROUP BY
RegionID,
date
) AS regions
ASOF LEFT JOIN
(
SELECT
RegionID,
EventTime
FROM test.hits
) AS ids ON (regions.RegionID = ids.RegionID) AND (regions.date &lt; ids.EventTime)
</query>
<query>
SELECT * FROM
(
SELECT
toStartOfDay(now()) + INTERVAL (seconds_since_start_of_day % 86000) SECOND AS date,
fingerprint % 50 as fingerprint,
multiIf(browserId % 3 == 0, 'firefox', browserId % 3 == 1, 'edge', 'chrome') as browser
FROM generateRandom('seconds_since_start_of_day UInt32, fingerprint UInt8, browserId UInt8') LIMIT 100000
) AS origins
ASOF LEFT JOIN
(
SELECT
toStartOfDay(now()) + INTERVAL (seconds_since_start_of_day % 86000) SECOND AS date,
fingerprint % 50 as fingerprint,
multiIf(language % 2 == 0, 'es', 'en') as lang
FROM generateRandom('seconds_since_start_of_day UInt32, fingerprint UInt8, language UInt8') LIMIT 5000000
) AS visits
ON (visits.fingerprint = origins.fingerprint AND visits.date &gt;= origins.date)
FORMAT Null
</query>
<substitutions>
<substitution>
<name>num_unique_sessions</name>
<values>
<value>1000</value>
<value>1000000</value>
</values>
</substitution>
<substitution>
<name>num_rows</name>
<values>
<value>1000000</value>
</values>
</substitution>
</substitutions>
<query>
SELECT COUNT(*) AS count
FROM
(
SELECT
(number % {num_unique_sessions}) AS visitor_id,
number AS id
FROM system.numbers
LIMIT {num_rows}
) AS sessions
ASOF LEFT JOIN
(
SELECT
(number % {num_unique_sessions}) AS visitor_id,
number AS starting_session_id
FROM system.numbers
LIMIT {num_rows}
) AS visitors
ON visitors.visitor_id = sessions.visitor_id AND visitors.starting_session_id &lt; sessions.id
</query>
</test>