input(structure) - 指定された構造でサーバーに送信されたデータを、別の構造を持つテーブルに効率よく変換して挿入できるテーブル関数です。
structure - サーバーに送信されるデータの構造です。形式は 'column1_name column1_type, column2_name column2_type, ...' です。
たとえば、'id UInt32, name String' です。
この関数は INSERT SELECT クエリでのみ使用でき、使用できるのは 1 回だけです。ただし、それ以外の動作は通常のテーブル関数と同じです
(たとえば、サブクエリなどで使用できます) 。
データは通常の INSERT クエリと同じ方法で送信でき、利用可能な任意のフォーマットで渡せます。
そのフォーマットはクエリの末尾で指定する必要があります (通常の INSERT SELECT とは異なります) 。
この関数の主な特徴は、サーバーがクライアントからデータを受信すると同時に、それを SELECT 句内の式の一覧に従って変換し、
ターゲットテーブルに挿入することです。転送されたすべてのデータを保持する一時テーブルは作成されません。
例
testテーブルの構造が(a String, b String)で、data.csvのデータ構造がそれとは異なる(col1 String, col2 Date, col3 Int32)であるとします。data.csvからtestテーブルにデータを挿入しつつ同時に変換するクエリは、次のようになります。
data.csvに、テーブルtestと同じ構造であるtest_structureのデータが含まれている場合、次の2つのクエリは等価です: