The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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;