在 clickhouse 表格上循环

Loop on clickhouse tables

提问人:Daris 提问时间:11/8/2023 最后编辑:Daris 更新时间:11/19/2023 访问量:150

问:

如何在clickhouse数据库中的表格上循环?Clickhouse 没有用于某些可迭代方案的循环和存储过程。

我想将 pandas queris 更改为 SQL,但我在表上有 for 循环,但在 Clickhouse 中我们没有这些命令。

数据库 循环人工智能 大数据 ClickHouse

评论

0赞 Rich Raposa 11/9/2023
熊猫?数据帧?youtube.com/watch?v=udlfgc5eVTY

答:

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 有足够的掌握,甚至更少。

评论

0赞 Pavel Kravtsov 11/19/2023
奇怪。但也许这可以帮助在单个集合上嵌套 for 循环
0赞 Community 11/20/2023
正如目前所写的那样,你的答案尚不清楚。请编辑以添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以在帮助中心找到有关如何写出好答案的更多信息。