dureach.contacts.query 和 dureach.trade.query 接受针对已文档化的联系人和装运数据集的只读 SQL。使用单个 SELECT 和获准字段;不支持连接和写入。
允许哪些视图和列?
| 工具 | 视图 | 列 |
|---|---|---|
dureach.contacts.query | contacts | id、full_name、job_title、company_name、company_domain、city、country |
dureach.trade.query | bol_shipments | id、source_type、trade_flow、bol_number、actual_arrival_date、shipper_name、consignee_name、product_desc |
仅查询这些列。未知表、列或数据库前缀将返回校验错误。结果中 product_desc 截断为 300 个字符。
接受什么 SQL 形态?
- 单个
SELECT,可带可选WHERE、GROUP BY、HAVING与ORDER BY。允许别名。 - 支持比较、布尔运算符、算术、字面量
IN与LIKE。 - 聚合与标量函数:
count、sum、avg、min、max、uniqExact、lower、upper、length、coalesce、toDate、toYear、toMonth。 - 拒绝:连接、子查询、CTE、窗口函数、
SETTINGS、FORMAT、SQLLIMIT/OFFSET、SELECT SETTINGS、GROUP BY WITH TOTALS、全局IN与位置ORDER BY。 - SQL 至多为 16 KiB UTF-8。更大的语句在执行前返回校验错误。
{
"sql": "SELECT company_name, city, country FROM contacts WHERE country = 'DE' AND company_domain LIKE '%gmbh%' ORDER BY company_name, city",
"page": 1,
"limit": 25
}第 2 页及以后需要 ORDER BY。使用工具结构支持的排序,并在可用时添加获准的同值排序字段。同值和源数据更新可能使记录在页面之间移动;有界结果并非完整导出。
分页如何运作?
使用 page(1–20)与 limit(1–50)。请勿附加 SQL LIMIT/OFFSET。结果返回列名、ClickHouse 类型与有序行数组,不含总数:
{
"columns": [{"name": "company_name", "type": "String"}],
"rows": [["Example GmbH"]],
"page": 1,
"limit": 25
}UUID、日期、十进制以及超出 JSON 安全范围的整数以字符串形式返回;非有限浮点数以字符串形式返回。传输结果大于 1 MiB 时返回 result_too_large;请减少所选列或收窄筛选条件后重试。
应如何处理错误?
| 代码 | 含义 | 修复方法 |
|---|---|---|
validation error on sql | 不允许的关键词、表、列或结构。 | 在所列视图与列范围内仅使用单个 SELECT;移除连接、子查询、CTE、SETTINGS、FORMAT 与 SQL LIMIT。 |
SQL exceeds 16 KiB | 语句过大。 | 缩短谓词,或将问题拆分为更小的查询。 |
missing ORDER BY on page 2+ | 偏移页不确定。 | 添加带唯一辅助排序键的 ORDER BY。 |
quota_exceeded (contacts_daily) | 每日联系人预算已用完。 | 等待重置,或向管理员咨询套餐限额。 |
result_too_large | 传输结果超过 1 MiB。 | 选择更少的列、添加筛选,或降低 limit。 |
请记录 request_id 与错误代码。切勿将含客户标识的完整 SQL 与令牌一并记录。