做网站好还是app好/智能优化网站

做网站好还是app好,智能优化网站,购物型网站用dw做,html网页设计作品下载引言:解锁SQLMesh的动态查询能力 在复杂的数据处理场景中,手动编写重复性SQL代码不仅效率低下,还难以维护。SQLMesh作为新一代数据库中间件,通过其强大的宏系统赋予开发者编程式构建查询的能力。本文将重点解析两个核心操作符——…

引言:解锁SQLMesh的动态查询能力

在复杂的数据处理场景中,手动编写重复性SQL代码不仅效率低下,还难以维护。SQLMesh作为新一代数据库中间件,通过其强大的宏系统赋予开发者编程式构建查询的能力。本文将重点解析两个核心操作符——@STAR@GENERATE_SURROGATE_KEY,帮助您实现动态列选择、代理键生成等高级需求,真正释放SQL的灵活性。

在这里插入图片描述

一、@STAR操作符:动态列选择的瑞士军刀

1.1 核心功能与语法演进

@STAR操作符得名于SQL中的*通配符,但其能力远超简单的全列选择。它基于元数据动态生成列列表,支持类型转换、别名管理、前后缀修饰等特性。关键升级:旧参数except_已弃用,统一使用exclude关键字。

语法结构
@STAR(relation,                -- 关联表对象[alias := ]别名,          -- 可选别名[exclude := ]排除列列表,   -- 可选排除项[prefix := ]前缀字符串,    -- 可选前缀[suffix := ]后缀字符串,    -- 可选后缀[quote_identifiers := ]布尔值-- 是否标识符引用(默认true)
)

1.2 实战示例解析

场景1:基础动态选择

原始需求:从foo表中选择所有列,排除c列,为结果列添加baz_前缀和_qux后缀。

SELECT@STAR(foo, bar, exclude := [c], prefix := 'baz_', suffix := '_qux')
FROM foo AS bar

元数据驱动生成(假设foo表结构为a(TEXT)b(TEXT)c(TEXT)d(INT)):

SELECTCAST("bar"."a" AS TEXT) AS "baz_a_qux",  -- 类型显式转换CAST("bar"."b" AS TEXT) AS "baz_b_qux",CAST("bar"."d" AS INT) AS "baz_d_qux"     -- 排除c列,保留数值类型自动转换
FROM foo AS bar
场景2:多策略列选择

复杂需求:分别对不同列应用不同前缀,混合显式列与动态列。

SELECT@STAR(foo, bar, exclude := [c, d], prefix := 'ab_pre_'),  -- a,b列带ab_pre_前缀@STAR(foo, bar, exclude := [a, b, c], prefix := 'd_pre_'),  -- d列带d_pre_前缀my_column                                             -- 显式列保留
FROM foo AS bar

渲染结果

SELECTCAST("bar"."a" AS TEXT) AS "ab_pre_a",CAST("bar"."b" AS TEXT) AS "ab_pre_b",CAST("bar"."d" AS INT) AS "d_pre_d",my_column
FROM foo AS bar

1.3 高级技巧

  • 类型安全保障:当表元数据存在时,自动进行CAST转换(如d(INT)转为INT类型)
  • 标识符引用控制:设置quote_identifiers := false可生成无引号列名(适用于PostgreSQL等系统)
  • 混合使用模式:与显式列共存时保持语义清晰

二、@GENERATE_SURROGATE_KEY:代理键生成的终极方案

2.1 代理键的价值

在分布式系统和数据仓库场景中,为无主键表生成唯一标识符至关重要。@GENERATE_SURROGATE_KEY通过哈希算法将多列值转换为确定性唯一值,完美解决以下痛点:

  • 合并多源数据时的冲突问题
  • 缺失主键表的关联查询需求
  • 数据脱敏后的唯一性保持

在这里插入图片描述

2.2 工作原理与定制化

标准流程
  1. 类型标准化:所有列强制转为TEXT
  2. NULL值处理:替换为_sqlmesh_surrogate_key_null_特殊标记
  3. 列值连接:使用|分隔符拼接
  4. 哈希加密:默认采用MD5,支持扩展算法
可视化示例

输入数据:

a | b      | c
----+---+-----
1  | apple   | NULL
2  | banana  | cherry

生成过程:

CONCAT(COALESCE(CAST('1' AS TEXT), '_null'),'|',COALESCE(CAST('apple' AS TEXT), '_null'),'|',COALESCE(CAST(NULL AS TEXT), '_null')
)"1|apple|null"
→ MD5("1|apple|null")"e5a1a2d4e8..."

2.3 代码示例与对比

基础用法
SELECT@GENERATE_SURROGATE_KEY(a, b, c) AS surrogate_key
FROM orders

渲染SQL

SELECTMD5(CONCAT(COALESCE(CAST("a" AS TEXT), '_sqlmesh_surrogate_key_null_'),'|',COALESCE(CAST("b" AS TEXT), '_sqlmesh_surrogate_key_null_'),'|',COALESCE(CAST("c" AS TEXT), '_sqlmesh_surrogate_key_null_'))) AS "surrogate_key"
FROM "orders"
高级定制
SELECT@GENERATE_SURROGATE_KEY(user_id, email, created_at,hash_function := 'SHA256', separator := '::'  -- 自定义分隔符) AS unique_id
FROM users

渲染结果

SELECTSHA256(CONCAT(COALESCE(CAST("user_id" AS TEXT), '_null'),'::',COALESCE(CAST("email" AS TEXT), '_null'),'::',COALESCE(CAST("created_at" AS TEXT), '_null'))) AS "unique_id"
FROM "users"

三、综合应用与最佳实践

3.1 典型场景组合

-- 动态选择业务字段,生成代理键作为主键
SELECT*,@GENERATE_SURROGATE_KEY(@STAR(sales, alias := 's', exclude := [sale_id]), order_date) AS composite_pk
FROM sales

3.2 性能优化建议

  1. 缓存元数据:确保表结构元数据最新以获得准确类型转换
  2. 选择性排除exclude参数可减少不必要的计算量
  3. 算法权衡:MD5(128位)适合一般场景,SHA256(256位)提供更高安全性但需权衡性能

3.3 错误排查指南

  • 列不存在异常:验证relation参数是否指向有效表对象
  • 类型转换错误:检查源表中是否存在未声明的复杂类型
  • 哈希冲突风险:理解哈希算法的确定性特征,结合业务场景评估碰撞概率

四、总结:构建智能SQL的基石

@STAR@GENERATE_SURROGATE_KEY两大操作符的协同使用,标志着SQL编写范式从静态脚本向动态程序化语言的跨越。通过它们:

  • 开发效率:减少重复代码,提升模板复用率
  • 系统弹性:适应频繁变化的表结构而无需修改查询逻辑
  • 数据治理:自动化生成符合规范的主键/代理键

随着SQLMesh生态的持续完善,建议开发者深入探索其宏系统,结合具体业务场景打造高效、健壮的数据访问层。未来我们还将揭秘更多高级操作符,敬请持续关注!

延伸阅读

  • SQLMesh官方文档:宏操作符参考手册
  • 实战案例:使用@STAR实现多租户数据隔离
  • 性能调优:SQLMesh宏执行计划分析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/72736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超详细kubernetes部署k8s----一台master和两台node

一、部署说明 1、主机操作系统说明 2、主机硬件配置说明 二、主机准备(没有特别说明都是三台都要配置) 1、配置主机名和IP 2、配置hosts解析 3、防火墙和SELinux 4、时间同步配置 5、配置内核转发及网桥过滤 6、关闭swap 7、启用ipvs 8、句柄…

高光谱相机在水果分类与品质检测中的应用

一、核心应用领域 ‌外部品质检测‌ ‌表面缺陷识别:通过400-1000nm波段的高光谱成像,可检测苹果表皮损伤、碰伤等细微缺陷,结合图像分割技术实现快速分类‌。 ‌损伤程度评估:例如青香蕉的碰撞损伤会导致光谱反射率变化&#…

【蓝桥杯每日一题】3.17

🏝️专栏: 【蓝桥杯备篇】 🌅主页: f狐o狸x 他们说内存泄漏是bug,我说这是系统在逼我进化成SSR级程序员 OK来吧,不多废话,今天来点有难度的:二进制枚举 二进制枚举,就是…

Windows11 新机开荒(二)电脑优化设置

目录 前言: 一、注册微软账号绑定权益 二、此电脑 桌面图标 三、系统分盘及默认存储位置更改 3.1 系统分盘 3.2 默认存储位置更改 四、精简任务栏 总结: 前言: 本文承接上一篇 新机开荒(一) 上一篇文章地址&…

aws(学习笔记第三十三课) 深入使用cdk 练习aws athena

文章目录 aws(学习笔记第三十三课) 深入使用cdk学习内容:1. 使用aws athena1.1 什么是aws athena1.2 什么是aws glue1.2 为什么aws athena和aws glue一起使用 2. 开始练习aws athena2.1 代码链接2.2 整体架构2.3 代码解析2.3.1 创建测试数据的S3 bucket2.3.2 创建保…

OpenCV基础【图像和视频的加载与显示】

目录 一.创建一个窗口,显示图片 二.显示摄像头/多媒体文件 三.把摄像头录取到的视频存储在本地 四.鼠标回调事件 五.TrackBar滑动条 一.创建一个窗口,显示图片 import cv2img_path "src/fengjing.jpg" # 自己的图片路径 img cv2.imre…

使用 Google Firebase 控制台和 ESP8266 NodeMCU 的物联网控制 LED

使用 Google Firebase 控制台控制 LED ESP8266 您是否想过从世界任何地方控制任何外围设备?是的,IoT(物联网)使从任何地方控制任何设备成为可能,并且有许多 IoT 硬件和云平台可用于实现这一目标。在前面的教程中,我们已经介绍了许多 IoT 应用程序。今天,我们将使用 Goo…

平衡树的模拟实现

一.平衡树的介绍 平衡树是以二叉树结构为基础,同时引入了平衡因子进行了限制,以保证树的结点之间的高度差小于等于1,在插入删除结点时通过旋转的方法保持高度相对平衡,从而提高搜索等效率。 二.代码实现 1.平衡树结点 平衡树结…

Python----计算机视觉处理(Opencv:图像镜像旋转)

一、图像镜像旋转 图像的旋转是围绕一个特定点进行的,而图像的镜像旋转则是围绕坐标轴进行的。图像镜像旋转,也可 以叫做图像翻转,分为水平翻转、垂直翻转、水平垂直翻转三种。 通俗的理解为,当以图片的中垂线为x轴和y轴时&#x…

hibernate 自动生成数据库表和java类 字段顺序不一致 这导致添加数据库数据时 异常

hibernate 自动生成的数据库表和java类 字段顺序不一致 这导致该书写方式添加数据库数据时 异常 User user new User( null, username, email, phone, passwordEncoder.encode(password) ); return userRepository.save(user);Hibernate 默认不会保证数据库表字段的顺序与 Ja…

博客图床 VsCode + PigGo + 阿里云OSS

关键字 写博客,图床,VsCode,PigGo,阿里云OSS 背景环境 我想把我在本地写的markdown文档直接搬到CSDN上和博客园上,但是图片上传遇到了问题。我需要手动到不同平台上传文件,非常耗费时间和经历。 为了解决…

路由器安全研究:D-Link DIR-823G v1.02 B05 复现与利用思路

前言 D-Link DIR-823G v1.02 B05存在命令注入漏洞,攻击者可以通过POST的方式往 /HNAP1发送精心构造的请求,执行任意的操作系统命令。 漏洞分析 binwalk提取固件,成功获取到固件。 现在我们已经进入到应用里了,那么我们在进行分析…

idea 编译打包nacos2.0.3源码,生成可执行jar 包常见问题

目录 问题1 问题2 问题3 问题4 简单记录一下nacos2.0.3,编译打包的步骤,首先下载源码,免积分下载: nacos源码: https://download.csdn.net/download/fyihdg/90461118 protoc 安装包 https://download.csdn.net…

Android audio(8)-native音频服务的启动与协作(audiopolicyservice和audioflinger)

音频策略的构建 1、概述 2、AudiopolicyService 2.1 任务 2.2 启动流程 2.2.1 加载audio_policy.conf(xml)配置文件 2.2.2 初始化各种音频流对应的音量调节点 2.2.3 加载audio policy硬件抽象库 2.2.4设置输出设备 ps:audiopatch流程简介 2.2.5打开输出设…

DeepSeek:从入门到精通

DeepSeek是什么? DeepSeek是一家专注通用人工智能(AGI)的中国科技公司,主攻大模型研发与应 用。DeepSeek-R1是其开源的推理模型,擅长处理复杂任务且可免费商用。 Deepseek可以做什么? 直接面向用户或者支持…

【一起来学kubernetes】17、Configmap使用详解

前言概述核心特性创建 ConfigMap使用 ConfigMap1. **环境变量**2. **Volume 挂载**3. **命令行参数** 更新与热重载Docker容器中Java服务使用Configmap**一、通过环境变量注入****步骤说明****示例配置** **二、通过 Volume 挂载配置文件****步骤说明****示例配置** **三、动态…

网络空间安全(34)安全防御体系

前言 安全防御体系是一个多层次、多维度的系统,旨在保护组织或个人的信息资产免受各种网络攻击和威胁。 一、技术层面 网络边界防御 防火墙:部署在网络边界,通过设定规则允许或阻止特定流量的进出,保护内部网络不受外部攻击。入侵…

Linux 入门:权限的认识和学习

目录 一.shell命令以及运行原理 二.Linux权限的概念 1.Linux下两种用户 cannot open directory .: Permission denied 问题 2.Linux权限管理 1).是什么 2).为什么(权限角色目标权限属性) 3).文件访问者的分类(角色) 4).文…

【笔记】计算机网络——数据链路层

概述 链路是从一个结点到相邻结点的物理路线,数据链路则是在链路的基础上增加了一些必要的硬件和软件实现 数据链路层位于物理层和网络层之间,它的核心任务是在直接相连的节点(如相邻的交换机,路由器)之间提供可靠且…

搜广推校招面经五十四

美团推荐算法 一、手撕Transformer的位置编码 1.1. 位置编码的作用 Transformer 模型没有显式的序列信息(如 RNN 的循环结构),因此需要通过位置编码(Positional Encoding)为输入序列中的每个位置添加位置信息。位置…