Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >SQL有宏吗?(特别是Presto风格的SQL)

SQL有宏吗?(特别是Presto风格的SQL)
EN

Stack Overflow用户
提问于 2018-11-30 08:56:42
回答 1查看 1.7K关注 0票数 0

我对SQL比较陌生,我发现自己很想在SQL中使用宏。

考虑:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT
  session_id,
  user_id,
  hitnumber,
  IF(
    eventinfo.eventcategory = 'search' AND eventinfo.eventaction = 'RunSearch',
    TRUE, FALSE
  ) issued_search,
FROM google_analytics.hits
JOIN (
  SELECT
    session_id
  FROM google_analytics.hits
  WHERE eventinfo.eventcategory = 'search' AND eventinfo.eventaction = 'RunSearch'
  GROUP BY session_id
) sessions_with_search ON hits.session_id = sessions_with_search.session_id

请注意,eventinfo.eventcategory = 'search' AND eventinfo.eventaction = 'RunSearch'在查询中重复了两次。此子句表示属于搜索行的行。不久,我将扩展搜索行的概念,以包括一个非常长的或‘ed子句列表,这些子句如下所示。我不想在两个地方重复。此外,我认为在两个地方重复相同的SQL是一个很好的bug源--我可能会在没有考虑的情况下改变一个地方而不是另一个地方。

我想要一个宏观的概念,但据我所知,它们并不存在。我希望能够在查询的上面指定这一点

SEARCH_HIT=`eventinfo.eventcategory = 'search' AND eventinfo.eventaction = 'RunSearch'`

然后,上面的查询将变成:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT
  session_id,
  user_id,
  hitnumber,
  IF(@SEARCH_HIT, TRUE, FALSE) issued_search,
FROM google_analytics.hits
JOIN (
  SELECT
    session_id
  FROM google_analytics.hits
  WHERE @SEARCH_HIT
  GROUP BY session_id
) sessions_with_search ON hits.session_id = sessions_with_search.session_id

查询已经更清晰了,但是想象一下,当@SEARCH_HIT为20个子句时,宏的查询更加清晰和可维护。

问题

  1. SQL宏是否存在于任何IDE中?
  2. SQL宏是否存在于任何SQL语言中?
  3. 在任何Presto SQL中是否存在SQL宏?
  4. 如果宏不存在,为什么不存在?为了提高查询的可维护性,我们应该用什么替换它们呢?
EN

回答 1

Stack Overflow用户

发布于 2018-11-30 09:28:09

您正在描述动态sql。SQL引擎不将变量解释为可执行代码。有很多关于如何逐字符串构造查询字符串的文章。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53561809

复制
相关文章
探究Presto SQL引擎(2)-浅析Join
在《探究Presto SQL引擎(1)-巧用Antlr》中,我们介绍了Antlr的基本用法以及如何使用Antlr4实现解析SQL查询CSV数据,更加深入理解Presto查询引擎支持的SQL语法以及实现思路。
2020labs小助手
2022/04/18
9110
探究Presto SQL引擎(1)-巧用Antlr
自2014年大数据首次写入政府工作报告,大数据已经发展7年。大数据的类型也从交易数据延伸到交互数据与传感数据。数据规模也到达了PB级别。
2020labs小助手
2021/08/10
2.2K0
快速学习-Presto上使用SQL遇到的坑
很多的时候,在Presto上对数据库跨库查询,例如Mysql数据库。这个时候Presto的做法是从MySQL数据库端拉取最基本的数据,然后再去做进一步的处理,例如统计等聚合操作。
cwl_java
2020/03/24
4.4K1
探究Presto SQL引擎(1)-巧用Antlr
自2014年大数据首次写入政府工作报告,大数据已经发展7年。大数据的类型也从交易数据延伸到交互数据与传感数据。数据规模也到达了PB级别。
冬夜先生
2021/10/12
1.7K0
探究Presto SQL引擎(4)-统计计数
本篇文章介绍了统计计数的基本原理以及Presto的实现思路,精确统计和近似统计的细节及各种优缺点,并给出了统计计数在具体业务使用的建议。
2020labs小助手
2022/11/01
1.2K0
产品经理需要会 SQL 吗?会 SQL 对产品有多大帮助?
1.当我们要查数据时,技术人手不够,永远在排期。不如要了只读权限自己干,取数分析一条龙。
蒋川
2021/08/04
2.3K0
产品经理需要会 SQL 吗?会 SQL 对产品有多大帮助?
建议收藏——Mazur 的 SQL 风格指南
您好!我是Matt Mazur ,是一名数据分析师,曾在几家初创公司工作过,帮助公司利用数据发展业务。本指南记录了我对格式化 SQL 的喜好,希望对其他人有一些用处。如果您或您的团队还没有 SQL 风格指南,那么它可以作为一个很好的起点,您可以根据自己的喜好来采用和更新它。
胡八万
2022/05/16
9150
大数据平台建设 —— SQL查询引擎之Presto
Presto的安装方式有两种,一是到官网下载编译好的二进制包进行安装,二是从Github仓库上拉取源码进行编译安装。为了简单起见,我这里选择第一种方式,Server和Client都需要下载。
端碗吹水
2020/11/17
2.5K0
大数据平台建设 —— SQL查询引擎之Presto
基于AIGC的写作尝试:Presto: A Decade of SQL Analytics at Meta(翻译)
Presto是一个开源的分布式SQL查询引擎,支持多个EB级数据源的分析工作负载。Presto用于低延迟的交互式用例以及Meta的长时间运行的ETL作业。它最初于2013年在Meta推出,并于2019年捐赠给Linux基金会。在过去的十年中,随着Meta数据量的超级增长以及新的SQL分析需求,维护查询延迟和可扩展性对Presto提出了令人印象深刻的挑战。其中一个最重要的优先事项是确保查询可靠性不会随着向更小、更弹性的容器分配的转变而退化,这需要查询在显著较小的内存余量下运行,并且可以随时被抢占。此外,来自机器学习、隐私政策和图形分析的新需求已经促使Presto维护者超越传统的数据分析。在本文中,我们讨论了近年来几个成功的演变,这些演变在Meta的生产环境中将Presto的延迟和可扩展性提高了数个数量级。其中一些值得注意的是分层缓存、本地矢量化执行引擎、物化视图和Presto on Spark。通过这些新的能力,我们已经弃用了或正在弃用各种传统的查询引擎,以便Presto成为为整个数据仓库服务的单一组件,用于交互式、自适应、ETL和图形处理工作负载。
jhonye
2023/04/19
4.9K1
PRESTO-分布式大数据SQL查询引擎
http://prestodb-china.com/ PRESTO是什么? Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。 Presto的设计和编写完全是为了解决像Facebook这样规模的商业数据仓库的交互式分析和处理速度的问题。 它可以做什么? Presto支持在线数据查询,包括Hive, Cassandra, 关系数据库以及专有数据存储。 一条Presto查询可以将多个数据源的数据进行合并,可以跨越整个组织进行分析。 Presto以分析师的需求作为目标,
Albert陈凯
2018/04/04
1.7K0
【DB笔试面试426】SQL Server有Linux版本吗?
微软在2016年推出了Linux系统的SQL Server预览版,并将于2017年全面发布这款产品。微软云计算和企业业务负责人斯科特●格里斯(Scott Guthrie)表示,该公司将会推出本地版和云计算版两个版本。格里斯称,Linux版SQL Server将包含SQL Server 2016中的Stretch Database功能,但该公司并未明确披露其它新技术是否也会整合到Linux版中,而微软发言人证实,不会将SQL Server 2016的所有功能都引入Linux,只会提供“核心关系型数据库功能”。
AiDBA宝典
2019/09/30
1.6K0
Presto 分布式SQL查询引擎及原理分析
Presto是由 Facebook 推出的一个基于Java开发的开源分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。Presto本身并不存储数据,但是可以接入多种数据源,并且支持跨数据源的级联查询。
yuanyi928
2020/05/20
4.8K0
一个比较清晰的SQL编写风格
SQL (Structured Query Language) 是具有数据操纵和数据定义等多种功能的数据库语言,这种语言具有交互性特点,能为用户提供极大的便利,数据库管理系统应充分利用SQL语言提高计算机应用系统的工作质量与效率。
终身幼稚园
2020/05/18
1.4K0
有哪些常用的sql语句
首行当然是最基本的增删查改啦,其中最重要的是查。 还有就是一些要注意的地方,就是SQL语句对大小写不敏感,语句中列名对应的值要用单引号''括起来不是双引号。 SQL 使用单引号来环绕文本值。如果是数值,请不要使用引号 特别是C/C++程序员要注意,通常错误都是在用字符串进行拼接SQL语句时,由于双引号和单引号混用,特别容易出错。 一、查:1、SELECT 列名称 FROM 表名称,其中列名可以是多个,中间用豆号分开,如SELECT LastName,FirstName FROM Persons;
java达人
2018/01/31
2K0
SQL审核 | 这里有 MySQL/Oracle 最常用的 SQL 开发规则
SQL审核工具 SQLE 企业版近期推出了Oracle审核插件的第一个测试预览版。我们采集了过往我们在客户那碰到的问题和行业专家的建议,整理了一大批Oracle审核规则。这个版本我们从中挑选出现频次最高的以及影响范围最大一批规则加入到了Oracle审核插件中,这些规则能覆盖大多数客户的大多数场景,却又不会对客户使用产生额外的负担。在后续的时间内,我们将推出的Oracle审核插件逐步完善规则的拼图。接下来的内容将对高频规则给出我们的理解。插件的本身开发之前已经做过介绍,开发文档参考:https://actiontech.github.io/sqle-docs-cn/3.modules/3.7_auditplugin/overview.html。
爱可生开源社区
2022/09/26
5420
SQL审核 | 这里有 MySQL/Oracle 最常用的 SQL 开发规则
sql 聚合函数有哪些
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151864.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/24
6830
SQL审核 | 这里有 MySQL/Oracle 最常用的 SQL 开发规则
SQL审核工具 SQLE 企业版近期推出了Oracle审核插件的第一个测试预览版。我们采集了过往我们在客户那碰到的问题和行业专家的建议,整理了一大批Oracle审核规则。这个版本我们从中挑选出现频次最高的以及影响范围最大一批规则加入到了Oracle审核插件中,这些规则能覆盖大多数客户的大多数场景,却又不会对客户使用产生额外的负担。在后续的时间内,我们将推出的Oracle审核插件逐步完善规则的拼图。接下来的内容将对高频规则给出我们的理解。插件的本身开发之前已经做过介绍,开发文档参考:https://actiontech.github.io/sqle-docs-cn/3.modules/3.7_auditplugin/overview.html。
爱可生开源社区
2022/06/02
5090
SQL SERVER 如何实现UNDO REDO 和PostgreSQL 有近亲关系吗
SQL SERVER 好久没有写了,偶然有人问SQL SERVER 的UNDO REDO 怎么实现的,因为这些人不曾听说SQL SERVER 有 autovacuum ,vacuum ,也不曾听说 SQL SERVER 有UNDO 表空间,REDO 日志,到底SQL Server是怎么实现,传统数据库中需要的,前滚翻和后滚翻,我们今天看看,到底SQL SERVER 和那个数据库有近亲关系。
AustinDatabases
2023/09/06
2490
SQL SERVER 如何实现UNDO REDO  和PostgreSQL 有近亲关系吗
想精通SQL Server, T-SQL的全历史你听过吗?
早在20世纪70年代,两位年轻人Ray Boyce 和 Donald D. Chamberlin,成功将上帝语言(关系数学)编译为凡人的工具。
Lenis
2019/12/26
1K0
Oracle 20c 新特性:SQL 宏支持(SQL Macro)Scalar 和 Table 模式
SQL宏特性,允许开发人员将复杂的处理通过宏定义实现,随后可以在 SQL 中任何位置调用宏。这个特性的实现类似于12c中实现的 Function in SQL 特性。
数据和云
2019/09/24
9360
Oracle 20c 新特性:SQL 宏支持(SQL Macro)Scalar 和 Table 模式

相似问题

Presto SQL: TO_UNIXTIME

1105

Presto SQL -组合列

13

Timerange表SQL Presto

30

Presto CLI上Presto中的参数化SQL

10

Athena (Presto) SQL窗口函数

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文