¡Acción CAS!  Crear columnas en tablas CAS – Parte 1

¡Acción CAS! Crear columnas en tablas CAS – Parte 1


¡Bienvenido de nuevo a mi serie de blogs de usuarios de CAS, CAS Action! – una serie sobre conceptos básicos. He dividido la serie en partes lógicas y consumibles. Si primero desea aprender un poco más sobre qué son las acciones de CAS, lea Acciones y conjuntos de acciones de CAS: una breve introducción. Si desea ver otros temas de la serie, visite la página de descripción general. De lo contrario, aprenderemos cómo crear columnas calculadas en tablas CAS.

En este ejemplo, usaré el procedimiento CAS para crear columnas en tablas CAS para usar en acciones CAS. Podría ejecutar un código similar en Python, R y más con algunos cambios menores de sintaxis para cada idioma. Los otros lenguajes también incluyen métodos específicos para lograr el mismo objetivo.

Comienzo ejecutando el siguiente código para crear una tabla CAS llamada PRODUCTOS en el cual caser caslib con 80 millones de líneas. Luego creo una variable llamada ProductosTbl a que se refieren PRODUCTOS tabla CAS y use la variable como valor para el parámetro de tabla en la acción Obtener CAS.

proc cas;
    productsTbl = {name = 'products', caslib = 'casuser'};
 
    table.fetch / table = productsTbl;
quit;

Y la respuesta:

Crear una columna calculada

Para crear una columna calculada, agregue el subparámetro computedVarsProgram a la referencia de la tabla CAS. El parámetro computedVarsProgram especifica una expresión para cada variable calculada y toma una cadena como valor. La cadena puede ser:

  • una declaración de asignación que puede contener la mayoría de las funciones SAS.
  • una instrucción SAS IF/THEN/ELSE
  • una declaración SAS LENGTH o LABEL

Comenzaré creando una columna calculada simple llamada precio total que multiplica Precio desde cantidad. Este cálculo se activa cuando se hace referencia a ProductosTbl Tabla CAS en el parámetro de tabla de una acción CAS. Aquí uso la acción de búsqueda para mostrar 20 filas de la tabla.

proc cas;
    productsTbl = {name = 'products', 
                   caslib = 'casuser',
                   computedVarsProgram = 'Total_Price = Price * Quantity;'};
 
    table.fetch / table = productsTbl;
quit;

Y la respuesta:

En los resultados anteriores, observe la nueva columna precio total se creó durante la ejecución de la acción de búsqueda. La tabla CAS original no ha sido modificada.

Crear múltiples columnas calculadas

A continuación, creo una segunda columna agregando una nueva instrucción de asignación a la cadena. La segunda columna calculada, corrección_del_producto reproduce en las mayúsculas originales producto Pilar. En la cadena, debe terminar cada declaración de asignación con un punto y coma. Lo que es más importante, se requiere una nueva columna porque el subparámetro computedVarsProgram no puede sobrescribir las columnas existentes en la tabla. Para actualizar los valores en una columna de la tabla CAS, use la acción table.update.

proc cas;
    productsTbl = {name = 'products', 
                   caslib = 'casuser',
                   computedVarsProgram = 'Total_Price = Price * Quantity;
                                          Product_fix = upcase(Product);'};
 
    table.fetch / table = productsTbl;
quit;

Y la respuesta:

En los resultados anteriores, observe que la acción de búsqueda creó el precio total y corrección_del_producto columnas.

Usar lógica condicional

Además, también puede usar una instrucción tradicional SAS IF/THEN/ELSE en el subparámetro computedVarsProgram. Por ejemplo, creo una nueva columna llamada volver_arreglar que reemplaza los valores faltantes en el Regresar columna de valor no

proc cas;
    productsTbl = {name = 'products', 
                   caslib = 'casuser',
                   computedVarsProgram = 'Total_Price = Price * Quantity;
                                          Product_fix = upcase(Product);
                                          if Return = "" then Return_fix = "No"; 
                                              else Return_fix = "Yes";'
    }; 
 
    table.fetch / table = productsTbl;
quit;

Y la respuesta:

En los resultados anteriores, hay tres nuevas columnas calculadas: precio total, corrección_del_producto y volver_arreglar.

Almacenar las columnas calculadas en una variable

Finalmente, en lugar de agregar las columnas calculadas como una cadena, quiero almacenarlas en una variable usando la instrucción de bloque SOURCE del lenguaje CAS. Al almacenar la cadena en el bloque SOURCE, puede incrustar las columnas calculadas como una cadena de texto y evitar posibles problemas de citas. Nombraré mi variable de bloque SOURCE crear columnas y utilícelo como el valor en el subparámetro computedVarsProgram.

proc cas;
    source createColumns;
        Total_Price = Price * Quantity;
        Product_fix = upcase(Product);
        if Return = "" then Return_fix = "No"; 
           else Return_fix = "Yes";
    endsource;
 
    productsTbl = {name = 'products', 
                   caslib = 'casuser',
                   computedVarsProgram = createColumns
    }; 
 
    table.fetch / table = productsTbl;
quit;

Y la respuesta:

Los resultados muestran el mismo resultado que en la sección anterior.

Si bien esto es genial, ¿cómo lo cambio de formato? precio total ¿Columna en formato tradicional de dólar SAS? Mira cuidadosamente volver_arreglar Pilar. Ver un problema con el ¿Valores? ¡Así que estén atentos a la parte 2!

resumen

En resumen, el uso del subparámetro computedVarsProgram le permite crear fácilmente columnas calculadas en tablas de CAS mientras ejecuta acciones de CAS. Algunos datos clave:

  • El subparámetro computedVarsProgram toma una cadena como valor y usa sentencias de asignación SAS tradicionales, sentencias IF/THEN/ELSE, y también puede usar sentencias LABEL y LENGTH.
  • El uso del subparámetro computedVarsProgram no cambia la tabla CAS original. Simplemente se aplica durante la ejecución de una acción CAS.
  • Si crea una variable de diccionario con la referencia de la tabla CAS, puede usar esa variable en una variedad de acciones dentro del parámetro de la tabla.
  • Un bloque SOURCE le permite incrustar su texto en una variable sin usar una cadena.

Recursos adicionales

obtener acción
Servicios de análisis en la nube de SAS®: conceptos básicos
código

Related post

Meta Pay es parte de una “Cartera para el Metaverso”

Meta Pay es parte de una “Cartera para el…

Meta lanzará una billetera digital para usar en Metaverse como parte de su servicio Meta Pay (anteriormente Facebook Pay). El CEO…
Amazon Sagemaker Ground Truth ahora puede crear objetos virtuales para el entrenamiento de modelos de IA – TechCrunch

Amazon Sagemaker Ground Truth ahora puede crear objetos virtuales…

Se necesitan enormes cantidades de datos para entrenar modelos de IA. Pero a veces esos datos simplemente no están disponibles en…
¡Vea nuestra nueva demostración en acción!

¡Vea nuestra nueva demostración en acción!

Estamos emocionados de presentar nuestra nueva solución de cuidado de máquinas Robotiq en Automatica este año. ¡Despierta un gran interés! La…

Leave a Reply

Tu dirección de correo electrónico no será publicada.