Module: ClickHouse::Client
- Defined in:
- lib/click_house/client.rb,
lib/click_house/client/query.rb,
lib/click_house/client/quoting.rb,
lib/click_house/client/version.rb,
lib/click_house/client/database.rb,
lib/click_house/client/redactor.rb,
lib/click_house/client/response.rb,
lib/click_house/client/formatter.rb,
lib/click_house/client/query_like.rb,
lib/click_house/client/arel_engine.rb,
lib/click_house/client/arel_visitor.rb,
lib/click_house/client/configuration.rb,
lib/click_house/client/query_builder.rb,
lib/click_house/client/bind_index_manager.rb
Defined Under Namespace
Modules: Quoting, Redactor Classes: ArelEngine, ArelVisitor, BindIndexManager, Configuration, Database, Formatter, Query, QueryBuilder, QueryLike, Response
Constant Summary collapse
- Error =
Class.new(StandardError)
- ConfigurationError =
Class.new(Error)
- DatabaseError =
Class.new(Error)
- QueryError =
Class.new(Error)
- VERSION =
"0.8.0"
Class Method Summary collapse
- .configuration ⇒ Object
- .configure {|configuration| ... } ⇒ Object
- .database_configured?(database, configuration = self.configuration) ⇒ Boolean
-
.execute(query, database, configuration = self.configuration) ⇒ Object
Executes any kinds of database query without returning any data (INSERT, DELETE).
-
.insert_csv(query, io, database, configuration = self.configuration) ⇒ Object
Inserts a gzip-compressed CSV to ClickHouse.
-
.select(query, database, configuration = self.configuration) ⇒ Object
Executes a SELECT database query.
Class Method Details
.configuration ⇒ Object
27 28 29 |
# File 'lib/click_house/client.rb', line 27 def configuration @configuration ||= Configuration.new end |
.configure {|configuration| ... } ⇒ Object
31 32 33 34 |
# File 'lib/click_house/client.rb', line 31 def configure yield(configuration) configuration.validate! end |
.database_configured?(database, configuration = self.configuration) ⇒ Boolean
42 43 44 |
# File 'lib/click_house/client.rb', line 42 def self.database_configured?(database, configuration = self.configuration) !!configuration.databases[database] end |
.execute(query, database, configuration = self.configuration) ⇒ Object
Executes any kinds of database query without returning any data (INSERT, DELETE)
58 59 60 61 62 63 64 |
# File 'lib/click_house/client.rb', line 58 def self.execute(query, database, configuration = self.configuration) instrumented_execute(query, database, configuration) do |response, instrument| expose_summary(response.headers, instrument) end true end |
.insert_csv(query, io, database, configuration = self.configuration) ⇒ Object
Inserts a gzip-compressed CSV to ClickHouse
Usage:
Create a compressed CSV file: > File.binwrite(“my_csv.csv”, ActiveSupport::Gzip.compress(“idn10n20”))
Invoke the INSERT query: > ClickHouse::Client.insert_csv(‘INSERT INTO events (id) FORMAT CSV’, File.open(“my_csv.csv”), :main)
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/click_house/client.rb', line 75 def self.insert_csv(query, io, database, configuration = self.configuration) db = lookup_database(configuration, database) headers = db.headers.merge( 'Transfer-Encoding' => 'chunked', 'Content-Encoding' => 'gzip' ) query = ClickHouse::Client::Query.build(query) ActiveSupport::Notifications.instrument('sql.click_house', { query:, database: }) do |instrument| response = configuration.http_post_proc.call( db.build_custom_uri(extra_variables: { query: query.to_sql }).to_s, headers, io ) raise DatabaseError, response.body unless response.success? expose_summary(response.headers, instrument) end true end |
.select(query, database, configuration = self.configuration) ⇒ Object
Executes a SELECT database query
47 48 49 50 51 52 53 54 55 |
# File 'lib/click_house/client.rb', line 47 def self.select(query, database, configuration = self.configuration) instrumented_execute(query, database, configuration) do |response, instrument| parsed_response = configuration.json_parser.parse(response.body) instrument[:statistics] = parsed_response['statistics']&.symbolize_keys Formatter.format(parsed_response) end end |