dureach.contacts.query y dureach.trade.query aceptan SQL de solo lectura sobre los conjuntos de contactos y envíos documentados. Use un único SELECT con columnas permitidas; no se admiten uniones ni escrituras.
¿Qué vistas y columnas están permitidas?
| Herramienta | Vista | Columnas |
|---|---|---|
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 |
Consulte solo estas columnas. Las tablas, columnas o prefijos de base de datos desconocidos devuelven un error de validación. product_desc se trunca a 300 caracteres en los resultados.
¿Qué forma de SQL se acepta?
- Un único
SELECTconWHERE,GROUP BY,HAVINGyORDER BYopcionales. Se permiten alias. - Se admiten comparaciones, operadores booleanos, aritmética,
INliteral yLIKE. - Funciones agregadas y escalares:
count,sum,avg,min,max,uniqExact,lower,upper,length,coalesce,toDate,toYear,toMonth. - No admitido: joins, subconsultas, CTE, funciones de ventana,
SETTINGS,FORMAT,LIMIT/OFFSETde SQL,SELECT SETTINGS,GROUP BY WITH TOTALS,INglobal yORDER BYposicional. - El SQL debe tener como máximo 16 KiB UTF-8. Las sentencias mayores devuelven un error de validación antes de la ejecución.
{
"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
}La página 2 y posteriores requieren ORDER BY. Use una ordenación admitida por el esquema y añada un criterio permitido para desempatar cuando esté disponible. Los empates y cambios en la fuente pueden mover filas entre páginas; los resultados acotados no son una exportación completa.
¿Cómo funciona la paginación?
Utilice page (1–20) y limit (1–50). No añada LIMIT/OFFSET de SQL. Los resultados devuelven nombres de columna, tipos ClickHouse y arrays ordenados de filas sin recuento total:
{
"columns": [{"name": "company_name", "type": "String"}],
"rows": [["Example GmbH"]],
"page": 1,
"limit": 25
}Los UUID, las fechas, los decimales y los enteros fuera del rango seguro de JSON llegan como cadenas; los flotantes no finitos llegan como cadenas. Un resultado mayor de 1 MiB devuelve result_too_large; reduzca la lista de columnas o los filtros y reintente.
¿Cómo deben gestionarse los errores?
| Código | Significado | Solución |
|---|---|---|
error de validación en sql | Palabra clave, tabla, columna o forma no permitida. | Mantenga un SELECT en la vista y las columnas indicadas; elimine joins, subconsultas, CTE, SETTINGS, FORMAT y el LIMIT de SQL. |
SQL exceeds 16 KiB | Sentencia demasiado grande. | Acorte los predicados o divida la pregunta en consultas más pequeñas. |
falta ORDER BY en página 2+ | La página con offset no es determinista. | Añada ORDER BY con un criterio único de desempate. |
quota_exceeded (contacts_daily) | Presupuesto diario de contactos agotado. | Espere al restablecimiento o consulte a un administrador sobre los límites del plan. |
result_too_large | Resultado transmitido superior a 1 MiB. | Seleccione menos columnas, añada filtros o reduzca limit. |
Registre el request_id y el código de error. Nunca registre SQL completo con identificadores de clientes junto a tokens.