executable crea una tabla a partir de la salida de una función definida por el usuario (UDF) que se define en un script que envía filas a stdout. El script ejecutable se almacena en el directorio users_scripts y puede leer datos de cualquier fuente. Asegúrese de que su servidor ClickHouse tenga todos los paquetes necesarios para ejecutar el script. Por ejemplo, si es un script de Python, asegúrese de que el servidor tenga instalados los paquetes de Python necesarios.
Opcionalmente, puede incluir una o más consultas de entrada que transmitan sus resultados a stdin para que el script los lea.
Una ventaja clave de las funciones UDF convencionales frente a la función de tabla
executable y el motor de tabla Executable es que las funciones UDF convencionales no pueden cambiar el número de filas. Por ejemplo, si la entrada contiene 100 filas, el resultado debe devolver 100 filas. Al usar la función de tabla executable o el motor de tabla Executable, su script puede realizar cualquier transformación de datos que desee, incluidas agregaciones complejas.Sintaxis
executable requiere tres parámetros y acepta una lista opcional de consultas de entrada:
script_name: el nombre de archivo del script. Se guarda en la carpetauser_scripts(la carpeta predeterminada de la configuraciónuser_scripts_path)format: el formato de la tabla generadastructure: el esquema de la tabla generadainput_query: una consulta opcional (o una colección o varias consultas) cuyos resultados se pasan al script a través de stdin
Si va a invocar el mismo script repetidamente con las mismas consultas de entrada, considere usar el motor de tabla
Executable.generate_random.py y se guarda en la carpeta user_scripts. Lee un número i y muestra i cadenas aleatorias, cada una precedida por un número separado por una tabulación:
Configuración
send_chunk_header- controla si se envía el número de filas antes de enviar un fragmento de datos para su procesamiento. El valor predeterminado esfalse.pool_size— Tamaño del pool. Si se especifica 0 comopool_size, no hay restricciones en el tamaño del pool. El valor predeterminado es16.max_command_execution_time— Tiempo máximo de ejecución del comando del script ejecutable para procesar un bloque de datos. Se especifica en segundos. El valor predeterminado es 10.command_termination_timeout— el script ejecutable debe contener el bucle principal de lectura y escritura. Después de que se destruye la función de tabla, se cierra la tubería y el ejecutable tendrácommand_termination_timeoutsegundos para finalizar antes de que ClickHouse envíe la señal SIGTERM al proceso hijo. Se especifica en segundos. El valor predeterminado es 10.command_read_timeout- tiempo de espera para leer datos de stdout del comando en milisegundos. El valor predeterminado es 10000.command_write_timeout- tiempo de espera para escribir datos en stdin del comando en milisegundos. El valor predeterminado es 10000.
Pasar los resultados de una consulta a un script
Executable sobre cómo pasar los resultados de una consulta a un script. A continuación se muestra cómo ejecutar el mismo script de ese ejemplo mediante la función de tabla executable: