Name
QBit::Application::Model::DB::clickhouse::Table - Class for ClickHouse tables.
Description
Implements methods for ClickHouse tables.
Package methods
add
Arguments:
$data - reference to hash or object(QBit::Application::Model::DB::Query)
%opts - additional options
fields - array ref (order for fields)
Return values:
$count - number of new records
Example:
my $count = $app->db->stat->add({date => '2017-09-03', hits => 10}); # $count = 1, insert all fields
$count = $app->db->stat->add({date => '2017-09-03', hits => 10, not_exists => 'something'}, fields => [qw(date hits)]);
# $count = 1, insert only date and hits in this order
$app->db->stat->add(
$app->db->query->select(
table => $app->db->today_stat,
fields => [qw(date hits)],
filter => {date => '2017-09-17 19:19:23'}
),
fields => [qw(date hits)]
);
# clickhouse
INSERT INTO `stat` (`date`, `hits`) SELECT
`today_stat`.`date` AS `date`,
`today_stat`.`hits` AS `hits`
FROM `today_stat`
WHERE (
`today_stat`.`date` = '2017-09-17 19:19:23'
);
add_multi
ADD_CHUNK (records number in one statement; default: 1000)
$QBit::Application::Model::DB::clickhouse::ADD_CHUNK = 500;
Arguments:
$data - reference to array
%opts - additional options
fields - array ref (order for fields)
identical_rows - boolean (true: get field names from first row, false: Unites all fields from all rows; default: false)
ignore_extra_fields - boolean (true: ignore field names that not exists in table, false: throw exception; default: false)
Return values:
$count - records number
Example:
my $count = $app->db->stat->add_multi([{date => '2017-09-02', hits => 5}, {date => '2017-09-03', hits => 10}]); # $count = 2
$count = $app->db->stat->add_multi([
{date => '2017-09-02', hits => 5, not_exists => 'something'},
{date => '2017-09-03', hits => 10, not_exists => 'something'}
],
fields => [qw(date hits)]
);
# $count = 2, insert only date and hits in this order
create_sql
returns sql for create table.
No arguments.
Return values:
$sql - string
Example:
my $sql = $app->db->stat->create_sql();