PRQL 的 from 数据源:指定关系、别名与特殊标识符的完整指南
PRQL 的 from 数据源指定关系、别名与特殊标识符的完整指南【免费下载链接】prqlPRQL is a modern language for transforming data — a simple, powerful, pipelined SQL replacement项目地址: https://gitcode.com/gh_mirrors/pr/prqlfrom是 PRQL 管道式查询的起点与基石——每个查询都必须由一个from语句来声明数据源编译器会据此构建主管道pipeline。本文基于官方参考文档结合 prqlc 编译器源码与集成测试系统讲解from的基本用法、别名赋值、特殊字符表名的反引号引用以及default_db.前缀规避标准库名称冲突的完整方案帮助你写出准确、可编译、可移植的 PRQL 查询。from的基本用法声明数据源from的作用只有一个指定一个数据源data source。在 PRQL 中数据源通常对应数据库中的一张表from artists在 prqlc 标准库 中from被定义为接受default_db.source表引用、返回该relation的转换函数let from func default_db.source relation - relation source可以看到from的参数被限定为default_db命名空间下的表引用relation类型返回值即该关系本身。这正是 PRQL 把数据源当作普通关系relation对待的体现——from之后可以无缝接上select、filter、derive等任何标准库转换。from是查询的必要起点从编译器实现看from不只是惯例而是强制要求。在 lowering.rs 中当存在用户声明但没有以from开头的管道时编译器会直接报错PRQL queries must begin with from A query must start with a from statement to define the main pipeline因此任何完整的 PRQL 查询都应以from定义主管道作为第一行这一点在 集成测试 中大量体现例如from tracks、from invoices、from genres等。使用别名赋值表达式数据源表名不一定要与后续引用完全一致可以用赋值表达式assign expression为表引入别名from e employees select e.first_name别名在管道后续步骤中作为表限定符使用能够消解列名歧义让查询更清晰。集成测试中同样广泛采用这一写法例如 group_sort.prql 中的from aalbums以及 invoice_totals.prql 中的from iinvoices——后续步骤通过i.前缀引用该表的列。需要说明的是这种别名的引用机制建立在 标识符与this/that查找规则 之上在join场景中this指当前关系、that指另一张表为from指定别名后管道内即可用该别名精确限定列来源。特殊字符与保留字反引号引用表名若包含空格或特殊字符需要用反引号backtick包裹from artist tracks这与 PRQL 的标识符规则一脉相承。标识符与关键字文档 明确规定标识符只能包含字母数字与下划线、不能以数字开头要使用其他字符就用反引号包围。编译到 SQL 时这些标识符会按目标方言的规则进行引用和转义。反引号引用同样适用于文件路径等非传统表名场景。在 read-files.md 中DuckDB 允许直接在FROM子句写文件名PRQL 中同样需要反引号from artists.parquet此外PRQL 的保留字如case、type、enum、func、module等也都可以用反引号当作列名或变量名使用例如case其完整列表见 keywords.md。与标准库函数重名default_db.前缀当表名恰好与标准库中的某个函数同名时直接写from group会让编译器把group解析成标准库函数而非表名。此时可用default_db.前缀显式指明表属于默认数据库default_db.group # in place of from group take 1官方文档也坦承这是一个略显笨拙的临时方案awkward workaround其原因是from函数的签名限定为default_db.source——前缀default_db.正是为了让表引用显式落在default_db命名空间内从而与std命名空间下的函数名区分开。这一点在标准库定义中可以得到印证转换函数全部位于std命名空间std.from与from等价而表引用则归属于default_db命名空间。在使用该语法时管道起点不再是以from开头的语句而是以default_db.table_name开头的表引用表达式后续步骤如take 1仍照常串联。若后续官方解决该问题对应 issue #3271这一写法可能会被更优雅的语法取代届时请以新版本文档为准。进阶多层级数据库与 Schema 前缀from还支持带 schema 与数据库名的完整限定标识符。根据 标识符与关键字文档可以写成from my_database.chinook.albums但需要注意tracks、public.tracks、my_database.public.tracks会被编译器视为彼此独立的表定义因此在同一查询中要避免混用不同层级的前缀以免产生意外行为。from在编译链路中的位置从源码结构看from的解析与处理贯穿 PRQL 编译链路的多个阶段词法/语法层from作为转换transform被识别。在 CLI 的语法高亮模块 highlight.rs 中from被列为高亮关键字。语义层经解析后管道必须在语义阶段以from或default_db.表引用起始否则 lowering.rs 报出E0001错误。SQL 生成层在 keywords.rs 中from被确认为各 SQL 方言Generic 等的保留关键字最终对应生成 SQL 的FROM子句。换言之你在 PRQL 中写的from最终会被编译器映射为 SQL 的FROM而整个查询管道则围绕该数据源逐级构建。总结from虽然语法简单却是 PRQL 每个查询的强制入口基础用法from table直接声明数据源from alias table引入别名供管道后续引用含空格或特殊字符的表名使用反引号table name与标准库函数重名的表名使用default_db.group显式限定支持database.schema.table多级限定但各层级写法被视为不同表。若希望进一步了解关系数据的其他来源可继续阅读 临时关系字面量数组 与 文件读取函数DuckDB关于prql target:等查询头配置可参考 Target 与版本。【免费下载链接】prqlPRQL is a modern language for transforming data — a simple, powerful, pipelined SQL replacement项目地址: https://gitcode.com/gh_mirrors/pr/prql创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

3步快速获取中小学电子教材PDF

3步快速获取中小学电子教材PDF

3步快速获取中小学电子教材PDF 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容。 项目地址: https://gitcode.com/GitHub_Tren…

2026/9/24 15:53:05 阅读更多 →
FerretDB 插入操作实战:insertOne 与 insertMany 的用法、响应解析与底层实现

FerretDB 插入操作实战:insertOne 与 insertMany 的用法、响应解析与底层实现

FerretDB 插入操作实战:insertOne 与 insertMany 的用法、响应解析与底层实现 【免费下载链接】FerretDB A truly Open Source MongoDB alternative 项目地址: https://gitcode.com/gh_mirrors/fe/FerretDB 本篇技术指南以 FerretDB 官方文档《Insert operat…

2026/9/24 15:53:05 阅读更多 →
帝舵南京售后维修点丨门店位置、预约方式及咨询电话查询(2026年最新)

帝舵南京售后维修点丨门店位置、预约方式及咨询电话查询(2026年最新)

一份覆盖南京全域、同步全国标准的帝舵维保网点公示通告,帝舵南京售后维修点丨门店位置、预约方式及咨询电话查询(2026年最新),系统整合南京本地正规直营维保点位、精准出行方案、预约渠道与最新咨询热线,南京及江苏全域、皖东周边城市表主可…

2026/9/24 15:53:05 阅读更多 →

最新新闻

AWS SDK for C++ 跨服务示例全解析:从 Aurora Serverless 任务追踪器到 SNS/SQS 发布订阅

AWS SDK for C++ 跨服务示例全解析:从 Aurora Serverless 任务追踪器到 SNS/SQS 发布订阅

示例工程教程后端 【免费下载链接】aws-doc-sdk-examples Welcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below. 项目地…

2026/9/24 16:37:44 阅读更多 →
关于电缆标签

关于电缆标签

1.电缆按照树结构分 2,隐藏电缆高层代号3.页—页宏–插入 导入宏文件 线缆标签名称自动生成 线缆标签不重复

2026/9/24 16:37:44 阅读更多 →
PHPStan 错误标识符 requireImplements.deprecatedClass 详解:`@phpstan-require-implements` 引用已废弃类时的检测与修复

PHPStan 错误标识符 requireImplements.deprecatedClass 详解:`@phpstan-require-implements` 引用已废弃类时的检测与修复

PHPStan 错误标识符 requireImplements.deprecatedClass 详解:phpstan-require-implements 引用已废弃类时的检测与修复 【免费下载链接】phpstan PHP Static Analysis Tool - discover bugs in your code without running it! 项目地址: https://gitcode.com/gh_…

2026/9/24 16:37:43 阅读更多 →
优秀的项目经理,从来不靠记忆力跟进项目进度

优秀的项目经理,从来不靠记忆力跟进项目进度

很多管理者每天极度内耗: 靠着大脑死记几十项任务、记每个节点工期、记谁的工作没完成、记哪里存在卡点。 真正资深、能同时掌控多个项目的项目经理,往往一点都不忙乱。不是他们记忆力更强、精力更充沛,而是他们早就戒掉了靠记忆管理项目的低…

2026/9/24 16:37:43 阅读更多 →
如何自动识别文件编码?chardet4cj 字符编码检测库新手完全入门指南

如何自动识别文件编码?chardet4cj 字符编码检测库新手完全入门指南

如何自动识别文件编码?chardet4cj 字符编码检测库新手完全入门指南 【免费下载链接】chardet4cj 一个用于检测常用文本编码的库 项目地址: https://gitcode.com/Cangjie-TPC/chardet4cj 打开一个来路不明的文本文件,却看到满屏乱码?这…

2026/9/24 16:37:43 阅读更多 →
如何快速接入支付宝支付?alipay_sdk_cj仓颉原生SDK完全指南

如何快速接入支付宝支付?alipay_sdk_cj仓颉原生SDK完全指南

如何快速接入支付宝支付?alipay_sdk_cj仓颉原生SDK完全指南 【免费下载链接】alipay_sdk_cj AliPay Sdk for 仓颉 支付宝接口后端sdk,方便cangjie开发者快速接入支付宝的支付接口(目前只支持最广泛使用的商户直接接入模式,只支持最…

2026/9/24 16:36:43 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →