首页/新闻资讯/正文详情

PRQL 的 from 数据源:指定关系、别名与特殊标识符的完整指南

发布时间:2026/9/24 15:52:40 来源:云帆数科 栏目:资讯中心
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),仅供参考

相关推荐

SQL Server Master Data Services API 定制开发指南:基于 sql-server-samples 的七个 C 示例深度解析
SQL Server Master Data Services API 定制开发指南:基于 sql-server-samples 的七个 C 示例深度解析

示例工程数据库教程后端 【免费下载链接】sql-server-samples Azure Data SQL Samples - Official Microsoft GitHub Repository containing code samples for SQL Server, Azure SQL, Azure Synapse, and Azure SQL Edge 项目地址: https://gitcode.com/gh_mirrors… · 2026/9/24 15:52:33

深夜的Windows 11开始自己“投票”偷密码:思科Talos揭开AI恶意软件ClosedQuorum的自主入侵真相
深夜的Windows 11开始自己“投票”偷密码:思科Talos揭开AI恶意软件ClosedQuorum的自主入侵真相

如果你的 Windows 11 电脑在深夜突然“自己拿主意”,决定是先翻浏览器里的登录密码,还是先摸走加密钱包,别急着怀疑科幻片桥段。思科 Talos 在 9 月 22 日扔出一颗深水炸弹:一款名叫 ClosedQuorum 的 AI 恶意软件,正在… · 2026/9/24 15:52:33

Sunshine:自托管游戏串流服务器的上手指南
Sunshine:自托管游戏串流服务器的上手指南

Sunshine:自托管游戏串流服务器的上手指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine 是一个开源的自托管游戏串流服务器,它把你现有的游戏 P… · 2026/9/24 15:52:33

palera1n 实战:A8–A11 老设备 iOS 越狱完整指南(含模式选择与排错)
palera1n 实战:A8–A11 老设备 iOS 越狱完整指南(含模式选择与排错)

palera1n 实战:A8–A11 老设备 iOS 越狱完整指南(含模式选择与排错) 【免费下载链接】palera1n Jailbreak for A8 through A11, T2 devices, on iOS/iPadOS/tvOS 15.0, bridgeOS 5.0 and higher. 项目地址: https://gitcode.com/GitHub_Tre… · 2026/9/24 16:35:17

Cangjie语言HTTP客户端Ginger:RequestBody的5种形态,从字符串、JSON模型到分块上传的完整指南
Cangjie语言HTTP客户端Ginger:RequestBody的5种形态,从字符串、JSON模型到分块上传的完整指南

Cangjie语言HTTP客户端Ginger:RequestBody的5种形态,从字符串、JSON模型到分块上传的完整指南 【免费下载链接】ginger Ginger是一个轻量级的httpClient库,支持多种请求配置,及使用函数方式注册拦截器链。 项目地址: https://gi… · 2026/9/24 16:35:17

输入的“字符串”实际上是一个由 ASCII 字符组成的十六进制字符串,且 LabVIEW 在这里使用了小端字节序(Little-Endian)转换或者按字节/半字反转的逻辑
输入的“字符串”实际上是一个由 ASCII 字符组成的十六进制字符串,且 LabVIEW 在这里使用了小端字节序(Little-Endian)转换或者按字节/半字反转的逻辑

一、 关键解析逻辑纠正 输入的“字符串”实际上是一个由 ASCII 字符组成的十六进制字符串,且 LabVIEW 在这里使用了小端字节序(Little-Endian)转换或者按字节/半字反转的逻辑: **14 偏移量,长度 2**: 截取到 ASCII 字符串 "6345"。 字节反转(由于每 2 个字符… · 2026/9/24 16:35:11

王者荣耀弱网对抗:帧同步如何扛住460?
王者荣耀弱网对抗:帧同步如何扛住460?

地铁,晚高峰,进站前最后三十秒。 你正在开团。屏幕右上角那个绿色的数字,突然变成了刺眼的红色: 460你做好了准备——画面冻结、角色僵直、然后瞬移回城泉水。 但这一次,什么都没发生。 你的技能照常释放,动画照常播放。只是敌人的走位,看起来慢了半拍。 三秒后,数字跳… · 2026/9/24 16:35:11

从安装到听到第一声广播:SDR++ 软件定义无线电新手实战指南
从安装到听到第一声广播:SDR++ 软件定义无线电新手实战指南

从安装到听到第一声广播:SDR 软件定义无线电新手实战指南 【免费下载链接】SDRPlusPlus Cross-Platform SDR Software 项目地址: https://gitcode.com/GitHub_Trending/sd/SDRPlusPlus SDR 是一款跨平台、无冗余的开源软件定义无线电(SDR&#xf… · 2026/9/24 16:35:11

Prisma CLI `prisma local stop` 命令详解:停止本地开发集群
Prisma CLI `prisma local stop` 命令详解:停止本地开发集群

后端数据库GraphQL 【免费下载链接】prisma1 💾 Database Tools incl. ORM, Migrations and Admin UI (Postgres, MySQL & MongoDB) [deprecated] 项目地址: https://gitcode.com/gh_mirrors/pr/prisma1 点击查看 免费下载 prisma local stop 是 Pr… · 2026/9/24 16:35:04

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

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

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码