Name

QBit::Application::Model::DB::clickhouse - Class for working with ClickHouse DB.

Description

Class for working with ClickHouse DB. It's not ORM.

GitHub

https://github.com/QBitFramework/QBit-Application-Model-DB-clickhouse

Install

  • cpanm QBit::Application::Model::DB::clickhouse

  • apt-get install libqbit-application-model-db-clickhouse-perl (http://perlhub.ru/)

Example:

__PACKAGE__->meta(
    tables => {
        stat => {
            fields => [
                {name => 'date', type => 'Date',},
                {name => 'hits', type => 'UInt32',},
            ],
            engine => {MergeTree => ['date', {'' => ['date', 'hits']}, \8192]}
        },
    },
);

Package methods

filter

Arguments:

  • $filter - filter (perl variables)

  • %opts - additional options

    • type - type (AND/OR NOT)

Return values:

  • $filter - object (QBit::Application::Model::DB::Filter)

Example:

my $filter = $app->clickhouse->filter([id => '=' => \23]);

query

Arguments:

  • %hash - options

    • without_table_alias - boolean(default: false)

Return values:

  • $query - object (QBit::Application::Model::DB::clickhouse::Query)

Example:

my $table = $app->clickhouse->stat;

my $query = $app->clickhouse->query();
$query->_field_to_sql(undef, 'hits', $table); # `stat`.`hits`

my $query2 = $app->clickhouse->query(without_table_alias => TRUE);
$query->_field_to_sql(undef, 'hits', $table); # `hits`

Internal packages

QBit::Application::Model::DB::clickhouse::Field - class for ClickHouse fields;
QBit::Application::Model::DB::clickhouse::Query - class for ClickHouse queries;
QBit::Application::Model::DB::clickhouse::Table - class for ClickHouse tables;
QBit::Application::Model::DB::clickhouse::dbi - class for ClickHouse DBI;
QBit::Application::Model::DB::clickhouse::st - class for ClickHouse sth;