Pregunta

Estoy a punto de entrar en las primeras fases de diseño de una aplicación de comercio de productos básicos. Una función importante de esta aplicación es la captura y evaluación de información de precios. Los precios en este mercado no son fijos. Por lo general, es un punto de referencia del mercado +/- una prima. Por ejemplo: (A y B son referencias de mercado)

  • Precio = A + $ 1
  • Precio = A + .5 (A-B)

El precio final de la transacción se calcula utilizando la fórmula de precios aplicada en un tiempo acordado. Por ejemplo; El precio final podría ser el promedio de A + $ 1 durante la semana anterior y la semana posterior a la carga del producto.

En la actualidad, los operadores están capturando este detalle en Excel, lo que les permite la flexibilidad para configurar las fórmulas requeridas, pero esta información nunca llega a nuestros sistemas contables y las hojas de cálculo no están conectadas a las predicciones en tiempo real de los puntos de referencia del mercado que hacen las previsiones de precios Una tarea manual y lenta.

Estoy buscando información sobre qué herramientas / técnicas puedo usar para ingresar, almacenar y evaluar fórmulas en una aplicación.

Usaremos SQL Server u Oracle como la base de datos y la plataforma cliente aún no está arreglada, pero puede asumir que WinForms / WPF, ASP.NET o una aplicación web de Java.

Sé que esta es una pregunta bastante amplia, pero no estamos lo suficientemente avanzados como para ser más específicos en cuanto a qué tecnologías se utilizarán.

Gracias

¿Fue útil?

Solución

Apuesto a que a sus usuarios les gusta la flexibilidad de ingresar las fórmulas en Excel, así que sugiero un enfoque como este: -

  1. Escriba algo que les permita ingresar fórmulas en su aplicación usando el tipo de operadores que realmente usarán con palabras clave para los diferentes precios base. Esto solo se puede almacenar como una cadena.
  2. Valide esto utilizando un enfoque de lista blanca (podría ser bastante complicado, quizás necesites buscar algunos algoritmos de análisis basados ??en pila). Puede permitir: + - / * () {constantes numéricas} {palabras clave para precios base}.
  3. Convierta estas fórmulas en algo que su base de datos pueda comprender en la lista SELECT. Si las fórmulas que ingresan son similares a lo que puede hacer en SQL, esto podría no ser demasiado difícil. Las palabras clave se convierten en nombres de columna y todo lo demás se puede dejar solo.

Luego, podrá SELECCIONAR la copia de seguridad de los datos, promediando los períodos de tiempo, etc. insertando el formulario especial y ejecutándolo sobre sus datos históricos y / o predicciones.

El Paso 2 tiene algunos trucos, pero haría todo lo demás fácil (y eficiente).

Otros consejos

¿Ha considerado integrarse con Excel? De esa manera, no tiene que intentar quitar Excel de sus garras (los usuarios empresariales ADORE Excel), y pueden usar todos los trucos que han aprendido a lo largo de los años. Simplemente bombea los datos entre tu aplicación y Excel usando VBA (o como sea, le dicen a la gente que se integre con Excel en estos días) y estás bastante listo para comenzar.

Tengo una solución ridículamente simple relacionada con la propuesta de Hank. Cree una base de datos y modele después de sus tablas de Excel. Exporte los datos de Excel e impórtelos a su base de datos. Cree conectores ODBC en las máquinas cliente para apuntar a la base de datos. En Excel, puede conectarse a las fuentes de datos. De esta manera, sus clientes no tendrán problemas con los cambios en la interfaz de usuario.

Escenario interesante. ADVERTENCIA: esta respuesta se basa en algunas ideas que tuve para abordar el problema y es posible que no reflejen las mejores prácticas.

Intentaría ver si puedes reducir tus posibles reglas de fórmula a construcciones más simples. Esto le permitiría luego componer sus reglas para crear fórmulas complejas. Entonces deberías poder almacenar las reglas dentro de la base de datos, lo que podría hacerse usando un DSL o algún archivo de reglas XML.

Parece que su escenario actual, las fórmulas en Excel, está funcionando bastante bien, pero tiene algunos inconvenientes. ¿Has considerado usar algunas macros avanzadas o la automatización de Excel? Probablemente pueda lograr la mayoría de sus objetivos sin que sus clientes tengan que dejar Excel.

Buena suerte.

Si los datos son de una fuente confiable (grande si), puede almacenar expresiones de base de datos en una columna y luego crear una instrucción SELECT sobre la marcha para ejecutarla.

Puede usar un paquete matemático simbólico como GiNaC para interpretar las fórmulas que ingresa en el tablas.

Gracias por las respuestas.

Los propios usuarios quieren alejarse de Excel. Están luchando con varios usuarios que intentan ingresar y actualizar datos. Podría investigar qué opciones ofrece VSTO para incrustar pequeñas hojas de Excel en las aplicaciones.

Me estoy inclinando por usar un 'lenguaje' incorporado para almacenar y evaluar las fórmulas.

El uso de un analizador simple para convertir las fórmulas ingresadas en SQL es probablemente una idea razonable, ya que las variables en las ecuaciones son vectores de series de tiempo, no puntos de datos escalares y el enfoque de SQL debería facilitar el cálculo de los resultados durante los períodos de tiempo requeridos.

Gracias

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top