Skip to content

Integración de datos ​

Neykos expone tus datos operacionales — órdenes de producción, OEE, tiempos muertos, calidad — a través de un conjunto de vistas de solo lectura en ClickHouse. Esta página describe todo lo que necesitas para conectarte: credenciales, endpoints, SSL, la vista disponible y sus columnas, además de ejemplos end-to-end en los clientes más comunes.

TL;DR

Recibes un usuario de solo lectura, una contraseña y uno o más nombres de vista. Apunta cualquier cliente compatible con ClickHouse a:

  • Host: 89.167.19.228 (puerto 8123, sin SSL) — o integrations.neykos.net (puerto 443, SSL habilitado)
  • Base de datos: oee
  • Vista: oee.v_<customer>_production_orders (la que Neykos te provee)

Autentícate con el usuario y la contraseña que Neykos compartió contigo y haz SELECT sobre la vista.

Auto-rellenado

Puedes precompletar los ejemplos de esta página agregando parámetros a la URL. Por ejemplo: ?client=cca reemplaza el nombre de la vista por oee.v_cca_production_orders. También se aceptan ?user=, ?password= y ?view= para sobrescribir esos campos.

1. Resumen ​

Neykos provee acceso de solo lectura a datasets operacionales seleccionados a través de ClickHouse.

Cada cliente recibe:

  • Un usuario de solo lectura dedicado.
  • Acceso únicamente a las vistas habilitadas explícitamente para ese cliente.
  • Sin acceso a tablas internas.
  • Sin acceso a los datos de otros clientes.

El nombre de la vista, el usuario y la contraseña varían entre clientes.

2. Información de conexión ​

CampoValor
Tipo de base de datosClickHouse
Host (IP directa)89.167.19.228
Host (HTTPS)integrations.neykos.net
Puerto (HTTP)8123
Puerto (HTTPS)443
Base de datosoee
Usuario<provided_user>
Contraseña<provided_password>
Vista disponible<provided_view_name> (ejemplo: oee.v_customer_production_orders)
Modo de accesosolo lectura

Credenciales

Los placeholders <provided_user>, <provided_password> y <provided_view_name> son completados por Neykos durante el onboarding. Nunca los subas al control de versiones — mantenlos en un gestor de secretos o en variables de entorno.

3. Configuración SSL ​

text
Host: 89.167.19.228
Port: 8123
SSL : deshabilitado
text
Host: integrations.neykos.net
Port: 443
SSL : habilitado

Usa el endpoint HTTPS siempre que tu cliente y red lo permitan.

4. Vista de órdenes de producción ​

La vista de órdenes de producción contiene datos específicos del cliente. El patrón de nombrado es:

sql
oee.v_<customer>_production_orders

La vista ya está filtrada para el cliente correspondiente — no es necesario que agregues un filtro adicional por customer / client desde tu lado.

5. Columnas disponibles ​

text
order_number
order_code
created_at
updated_at
start_time_utc
end_time_utc
start_time_local
end_time_local
start_date_local
end_date_local
duration_seconds
line_name
line_code
product_name
product_code
target_quantity
total_produced
good_quantity
rejected_quantity
rework_quantity
scrap_quantity
units_per_box
boxes_per_pallet
status_name
status_code
is_open

6. Descripción de columnas ​

ColumnaDescripción
order_numberNúmero de orden de producción. Usualmente el identificador principal de la orden.
order_codeCódigo interno de la orden. Puede estar vacío si el PMS de origen no lo provee.
created_atTimestamp en que se creó la orden en el PMS.
updated_atTimestamp de la última actualización en el PMS.
start_time_utcInicio de la orden en UTC.
end_time_utcFin de la orden en UTC. Puede estar vacío si la orden está abierta.
start_time_localInicio de la orden en hora operacional local.
end_time_localFin de la orden en hora operacional local. Puede estar vacío si la orden está abierta.
start_date_localFecha local de inicio. Recomendada para análisis diario operacional.
end_date_localFecha local de término.
duration_secondsDuración de la orden en segundos.
line_nameNombre de la línea de producción.
line_codeCódigo de la línea de producción.
product_nameNombre del producto.
product_codeCódigo del producto.
target_quantityCantidad objetivo planificada.
total_producedCantidad total producida registrada por el sistema.
good_quantityUnidades buenas registradas por el sistema.
rejected_quantityUnidades rechazadas.
rework_quantityUnidades de reproceso.
scrap_quantityMerma.
units_per_boxUnidades por caja.
boxes_per_palletCajas por pallet.
status_nameEstado legible de la orden.
status_codeCódigo técnico del estado de la orden.
is_openIndica si la orden está abierta. 1 = abierta, 0 = cerrada.

7. Posibles códigos de estado ​

CódigoSignificado
PRODUCTION_ORDER_RECEIVEDOrden recibida / planificada, aún sin iniciar.
PRODUCTION_ORDER_RUNNINGOrden corriendo actualmente.
PRODUCTION_ORDER_COMPLETEDOrden completada.
PRODUCTION_ORDER_SENDEDOrden enviada / cerrada, según el flujo del PMS.
PRODUCTION_ORDER_DISABLEDOrden deshabilitada.
PRODUCTION_ORDER_DELETEDOrden eliminada.

8. Consultas SQL de referencia ​

Reemplaza <provided_view_name> por la vista que Neykos te entregó.

Query de prueba ​

sql
SELECT count()
FROM <provided_view_name>

Últimas órdenes actualizadas ​

sql
SELECT
    order_number,
    line_name,
    product_name,
    target_quantity,
    total_produced,
    status_code,
    is_open,
    updated_at
FROM <provided_view_name>
ORDER BY updated_at DESC
LIMIT 10

Órdenes abiertas ​

sql
SELECT
    order_number,
    line_name,
    product_name,
    target_quantity,
    total_produced,
    status_code,
    start_time_local,
    updated_at
FROM <provided_view_name>
WHERE is_open = 1
ORDER BY updated_at DESC

Resumen por línea de producción ​

sql
SELECT
    line_name,
    count()                  AS orders,
    countIf(is_open = 1)     AS open_orders,
    countIf(is_open = 0)     AS closed_orders,
    sum(target_quantity)     AS target_quantity,
    sum(total_produced)      AS total_produced
FROM <provided_view_name>
GROUP BY line_name
ORDER BY orders DESC

Producción por fecha local ​

sql
SELECT
    start_date_local,
    line_name,
    count()                  AS orders,
    sum(target_quantity)     AS target_quantity,
    sum(total_produced)      AS total_produced
FROM <provided_view_name>
GROUP BY start_date_local, line_name
ORDER BY start_date_local DESC, line_name

9. Formas de conexión ​

Todos los métodos usan las mismas credenciales. Elige el que coincida con tu stack.

9.1 API HTTP (curl) ​

ClickHouse expone una interfaz HTTP para queries. Envía el SQL como cuerpo del POST y elige un formato de respuesta como JSON, JSONEachRow, CSV o TSV.

bash
curl 'http://89.167.19.228:8123/?database=oee&user=<provided_user>&password=<provided_password>' \
  --data-binary '
SELECT
    order_number,
    line_name,
    product_name,
    target_quantity,
    total_produced,
    status_code
FROM <provided_view_name>
LIMIT 10
FORMAT JSON
'
bash
curl 'https://integrations.neykos.net/?database=oee&user=<provided_user>&password=<provided_password>' \
  --data-binary '
SELECT
    order_number,
    line_name,
    product_name,
    target_quantity,
    total_produced,
    status_code
FROM <provided_view_name>
LIMIT 10
FORMAT JSON
'

Buena práctica

Envía las credenciales por cabeceras HTTP en lugar de query params para mantenerlas fuera de los logs:

bash
curl 'https://integrations.neykos.net/?database=oee' \
  -H 'X-ClickHouse-User: <provided_user>' \
  -H 'X-ClickHouse-Key:  <provided_password>' \
  --data-binary 'SELECT count() FROM <provided_view_name> FORMAT JSON'

9.2 Python — clickhouse-connect (recomendado) ​

El cliente oficial de Python soporta la interfaz HTTP y devuelve tipos nativos, DataFrames de Pandas y tablas Arrow.

bash
pip install clickhouse-connect pandas
python
import os
import clickhouse_connect

client = clickhouse_connect.get_client(
    host='integrations.neykos.net',
    port=443,
    secure=True,
    username=os.environ['NEYKOS_USER'],
    password=os.environ['NEYKOS_PASSWORD'],
    database='oee',
)

# Query plana → lista de tuplas
result = client.query("SELECT count() FROM v_customer_production_orders")
print(result.result_rows)

# Query a DataFrame de Pandas
df = client.query_df(
    """
    SELECT start_date_local, line_name,
           sum(target_quantity)  AS target,
           sum(total_produced)   AS produced
    FROM v_customer_production_orders
    GROUP BY start_date_local, line_name
    ORDER BY start_date_local DESC
    """
)
print(df.head())

Si necesitas usar la IP directa: host='89.167.19.228', port=8123, secure=False.

9.3 Node.js / TypeScript — @clickhouse/client ​

bash
npm install @clickhouse/client
typescript
import { createClient } from '@clickhouse/client'

const client = createClient({
  url: 'https://integrations.neykos.net',
  username: process.env.NEYKOS_USER!,
  password: process.env.NEYKOS_PASSWORD!,
  database: 'oee',
})

const rs = await client.query({
  query: `
    SELECT order_number, line_name, total_produced, status_code
    FROM v_customer_production_orders
    WHERE is_open = 1
    ORDER BY updated_at DESC
    LIMIT 50
  `,
  format: 'JSONEachRow',
})

const orders = await rs.json<{
  order_number: string
  line_name: string
  total_produced: number
  status_code: string
}>()

console.log(orders)
await client.close()

9.4 JDBC ​

Usa el driver oficial JDBC de ClickHouse — clase com.clickhouse.jdbc.ClickHouseDriver.

text
jdbc:clickhouse://89.167.19.228:8123/oee
text
jdbc:clickhouse:https://integrations.neykos.net:443/oee

Ejemplo Java mínimo:

java
String url = "jdbc:clickhouse:https://integrations.neykos.net:443/oee";
Properties props = new Properties();
props.setProperty("user", System.getenv("NEYKOS_USER"));
props.setProperty("password", System.getenv("NEYKOS_PASSWORD"));

try (Connection conn = DriverManager.getConnection(url, props);
     Statement st = conn.createStatement();
     ResultSet rs = st.executeQuery("SELECT count() FROM v_customer_production_orders")) {
    while (rs.next()) System.out.println(rs.getLong(1));
}

9.5 Databricks / Spark ​

python
jdbc_url     = "jdbc:clickhouse:https://integrations.neykos.net:443/oee"
view_name    = "<provided_view_name>"
user         = dbutils.secrets.get("neykos", "user")       # o os.environ[...]
password     = dbutils.secrets.get("neykos", "password")

df = (
    spark.read
    .format("jdbc")
    .option("url", jdbc_url)
    .option("driver", "com.clickhouse.jdbc.ClickHouseDriver")
    .option("user", user)
    .option("password", password)
    .option("dbtable", view_name)
    .load()
)

display(df)

9.6 Herramientas BI ​

Metabase ​

  1. Admin → Bases de datos → Agregar → ClickHouse.
  2. Host: integrations.neykos.net, Puerto: 443, SSL: ✅
  3. Base de datos: oee, Usuario / Contraseña: las que entregó Neykos.
  4. Guardar. La vista provista aparece bajo oee.

Apache Superset ​

Instala clickhouse-connect y agrega una base de datos con la URI SQLAlchemy:

text
clickhousedb+connect://<provided_user>:<provided_password>@integrations.neykos.net:443/oee?secure=true

Grafana ​

Instala el plugin de Grafana para ClickHouse y configura:

  • Server address: integrations.neykos.net
  • Server port: 443
  • Protocol: HTTP, Secure connection: ✅
  • Default database: oee
  • Usuario / contraseña entregados por Neykos

Tableau ​

Usa el conector ClickHouse JDBC con la URL JDBC de §9.4.

Power BI ​

Power BI Desktop incluye un conector ClickHouse nativo (Obtener datos → ClickHouse). Usa integrations.neykos.net, puerto 443, SSL on, base de datos oee y las credenciales que entregó Neykos. Para versiones antiguas, instala el driver ODBC de ClickHouse y conecta vía ODBC.

9.7 Excel / Power Query (ODBC) ​

  1. Instala el driver ODBC de ClickHouse.
  2. Crea un DSN de sistema llamado Neykos apuntando a integrations.neykos.net:443, base de datos oee, SSL on.
  3. En Excel: Datos → Obtener datos → Desde otras fuentes → Desde ODBC → DSN Neykos.

9.8 Clientes gráficos (DBeaver, DataGrip, TablePlus) ​

Cualquier cliente que soporte ClickHouse funciona igual:

CampoValor
DriverClickHouse (HTTP)
Hostintegrations.neykos.net
Puerto443
Base de datosoee
SSL / TLSon
Usuario<provided_user>
Contraseña<provided_password>

DBeaver

Database → New Database Connection → ClickHouse → completa los campos arriba → Test Connection → Finish. La vista provista aparece bajo oee → Views.

10. Notas y buenas prácticas ​

  • El acceso es solo lectura.
  • El usuario provisto sólo puede acceder a las vistas habilitadas explícitamente por Neykos.
  • El usuario no tiene acceso a tablas internas ni a datos de otros clientes.
  • Las vistas ya aplican FINAL internamente — no necesitas agregar FINAL en tus queries.
  • El identificador principal de una orden suele ser order_number. order_code puede venir vacío si el PMS de origen no lo provee.
  • Para análisis diario operacional usa start_date_local, start_time_local y end_time_local. Los timestamps UTC se proveen para integraciones técnicas entre sistemas.
  • Trata la contraseña como cualquier secreto productivo — cárgala desde variables de entorno o un gestor de secretos; nunca la metas a un repo.

11. Soporte ​

Si aún no tienes credenciales, o necesitas habilitar una nueva vista, contacta a tu punto de contacto en Neykos. Reportes de bugs y dudas de integración son bienvenidos en la misma dirección.

Observabilidad industrial para la planta.