top of page
Buscar

Optimiza el acceso a datos en NetSuite con SuiteQL

  • 14 ene
  • 5 min de lectura
Utiliza SuiteQL para acceder a datos en NetSuite

En este artículo, te explicamos cómo SuiteQL facilita un acceso a los datos de NetSuite más rápido y más limpio, permite el debugging basado en el navegador y potencia scripts del lado del servidor confiables y listos para producción.

NetSuite alberga una gran cantidad de información crítica, pero acceder a ella de manera eficiente puede resultar desafiante a medida que aumentan las necesidades de reporting del negocio. Si bien las Búsquedas Guardadas (Saved Searches) siguen siendo una herramienta poderosa, a veces se vuelven complejas, difíciles de mantener y complicadas de optimizar.


SuiteQL ofrece una alternativa moderna a las Búsquedas Guardadas tradicionales de NetSuite. Es el motor de consultas basado en SQL de NetSuite, que permite a los desarrolladores recuperar datos utilizando la sintaxis SQL que ya conocen y respetar al mismo tiempo el modelo de seguridad y gobernanza de NetSuite.


Contenido


¿Por qué es importante SuiteQL en NetSuite?

  • Sintaxis SQL conocida que permite una adopción más rápida por parte de desarrolladores y analistas de datos.

  • Mejor rendimiento y legibilidad en comparación con las Búsquedas Guardadas complejas.

  • Control total sobre uniones (joins) y agregaciones.

  • Lógica de agrupación más clara que reduce las inconsistencias en los datos.



Ejecución de SuiteQL del lado del servidor

SuiteQL está diseñado para ejecutarse del lado del servidor en NetSuite. Aunque se puede acceder a él en escenarios limitados de debugging, el uso en producción siempre debe gestionarse a través de scripts del lado del servidor como Suitelets, RESTlets, Map/Reduce o scripts de User Event. Ten esto en cuenta al crear scripts que involucren la recuperación de datos de NetSuite. 

Si se requiere acceso a los resultados de SuiteQL del lado del cliente, una solución común es implementar un Suitelet que ejecute la consulta del lado del servidor y exponga los resultados al cliente.



Cuándo deberías usar SuiteQL

SuiteQL es ideal para uniones complejas, informes financieros y operativos, tableros de control (dashboards) sensibles al rendimiento, herramientas de administración interna, y para simplificar Búsquedas Guardadas demasiado complicadas. SuiteQL no reemplaza a las herramientas de reporte tradicionales de NetSuite, más bien las complementa. 

SuiteQL es la forma más directa de acceder a los datos de NetSuite y la más fácil de comprender para los desarrolladores que están acostumbrados a trabajar directamente con tecnología SQL.



Ejemplo: SuiteQL del lado del servidor con paginación (Suitelet)

El siguiente ejemplo muestra un patrón simplificado y seguro para producción para ejecutar SuiteQL con paginación en un Suitelet.


/**
 * @NApiVersion 2.1
 * @NScriptType Suitelet
 */
define(['N/ui/serverWidget', 'N/query'], (serverWidget, query) => {

    const COLUMNS = [
        { id: 'internalid', label: 'Internal ID', type: serverWidget.FieldType.TEXT },
        { id: 'tranid', label: 'Transaction Number', type: serverWidget.FieldType.TEXT },
        { id: 'trandate', label: 'Date', type: serverWidget.FieldType.DATE },
        { id: 'foreigntotal', label: 'Foreign Total', type: serverWidget.FieldType.CURRENCY }
    ];

    const onRequest = (context) => {
        try {
            const page = parseInt(context.request.parameters.page || 1, 10);
            const pageSize = 50;
            const offset = (page - 1) * pageSize;

            const sql = `
                SELECT
                    t.id            AS internalid,
                    t.tranid        AS tranid,
                    t.trandate      AS trandate,
                    t.foreigntotal  AS foreigntotal
                FROM
                    transaction t
                ORDER BY
                    t.trandate DESC
                OFFSET ${offset} ROWS
                FETCH NEXT ${pageSize} ROWS ONLY
            `;

            const results = query
                .runSuiteQL({ query: sql })
                .asMappedResults();

            const form = serverWidget.createForm({
                title: 'SuiteQL Results'
            });

            const sublist = form.addSublist({
                id: 'custpage_results',
                type: serverWidget.SublistType.LIST,
                label: 'Results'
            });

            COLUMNS.forEach(col => {
                sublist.addField({
                    id: col.id,
                    label: col.label,
                    type: col.type
                });
            });

            let line = 0;
            for (const row of results) {
                COLUMNS.forEach(col => {
                    const value = row[col.id];
                    if (value !== null && value !== undefined) {
                        sublist.setSublistValue({
                            id: col.id,
                            line,
                            value: String(value)
                        });
                    }
                });
                line++;
            }

            context.response.writePage(form);

        } catch (e) {
            log.error('SuiteQL SL Error', e);
            context.response.write(`
                <h3 style="color:red;">Error executing SuiteQL</h3>
                <pre>${e.message}</pre>
            `);
        }
    };

    return { onRequest };
});

Reflexiones finales

SuiteQL se ha convertido en una herramienta esencial para el desarrollo avanzado en NetSuite. Al combinar la sintaxis SQL con el modelo de seguridad nativo de NetSuite, permite a los desarrolladores trabajar más rápido, escribir una lógica más limpia y construir soluciones más fáciles de mantener.



Por Nahuel Fuentes, Technical Consultant



¿Quieres saber más?





FAQS

¿Qué es SuiteQL?

SuiteQL es el motor de consultas basado en SQL de NetSuite, que permite a los desarrolladores y analistas recuperar datos utilizando la sintaxis de SQL que ya conocen y respetar al mismo tiempo el modelo de seguridad y gobernanza nativo de NetSuite. Ofrece una alternativa moderna y más legible a las Búsquedas Guardadas tradicionales.

¿Cuál es la diferencia entre SuiteQL y las Búsquedas Guardadas de NetSuite?

Tanto SuiteQL como las Búsquedas Guardadas son herramientas que se utilizan para recuperar datos de NetSuite, pero SuiteQL ofrece un mejor control sobre uniones (joins), agregaciones y lógica de filtrado utilizando la sintaxis SQL conocida. Por su parte, las Búsquedas Guardadas son más accesibles para usuarios no desarrolladores, pero tienden a volverse complejas y difíciles de mantener a medida que aumentan las necesidades de reporting del negocio.

¿SuiteQL está pensado para reemplazar a las Búsquedas Guardadas?

No, SuiteQL no reemplaza a las herramientas de reporte tradicionales de NetSuite, más bien las complementa. Su uso es ideal para consultas complejas, tableros de control (dashboards) sensibles al rendimiento y en escenarios donde las Búsquedas Guardadas se han vuelto complicadas de optimizar y difíciles de gestionar.

¿Dónde se debe ejecutar SuiteQL en NetSuite?

SuiteQL está diseñado para ejecutarse del lado del servidor en entornos de producción, a través de scripts como Suitelets, RESTlets, Map/Reduce o scripts de User Event. Su uso del lado del cliente se limita estrictamente a escenarios de debugging basados en el navegador y no se recomienda para producción.

¿Para qué tipo de casos de uso es ideal SuiteQL?

SuiteQL es ideal para uniones complejas entre tablas de NetSuite, informes financieros y operativos, tableros de control (dashboards) sensibles al rendimiento, herramientas de administración interna y para simplificar Búsquedas Guardadas demasiado complicadas. Es particularmente práctico para desarrolladores que ya están acostumbrados a trabajar con SQL.

¿Qué es un Suitelet en NetSuite?

Un Suitelet en NetSuite es un tipo de script del lado del servidor que se utiliza para construir páginas personalizadas y herramientas internas. Es uno de los contextos recomendados para ejecutar consultas de SuiteQL, ya que gestiona la recuperación de datos de manera segura en el servidor y puede exponer los resultados a los usuarios a través de una interfaz de usuario personalizada.

¿Qué es la paginación en SuiteQL y por qué es importante?

La paginación en SuiteQL es la práctica de recuperar datos en lotes más pequeños y de tamaño fijo en lugar de traerlos todos juntos de una vez, utilizando las cláusulas OFFSET y FETCH NEXT. Es fundamental porque evita problemas de rendimiento y previene la violación de los límites de gobernanza al consultar grandes volúmenes de datos en NetSuite.

¿SuiteQL respeta el modelo de seguridad de NetSuite?

Sí, SuiteQL respeta el modelo de seguridad y gobernanza nativo de NetSuite. Esto significa que los usuarios y scripts solo pueden acceder a la información que están autorizados a ver, lo que lo convierte en una opción segura, confiable y lista para producción para la recuperación de datos.


bottom of page