首页 > 其他分享 >三元运算符生成器 UDF

三元运算符生成器 UDF

时间:2024-05-27 20:35:44浏览次数:13  
标签:cnt 生成器 ret else 运算符 field flag UDF cond

 

UDFs User Defined Functions | ClickHouse Docs https://clickhouse.com/docs/en/sql-reference/functions/udf

 

def gen_sql_zone_if(range_list, field='cnt', group_val_flag='g'):
"""
[0,2)[2,3)[3,7)
与 if 函数相同。
CK-sql语法: cond ? then : else
e.g
[[1, 3], [3, 6], [7, 9]]
(cnt>=1 and cnt<3) ? g0 : (cnt>=3 and cnt<6) ? g1 : (cnt>=7 and cnt<9) ? g2 : g3
[[3, 3], [3, 6], [7, 7]]
cnt<3 ? g0 : (cnt>=3 and cnt<6) ? g1 : cnt>=7 ? g2 : g3
"""
n = len(range_list)
n1 = n - 1
pre = ''
ret = ''
else_flag = 'else'
for i in range(n):
l, r = range_list[i]
cond = f'''({field}>={l} and {field}<{r})'''
if l == r:
if i == 0:
# 负无穷
cond = f'''{field}<{r}'''
elif i == n1:
# 正无穷
cond = f'''{field}>={l}'''
else:
assert False, "区间端点值配置错误"
ret = f'''{cond} ? {group_val_flag}{i} : {else_flag}'''
if pre:
ret = pre.replace(else_flag, ret)
pre = ret
ret = ret.replace(else_flag, f'''{group_val_flag}{n}''')
return ret

 

 

翻译

搜索

复制

标签:cnt,生成器,ret,else,运算符,field,flag,UDF,cond
From: https://www.cnblogs.com/papering/p/18216451

相关文章

  • c++箭头运算符在类与结构体之间可以做的功能简介
    #include<iostream>//箭头运算符在类与结构体之间可以做的功能以及重载运算符。#include<string>classentity{public: intx;public: voidprint()const{std::cout<<"hello!"<<std::endl;}};classscopedPtr{private: entity*m_Obj;public: sc......
  • 迭代器和生成器
    迭代器和生成器都可以用来遍历数据集合,但它们在实现上略有不同。下面是关于迭代器和生成器的一些简要介绍:迭代器(Iterator):迭代器是一种对象,用于表示一个数据流。它可以用来遍历容器内的元素,如列表、集合、字典等。迭代器通常有两个方法:__iter__和__next__。__iter__方法返回迭代......
  • 【Java】短 URL 生成器设计:百亿短 URL 怎样做到无冲突?
    一、问题解析在社交媒体上,人们经常需要分享一些URL,但是有些URL可能会很长,比如:https://geek.qq.org/hybrid/pvip?utm_source=geek-pc-discover-banner&utm_term=geek-pc-discover-banner这样长的URL显然体验并不友好。我们期望分享的是一些更短、更易于阅读的短URL,比如像http......
  • 基于Cloudflare/CloudDNS/GitHub使用免费域名部署NewBing的AI服务
    部署前准备:Cloudflare账号https://dash.cloudflare.com/loginCloudDNS账号https://www.cloudns.net/GitHub账号https://github.com/Harry-zklcdc/go-proxy-bingaiCloudflare部署Worker  CloudDNS获取免费二级域名 GitHubNewBingAi项目https://github.co......
  • Java语言程序设计1 第二章:变量、数据类型、运算符、表达式
    一、变量1.概念:        计算机中的一块内存空间,存储数据的基本单元2.变量的组成部分:        数据类型、变量名、数据3.语法:        (1)先声明,再赋值:       ·数据类型变量名;//声明                变量......
  • Java涉及的运算符
    Java涉及的运算符有以下几种:算术运算符:用于进行基本的数学运算,包括加法(+)、减法(-)、乘法(*)、除法(/)、取余(%)等。赋值运算符:用于将一个值赋给变量,包括简单赋值(=)、加法赋值(+=)、减法赋值(-=)、乘法赋值(*=)、除法赋值(/=)、取余赋值(%=)等。关系运算符:用于比较两个值之间的关系,返回一个布......
  • HPING是一款网络工具,它是自由开源的,并且在网络安全领域被广泛使用。HPING最初是作为一
    HPING是一款网络工具,它是自由开源的,并且在网络安全领域被广泛使用。HPING最初是作为一个可编程和可定制的网络封包生成器和分析器而设计的,可以用于网络探测、扫描和攻击。HPING具有以下特点和功能:灵活性:HPING提供了很多选项和参数,可以自定义和控制生成的网络封包的各个方面,如......
  • 宝藏网站推荐-封面图片生成器
    封面图片生成器:封面图生成器|太空编程(spacexcode.com)最近爱上了写文案,在网上冲浪的时候发现一个宝藏网站。Spacecode,一个大神维护的个人网站,含有前端知识库、个人博客及他做的开源项目。其中封面图片生成器简单好用,完全免费,自来水一下。其他作品,如毛玻璃效果生成器、代码......
  • UES-08-迭代器和生成器
    循环问题在一般循环结构中,如果需要跟踪多个变量,情况将变得复杂,容易出错。迭代器用于迭代对象的对象,一般提供next()方法用于迭代对象中的元素,该方法返回两个变量,value表示返回的值,done表示是否还存在没有遍历的元素。functioncreate(items){vari=0;return{......
  • 白嫖免费图床!CloudFlare R2太香了!
    1为啥要折腾搭建一个专属图床?技术大佬写博客都用md格式,要在多平台发布,图片就得有外链后续如博客迁移,国内博客网站如掘金,简书,语雀等都做了防盗链,图片无法迁移2为啥选择CloudFlareR2跳转:https://dash.cloudflare.com/有白嫖额度免费CDN绑定域名不需要备案免费额......