Utilice Loc Sorted para Exact Match en las tablas, ¿u otra herramienta?Un cliente está interesado en configurar una fórmula en una columna que sea similar a BUSCARV (excel). La función generaría el mismo resultado que usar Table Join, pero el cliente tiene razones legítimas para hacerlo con una fórmula en lugar de una unión.
Como ejemplo, su tabla base podría verse así:

Y la segunda tabla de referencia podría ser esta:

Podemos asignar esta fórmula a la columna "Salida" de la tabla base:
dtRefTable = Tabla de datos ("RefTable");
KeyBracket = Loc Sorted (dtRefTable: Key << getvalues,: Key);
dtRefTable: SpecificInfo [KeyBracket];
Cuando la fórmula se ejecuta, cambia la tabla Base para que se vea así:

El problema es que en la tabla base, la clave para la fila 2 es 2401. No hay coincidencia para 2401 en la tabla de referencia, por lo que Loc Sorted se redondea hacia abajo y selecciona el siguiente valor más bajo de Key, que (en este caso) es Key = 2400, y selecciona 111 para la salida.
Lo que el cliente quiere es que esa celda (columna de Salida, fila 2) esté "Falta", o cualquier otro valor que pueda identificarse como "no se encontraron coincidencias" a través de una declaración condicional. Y, por supuesto, no es tan fácil como decir "si Key = 2401 establece la celda en Missing", ya que hay muchas posibilidades en los datos reales para coincidencias y no coincidencias.
S o la tabla base ideal se vería así:

¿Cómo logramos esto? ¿Hay otra función (en lugar de Loc Sorted) que funcione en tablas como esta?
Gracias,
alemán
Re: Use Loc Sorted para Exact Match en las tablas, ¿u otra herramienta?¡Agradable! Gracias Brady, y a todos los que respondieron. Creo que el cliente estará satisfecho.
JSL continúa sorprendiéndome con toda la funcionalidad disponible. No sabía nada acerca de la función "Probar", y no había usado "Como lista". Muy guay, y muy apreciado!
alemán
Re: Use Loc Sorted para Exact Match en las tablas, ¿u otra herramienta?Esto me gusta más Más corto y más elegante.
Re: Use Loc Sorted para Exact Match en las tablas, ¿u otra herramienta?
Aquí hay otra opción.
dt = Data Table( "reftable" );
Try( dt:specificInfo[Loc( As List( dt:key << getvalues ), :Key )[1]], . );
Re: Use Loc Sorted para Exact Match en las tablas, ¿u otra herramienta?Esto debería funcionar siempre que los valores en las columnas Clave sean numéricos y haya configurado la variable de referencia de la tabla. La referencia de columna que tenía en su ejemplo no parece funcionar en las fórmulas de columna.
KeyBracket = Loc(Column(dtRefTable,"Key") << getvalues == :Key);
If(N Row(KeyBracket > 0,
Column(dtRefTable,"SpecificInfo")[KeyBracket[1]],
.
);
No estoy seguro de cómo me siento con un código como este dentro de una fórmula de tabla. Sin embargo, ahorra la molestia de recorrer todos los valores clave en la tabla de destino. Si sus valores clave son caracteres, reemplace "==" con una coma en el comando Loc y cambie el orden de los argumentos.
Re: Use Loc Sorted para Exact Match en las tablas, ¿u otra herramienta?Sí, quiero decir que probablemente podrías hacer esto con fórmulas ... Si hay problemas de control de la tabla, entonces lo que podría ser una mejor ruta sería algo relacionado con el generador de consultas de tabla JMP. Luego podrían guardar un flujo de trabajo estandarizado como un archivo QB y crear una tabla con capacidades de actualización. La ventaja de QB es que el código ya está formateado y construido por JMP.Re: Use Loc Sorted para Exact Match en las tablas, ¿u otra herramienta?Las uniones (regulares o virtuales) realmente funcionan, y originalmente las sugerí al cliente. Sin embargo, tienen algunas necesidades internas (varias personas que acceden a archivos de datos seguros, no entiendo todos los entresijos) que requieren que lo hagan con fórmulas en lugar de combinaciones. ¡Lo siento!
Re: Use Loc Sorted para Exact Match en las tablas, ¿u otra herramienta?Eso es lo que sugeriría también. Tenga en cuenta que no cierre la tabla referenciada antes de guardar la tabla que tiene las fórmulas. Si lo haces, ¡las fórmulas serán eliminadas!
Re: Use Loc Sorted para Exact Match en las tablas, ¿u otra herramienta?¿Intentaste uniones virtuales?
METRO