如何在 ClickHouse 中向可执行 UDF 发送多个参数?

2023-12-03

我有一个输出输入的 python 脚本:

#!/usr/bin/python3

import sys

if __name__ == '__main__':
    i = 0
    for line in sys.stdin:
        print(i, line, end='')
        sys.stdout.flush()
        i += 1

该脚本通过以下配置连接到 ClickHouse:

<functions>
    <function>
        <type>executable</type>
        <name>test_function_python</name>
        <return_type>String</return_type>
        <argument><type>Int64</type></argument>
        <format>TabSeparated</format>
        <command>test_function.py</command>
        <execute_direct>1</execute_direct>
    </function>
</functions>

该脚本是从 ClickHouse 调用的:

SELECT test_function_python(number) AS x        
FROM numbers(5)                                 
                                                
                                                
┌─x───┐                                         
│ 0 0 │                                         
│ 1 1 │                                         
│ 2 2 │                                         
│ 3 3 │                                         
│ 4 4 │                                         
└─────┘                                         

到目前为止一切顺利,但我想将多个参数发送到 UDF,如下所示:

SELECT test_function_python(number, number + 3) AS x        
FROM numbers(5)                                 

那么如何从Python代码中获取两个参数呢?


使用多个<argument>函数配置中的标签(python_function.xml in /etc/clickhouse-server:

<functions>                                     
    <function>                                  
        <type>executable</type>                 
        <name>test_function_python</name>       
        <return_type>String</return_type>       
        <argument><type>String</type></argument>
        <argument><type>String</type></argument>
        <format>TabSeparated</format>           
        <command>test_function.py</command>     
        <execute_direct>1</execute_direct>      
    </function>                                 
</functions>                                    

然后将两个参数传递给 python 函数:

SELECT test_function_python(number, number + 1) AS x   
FROM numbers(10)                                       
                                                       
Query id: 562676d4-e7fb-4aec-86b4-fef41fec4864         
                                                       
┌─x─────────────────┐                                  
│ 0: arg1=0 arg2=1  │                                  
│ 1: arg1=1 arg2=2  │                                  
│ 2: arg1=2 arg2=3  │                                  
│ 3: arg1=3 arg2=4  │                                  
│ 4: arg1=4 arg2=5  │                                  
│ 5: arg1=5 arg2=6  │                                  
│ 6: arg1=6 arg2=7  │                                  
│ 7: arg1=7 arg2=8  │                                  
│ 8: arg1=8 arg2=9  │                                  
│ 9: arg1=9 arg2=10 │                                  
└───────────────────┘                                  

Python 代码(test_function.py):

#!/usr/bin/python3

import sys

if __name__ == '__main__':
    i = 0
    for line in sys.stdin:
        arg1, arg2 = line.split('\t')
        print(f'{i}: arg1={arg1} arg2={arg2}', end='')
        sys.stdout.flush()
        i += 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 ClickHouse 中向可执行 UDF 发送多个参数? 的相关文章

  • Spark 请求最大计数

    我是 Spark 的初学者 我尝试请求允许我检索最常访问的网页 我的要求如下 mostPopularWebPageDF logDF groupBy webPage agg functions count webPage alias cntW
  • 如何在 AWS CDK 创建的 Python Lambda 函数中安装外部模块?

    我在 Cloud9 中使用 Python AWS CDK 并且我部署简单的 Lambda 函数那应该是发送 API 请求到 Atlassian 的 API当对象上传到 S3 存储桶时 也是由 CDK 创建的 这是我的 CDK 堆栈代码 fr
  • 使用 python 进行串行数据记录

    Intro 我需要编写一个小程序来实时读取串行数据并将其写入文本文件 我在读取数据方面取得了一些进展 但尚未成功地将这些信息存储在新文件中 这是我的代码 from future import print function import se
  • 我怎样才能更多地了解Python的内部原理? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我使用Python编程已经有半年多了 我对Python内部更感兴趣 而不是使用Python开发应用程序
  • 如何正确地将 MIDI 刻度转换为毫秒?

    我正在尝试将 MIDI 刻度 增量时间转换为毫秒 并且已经找到了一些有用的资源 MIDI Delta 时间刻度到秒 http www lastrayofhope co uk 2009 12 23 midi delta time ticks
  • 如何使用 Plotly 中的直方图将所有离群值分入一个分箱?

    所以问题是 我可以在 Plotly 中绘制直方图 其中所有大于某个阈值的值都将被分组到一个箱中吗 所需的输出 但使用标准情节Histogram类我只能得到这个输出 import pandas as pd from plotly import
  • 如何在 pytest 中将单元测试和集成测试分开

    根据维基百科 https en wikipedia org wiki Unit testing Description和各种articles https techbeacon com devops 6 best practices inte
  • 为什么在 Python 2.4 中使用 Unicode 数据会出现 ASCII 编码错误,而在 2.7 中却不会?

    我有一个程序 当在 Python 2 7 中运行时 会生成正确的 Unicode 输出到标准输出 当在 Python 2 4 中运行时 我得到UnicodeEncodeError ascii codec can t encode chara
  • python suds SOAP 请求中的名称空间前缀错误

    我使用 python suds 来实现客户端 并且在发送的 SOAP 标头中得到了错误的命名空间前缀 用于定义由element ref 在 wsdl 中 wsdl 正在引用数据类型 xsd 文件 请参见下文 问题出在函数上GetRecord
  • 对图像块进行多重处理

    我有一个函数必须循环遍历图像的各个像素并计算一些几何形状 此函数需要很长时间才能运行 在 24 兆像素图像上大约需要 5 小时 但似乎应该很容易在多个内核上并行运行 然而 我一生都找不到一个有据可查 解释充分的例子来使用 Multiproc
  • Python urllib.request.urlopen:AttributeError:'bytes'对象没有属性'data'

    我正在使用 Python 3 并尝试连接到dstk 我收到错误urllib包裹 我对SO进行了很多研究 但找不到与这个问题类似的东西 api url self api base street2coordinates api body jso
  • 使用鼻子获取设置中当前测试的名称

    我目前正在使用鼻子编写一些功能测试 我正在测试的库操作目录结构 为了获得可重现的结果 我存储了一个测试目录结构的模板 并在执行测试之前创建该模板的副本 我在测试中执行此操作 setup功能 这确保了我在测试开始时始终具有明确定义的状态 现在
  • 将 JSON 对象传递给带有请求的 url

    所以 我想利用 Kenneth 的优秀请求模块 https github com kennethreitz requests 在尝试使用时偶然发现了这个问题自由库API http wiki freebase com wiki API 基本上
  • Pandas 根据 diff 列形成簇

    我正在尝试使用 Pandas 根据表示时间 以秒为单位 的列中的差异来消除数据框中的一些接近重复项 例如 import pandas as pd numpy as np df pd DataFrame 1200 1201 1233 1555
  • 在 Pandas 中使用正则表达式的多种模式

    我是Python编程的初学者 我正在探索正则表达式 我正在尝试从 描述 列中提取一个单词 数据库名称 我无法给出多个正则表达式模式 请参阅下面的描述和代码 描述 Summary AD1 Low free DATA space in data
  • Python 将日志滚动到变量

    我有一个使用多线程并在服务器后台运行的应用程序 为了无需登录服务器即可监控应用程序 我决定包括Bottle http bottlepy org为了响应一些HTTP端点并报告状态 执行远程关闭等 我还想添加一种查阅日志文件的方法 我可以使用以
  • 当鼠标悬停在上面时,intellisense vscode 不显示参数或文档

    我正在尝试将整个工作流程从 Eclipse 和 Jupyter Notebook 迁移到 VS Code 我安装了 python 扩展 它应该带有 Intellisense 但它只是部分更糟糕 我在输入句点后收到建议 但当将鼠标悬停在其上方
  • 无法在前端使用 JavaScript Fetch API 将文件上传到 FastAPI 后端

    我正在尝试弄清楚如何将图像发送到我的 API 并验证生成的token那是在header的请求 到目前为止 这就是我所处的位置 app post endreProfilbilde async def endreProfilbilde requ
  • 您可以将操作直接应用于map/reduce/filter 中的参数吗?

    map and filter通常可以与列表理解互换 但是reduce并不那么容易被交换map and filter 此外 在某些情况下我仍然更喜欢函数语法 但是 当您需要对参数本身进行操作时 我发现自己正在经历语法体操 最终必须编写整个函数
  • Elastic Beanstalk 中的 enum34 问题

    我正在尝试在 Elastic Beanstalk 中设置 django 环境 当我尝试通过requirements txt 文件安装时 我遇到了python3 6 问题 File opt python run venv bin pip li

随机推荐

  • 启动层初始化时发生错误 FindException: Module not found

    使用 Java 9 执行简单的 Hello World 程序会导致以下错误消息 boot层初始化时出错java lang module FindException 找不到模块 com pantech myModule 我执行的命令行是 ja
  • 使用 VBA 宏在 CATIA V5R19 中实例化 PowerCopy

    我不知道如何使用 VBA 宏实例化 Power copy 我有一个 CATPart1 其 Power copy 名称为 MyPC 我想在当前部分实例化这个超级副本 仅举例来说 此超级复制输入为 Plane Start point 和 End
  • 查找“立体校正”两个摄像机之间的旋转矩阵

    所以我有一个深度图以及相机的外部和内部 我想取回 3D 点和表面法线 我正在使用该函数重新投影图像至 3D 在stereo rectify函数中找到Q如何得到旋转矩阵between第一和第二相机的坐标系 我有单独的旋转矩阵和平移向量 但如何
  • Android Studio:使用 Mongo Java 驱动程序连接到 MongoDB 服务器

    关于这个问题有很多帖子 但似乎没有人能解决问题 所以也许有些事情已经改变了 我正在尝试将我的 Android 应用程序连接到位于 mLab 上的 MongoDB 服务器 我正在使用 Mongo Java Drived 当然已经将库添加到了
  • Vera ++ TCL规则:列出所有局部变量[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我正在尝试为 vera 静
  • Datagrid (WPF) 以编程方式设置列样式(不是 xaml)

    我已经看过了 但还没有找到我正在寻找的确切答案 我有一个绑定到数据源的 DataGrid 视图 我想在带有数据网格的窗口可见后以编程方式设置列的样式 我也想根据一些行为时不时地改变它 我尝试使用 DataGridTemplateColumn
  • 如何在C#中删除注册表值

    我可以使用 Microsoft Win32 Registry 类获取 设置注册表值 例如 Microsoft Win32 Registry SetValue HKEY CURRENT USER Software Microsoft Wind
  • 为我的条形码阅读器读取和写入数据到缓冲区的最佳方法是什么?

    我需要用 C 语言为 Linux 的条形码阅读器编写一个驱动程序 条形码阅读器通过串行总线工作 当我向条形码阅读器发送一组命令时 条形码阅读器应该向我返回状态消息 我设法配置端口并创建信号处理程序 在信号处理程序中 我读取串行总线接收的数据
  • 如何搜索在 Json 中注册为数组的日期?

    如何搜索在 Json 中注册为数组的日期 PostgreSQL 是数据库 下面是相关代码 1 Model class Business db Model tablename business id db Column db Integer
  • GitHub api 获取最后 N 次提交

    是否可以使用 GitHub API 获取 GitHub 存储库中特定分支的最后 N 次提交 我刚刚发现了一些关于提交的 GitHub api 详细信息here 但他们都没有提供有关最后 N 次提交的详细信息 任何人都可以对此提供更好的想法吗
  • 具体详细说明了 NSUserDefaultsDidChangeNotification 上的默认值已更改的内容

    我开始进入 NSUserDefaults 的内部密室 现在我可以使用提供的选择器加上 NSNotification 对象作为参数成功拦截 NSUserDefaultsDidChangeNotification 通知 然而 返回的 NSNot
  • R-lang:如果等于引号,则删除第一个字符

    R新手 我正在尝试从数据框中的行的开头和结尾删除 如果引号不是第一个或最后一个字符 我不想删除 我不确定为什么以下内容不适用于我的数据的数据框 其中每一行都是文本的数据点 引号并不是字符串 而是文本的一部分 数据框的一行看起来像这样 x l
  • 在 bash 中获取当前日期而不生成子进程

    这个问题纯粹是好奇心 通过运行以下命令很容易获得日期date来自 bash 的命令 但它是一个外部可执行文件 需要生成一个子进程 我想知道是否可以在没有子进程的情况下获取当前时间 日期的格式 我只能在以下上下文中找到对日期 时间格式的引用P
  • RabbitMQ 消费者过载

    我一直在阅读有关 AMQP 消息传递确认的原理 https www rabbitmq com confirms html 确实很有帮助且写得很好的文章 但有关消费者致谢的一个特别的事情确实令人困惑 以下是引用 使用自动确认模式时需要考虑的另
  • MYSQL中递归存储过程获取分层数据的性能

    我有餐桌员工 员工 emp id int 主键 emp name varchar 50 mngr id int 这里 mngr id 要么为 null 要么包含有效的 emp id 这样就形成了组织中员工的层次结构 为了遍历整个层次结构 我
  • Tomcat - UnsupportedClassException

    我在 Tomcat Web 应用程序中部署已编译的类时遇到问题 我正在部署一个要从 servlet 调用的类 但是当我运行该应用程序时 它无法告诉我一个ServletException Error allocating the servle
  • 需要 VSCode sendSequence 键绑定来执行上一个命令、下一个命令、移动到行首、移动到行尾终端命令

    我当前的自定义键绑定 key alt b command workbench action terminal sendSequence when terminalFocus args text u0017 key alt j command
  • 求解线性方程。使用 numpy 的三个变量[重复]

    这个问题在这里已经有答案了 我目前需要一门课程 它必须能够显示和求解如下所示的方程系统 2x 4y 4z 8 34x 3y z 30 x y z 108 我认为编写一个类将方程系统的左侧事物转换为类似矩阵的对象是一个好主意 这是该系统的自制
  • 最大并发 Socket.IO 连接数

    这个问题以前曾被问过 但最近没有被问过 也没有明确的答案 使用 Socket io 在需要添加另一台服务器之前 是否存在可以维持的最大并发连接数 有谁知道有哪些活跃的生产环境正在大规模使用 websockets 特别是 socket io
  • 如何在 ClickHouse 中向可执行 UDF 发送多个参数?

    我有一个输出输入的 python 脚本 usr bin python3 import sys if name main i 0 for line in sys stdin print i line end sys stdout flush