Skip to main content
SQLite データベースに格納されているデータに対してクエリを実行できます。

構文

引数

戻り値

  • 元のSQLiteテーブルと同じカラムを持つテーブルオブジェクト。

テーブル名の代わりにクエリを渡す

第2引数には、テーブル名の代わりに、そのまま SQLite に渡される SELECT クエリを指定できます。生成されるテーブルの構造は、クエリ結果から推論されます。クエリは、サブクエリとして記述することも、query 関数で囲むこともできます。
このようなテーブルは読み取り専用で、INSERT はできません。同じ構文は SQLite テーブルエンジンでもサポートされています。
サブクエリ形式 (SELECT ...) は ClickHouse で解析され、SQLite に送信される前に再シリアル化されます。そのため、有効な ClickHouse SQL である必要があります。ClickHouse が解析しない SQLite 固有の構文を渡すには、query('...') 形式を使用してください。この形式では、テキストがそのまま SQLite に送信されます。また、渡されたクエリには、外側の ClickHouse クエリの WHERE、LIMIT、aggregation などは プッシュダウンされず、クエリ結果全体を取得した後に ClickHouse 側で適用されます。SQLite から読み取るデータを制限するには、渡すクエリ内に filter を記述してください。external_table_strict_query = 1 を指定すると、テーブル関数のカラムに対する外側の filter は渡されたクエリ内にプッシュできないため、ローカルで適用されず、代わりに例外として拒否されます。この check は、トップレベルの WHERE predicate と、トップレベルの AND の各項を対象とします。このテーブルのカラムに対する PREWHERE はこの設定の対象ではありません。このテーブルエンジンは PREWHERE をサポートしておらず、そのようなクエリは設定に関わらず ILLEGAL_PREWHERE で拒否されます。この check は filter がプッシュダウンされ得る場所でのみ実行されます。すなわち、このテーブルがクエリ内の唯一のテーブルである場合、INNER JOIN のいずれかの側にある場合、または OUTER JOIN の保持側 (LEFT JOIN の左側、RIGHT JOIN の右側) にある場合です。LEFT/RIGHT JOIN の非保持側や FULL JOIN のいずれの側でも何もプッシュダウンされず、check も行われないため、このテーブルのカラムに対する filter は厳格モードであっても join 後にローカルで適用されます。check が実行される箇所では、外側のクエリで join されている他のテーブルを参照する predicate はプッシュダウンされず、check の対象から除外されます。これは、その predicate が join 側のみを参照する場合でも、AND 以外の単一の expression (たとえば OR) 内でこのテーブルと混在している場合でも同様です。そのような predicate は通常の ClickHouse の評価タイミング (join 後の WHERE、join 前の PREWHERE) を保持し、拒否されません。

例

Query
Response

関連

最終更新日 2026年9月26日