D
Size: a a a
D
O
O
O
DC
select countIf(action = ‘my_action and status = ‘my_status’) from my_table inner join another table
=> 1000
create view my_view AS
select
id,
status,
action
from my_table
inner join another table
select countIf(action = ‘my_action and status = ‘my_status’) from my_view
=> 0
IL
CREATE MATERIALIZED VIEW items_agg
ENGINE = AggregatingMergeTree() PARTITION BY date ORDER BY (person_id, station_id, hostname, date, app_id, app_sub_category, app_category)
POPULATE AS SELECT
station_id,
hostname,
person_id,
toDate(items_log.date) date,
argMaxState(items_log.groups, items_log.date) groups,
argMaxState(app_id, items_log.date) app_id,
argMaxState(app_category, items_log.date) app_category,
argMaxState(app_sub_category, items_log.date) app_sub_category,
minState(items_log.date) start_date,
maxState(items_log.date) end_date,
-- maxState(date) + toUInt64(argMaxMerge(argMaxState(duration), date) / 1000) end_date,
sumState(items_log.duration) sum_duration
FROM items_log
GROUP BY person_id, station_id, hostname, toDate(items_log.date), app_id, app_sub_category, app_category
DC
M
DC
DC
M
MM
<storage_configuration>
<disks>
<disk2>
<path>/var/lib/clickhouse_2/</path>
</disk2>
<disk3>
<path>/var/lib/clickhouse_3/</path>
</disk3>
</disks>
<policies>
<default>
<volumes>
<default>
<disk>default</disk>
<max_data_part_size_bytes>50000000</max_data_part_size_bytes>
</default>
<data>
<disk>disk2</disk>
<disk>disk3</disk>
</data>
</volumes>
<move_factor>0.97</move_factor>
</default>
</policies>
</storage_configuration>
DC
CREATE MATERIALIZED VIEW items_agg
ENGINE = AggregatingMergeTree() PARTITION BY date ORDER BY (person_id, station_id, hostname, date, app_id, app_sub_category, app_category)
POPULATE AS SELECT
station_id,
hostname,
person_id,
toDate(items_log.date) date,
argMaxState(items_log.groups, items_log.date) groups,
argMaxState(app_id, items_log.date) app_id,
argMaxState(app_category, items_log.date) app_category,
argMaxState(app_sub_category, items_log.date) app_sub_category,
minState(items_log.date) start_date,
maxState(items_log.date) end_date,
-- maxState(date) + toUInt64(argMaxMerge(argMaxState(duration), date) / 1000) end_date,
sumState(items_log.duration) sum_duration
FROM items_log
GROUP BY person_id, station_id, hostname, toDate(items_log.date), app_id, app_sub_category, app_category
ORDER BY
поля которые argMaxState
, так не работает, вы неправильно поняли зачем AggregatingMergeTree
нужен ORDER BY
AggregatingMergeTree
использует ORDER BY
поля, чтобы делать сам aggregate в момент мержаIL
ORDER BY
поля которые argMaxState
, так не работает, вы неправильно поняли зачем AggregatingMergeTree
нужен ORDER BY
AggregatingMergeTree
использует ORDER BY
поля, чтобы делать сам aggregate в момент мержаC
DC
DC
SS
DC
SELECT
1,
arrayJoin(emptyArrayToSingle(cast([], 'Array(String)')))
┌─1─┬─arrayJoin(emptyArrayToSingle(CAST(array(), 'Array(String)')))─┐
│ 1 │ │
└───┴───────────────────────────────────────────────────────────────┘
C