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();