executable crée une table à partir de la sortie d’une fonction définie par l’utilisateur (UDF) que vous définissez dans un script qui écrit des lignes sur stdout. Le script exécutable est stocké dans le répertoire users_scripts et peut lire des données à partir de n’importe quelle source. Assurez-vous que votre serveur ClickHouse dispose de tous les paquets nécessaires pour exécuter ce script. Par exemple, s’il s’agit d’un script Python, assurez-vous que les paquets Python requis sont installés sur le serveur.
Vous pouvez également inclure une ou plusieurs requêtes d’entrée dont les résultats sont transmis à stdin pour être lus par le script.
L’un des principaux avantages de la fonction de table
executable et du moteur de table Executable par rapport aux fonctions UDF classiques est que ces dernières ne peuvent pas modifier le nombre de lignes. Par exemple, si l’entrée contient 100 lignes, le résultat doit également en renvoyer 100. Lorsque vous utilisez la fonction de table executable ou le moteur de table Executable, votre script peut effectuer toutes les transformations de données souhaitées, y compris des agrégations complexes.Syntaxe
executable nécessite trois paramètres et accepte une liste facultative de requêtes d’entrée :
script_name: le nom du fichier du script, enregistré dans le dossieruser_scripts(dossier par défaut du paramètreuser_scripts_path)format: le format de la table généréestructure: le schéma de la table généréeinput_query: une requête facultative (ou une collection de requêtes) dont les résultats sont transmis au script via stdin
Si vous comptez invoquer plusieurs fois le même script avec les mêmes requêtes d’entrée, envisagez d’utiliser le moteur de table
Executable.generate_random.py et est enregistré dans le dossier user_scripts. Il lit un nombre i et affiche i chaînes aléatoires, chacune précédée d’un nombre séparé par une tabulation :
Paramètres
send_chunk_header- indique s’il faut envoyer le nombre de lignes avant d’envoyer un fragment de données à traiter. La valeur par défaut estfalse.pool_size— Taille du pool. Sipool_sizevaut 0, il n’y a aucune restriction sur la taille du pool. La valeur par défaut est16.max_command_execution_time— Temps d’exécution maximal de la commande du script exécutable pour le traitement d’un bloc de données. Exprimé en secondes. La valeur par défaut est 10.command_termination_timeout— le script exécutable doit contenir une boucle principale de lecture-écriture. Après la destruction de la fonction de table, le pipe est fermé et le fichier exécutable dispose decommand_termination_timeoutsecondes pour s’arrêter avant que ClickHouse n’envoie le signal SIGTERM au processus enfant. Exprimé en secondes. La valeur par défaut est 10.command_read_timeout- délai d’expiration pour la lecture des données depuis le stdout de la commande, en millisecondes. La valeur par défaut est 10000.command_write_timeout- délai d’expiration pour l’écriture des données vers le stdin de la commande, en millisecondes. La valeur par défaut est 10000.
Transmettre les résultats de la requête à un script
Executable expliquant comment transmettre les résultats de la requête à un script. Voici comment exécuter le même script que dans cet exemple à l’aide de la fonction de table executable :