APPLY 修饰符对匹配的列应用函数,这使它在数据分析和转换任务中特别实用。
我们将借助 New York taxis 数据集 学习如何使用这一功能。你也可以在 ClickHouse SQL playground 中找到该数据集。
选择匹配某个模式的列
_amount 的列。无需手动输入每个列名,我们可以使用 COLUMNS 表达式结合正则表达式来实现:
在 SQL playground 中试用此查询此查询返回前 10 行,但仅返回名称与模式
.*_amount 匹配的列 (即任意字符后跟 “_amount”) 。
fee 或 tax 的列。
我们可以更新正则表达式,把它们也包含进来:
在 SQL playground 中尝试此查询
选择多个匹配模式
在 SQL playground 中试用此查询
对所有列应用函数
APPLY 修饰符,对每一列应用函数。
例如,如果我们想找出这些列各自的最大值,可以运行以下查询:
在 SQL playground 中试用此查询
在 SQL playground 中试试这个查询
avg 函数,再应用 round 函数:
在 SQL playground 中试试这个查询
APPLY 修饰符还接受 lambda,这让我们可以灵活地让 round 函数将平均值四舍五入到 2 位小数:
在 SQL playground 中试运行此查询
替换列
REPLACE 修饰符来实现:它会替换某一列,同时保持其他列不变。
在 SQL playground 中试试此查询
排除列
EXCEPT 修饰符来排除某一列。例如,要去掉 tolls_amount 列,可以编写如下查询:
在 SQL playground 中试运行此查询