提问人:Daris 提问时间:11/8/2023 最后编辑:Daris 更新时间:11/19/2023 访问量:150
在 clickhouse 表格上循环
Loop on clickhouse tables
问:
如何在clickhouse数据库中的表格上循环?Clickhouse 没有用于某些可迭代方案的循环和存储过程。
我想将 pandas queris 更改为 SQL,但我在表上有 for 循环,但在 Clickhouse 中我们没有这些命令。
答:
0赞
Pavel Kravtsov
11/9/2023
#1
SQL 语句对数据集执行操作,因此循环访问行集合毫无意义。
Control-of-Flow 语句可能会为您提供帮助(例如):CASE
import pandas as pd
# Sample DataFrame
df = pd.DataFrame({'value': [8, 12, 5, 14, 10]})
# Increment 'value' by 1 if it's greater than 10
result_values = []
for index, row in df.iterrows():
if row['value'] > 10:
result_values.append(row['value'] + 1)
else:
result_values.append(row['value'])
# Create a new DataFrame with the results
result_df = pd.DataFrame({'result_value': result_values})
将变成:
SELECT
CASE
WHEN value > 10 THEN value + 1
ELSE value
END AS result_value
FROM your_table;
评论
0赞
Daris
11/19/2023
谢谢你,帕维尔,这种方式只能适用于简单的场景。我尝试过解决我的问题,但它不是一个好的解决方案。
0赞
Daris
11/19/2023
#2
SQL 中的 for 循环可以通过 self-join 命令实现。我可以通过将表与自身连接,然后将条件应用于连接的表来执行 for 循环方案。 一般来说,对于每个循环,你需要一个自联接命令,如果你对 SQL 有足够的掌握,甚至更少。
评论