Nota: Este artículo explica la estructura y el uso de los modelos de datos de Alchemy Reporting. El acceso directo a Snowflake le proporcionará capacidades adicionales de generación de informes fuera de Alchemy Manager para aquellos que utilicen operaciones de inteligencia empresarial (BI) o análisis empresarial (BA). Si está interesado en utilizar Snowflake, póngase en contacto con su Gerente de cuentas de Alchemy para obtener información sobre precios. Para obtener más información sobre Smart Reports, consulte ¿Qué son los Smart Reports?
Acerca de Snowflake Direct Access
La plataforma Alchemy Training System utiliza Snowflake, una solución de almacén de datos extremadamente capaz. Para los clientes con sofisticadas operaciones de inteligencia empresarial (BI) o análisis empresarial (BA), Alchemy ofrece la posibilidad de que los clientes se conecten directamente a Snowflake, permitiendo a las organizaciones ver, consultar y analizar directamente todos sus datos de capacitación.
Snowflake Direct Access permite realizar análisis e informes exclusivos sobre la capacitación que Intertek Alchemy le ayuda a impartir.
- Construya eficientemente sus análisis
- Combine fácilmente los datos de Alchemy con conjuntos de datos de otros sistemas
- Descubra valiosas perspectivas y tendencias
Los clientes pueden acceder a la nube de datos Snowflake de Alchemy Manager de dos maneras:
- Cuenta de cliente: esta opción es para clientes que tienen su propia cuenta Snowflake y relación de facturación. Esta opción requiere que el cliente tenga sus datos almacenados en la región AWS us-east-1.
- Cuenta de lector de Alchemy: esta opción es en la que Alchemy crea y gestiona una cuenta de lector para el cliente, y toda la facturación la gestiona Alchemy.
Tanto si utilizas una de las interfaces web de Snowflake como una conexión de red directa a Snowflake, tu acceso a los datos se realiza con SQL, por lo que necesitarás a alguien con conocimientos en su uso. El nivel de conocimientos de SQL que necesite vendrá determinado por lo que esté intentando conseguir, pero podría requerir fácilmente el uso de múltiples JOINs, múltiples cláusulas WHERE y una extensa lista de campos SELECT.
Modelos de datos
Los modelos de datos (DM) son las vistas de los datos de Alchemy a las que proporcionamos acceso directo. Sus Smart Reports y cuadros de mando utilizan estos DMs para generar los datos. Proporcionan una versión de los datos de la aplicación que simplifica la recuperación y funciona muy bien cuando se analizan los datos.
Los campos "clave" se utilizan para identificar los principales objetos de la base de datos. Pueden utilizarse para identificar objetos únicos y también se utilizan con un "join" para extraer datos adicionales.
DM_STUDENT_DETAIL
Esta tabla contiene información detallada sobre cada alumno. Puede consultarla directamente del siguiente modo:
select user_full_name, user_id, user_worksite, date_of_hire, user_groups from dm_student_detail order by date_of_hire desc nulls last limit 20;
Las Columnas de la Lista de Grupos
Alchemy Manager puede ser configurado para soportar hasta 13 "Clasificaciones de Estudiantes". Cada clasificación tiene un campo en DM_STUDENT_DETAIL
que tiene el nombre del grupo (o grupos) al que pertenece ese estudiante. Los nombres de grupos múltiples se separarán mediante espacios y el símbolo de pipa (|
). Sólo se mostrarán los 100 primeros nombres de grupo, ya que el objetivo es que se muestren "tal cual" en lugar de manipularlos o buscar en ellos.
Los nombres de las columnas son los siguientes
STATUS_GROUPS
PAY_TYPE_GROUPS
TIME_TYPE_GROUPS
EMP_TYPE_GROUPS
REGION_GROUPS
SUB_REGION_GROUPS
DIV_GROUPS
BUSS_UNIT_GROUPS
DEPT_GROUPS
JOB_CODE_GROUPS
JOB_TITLE_GROUPS
JOB_CLASS_GROUPS
SHIFT_GROUPS
Además, el campo USER_GROUPS
actúa de la misma manera para los "Grupos del sistema".
DM_*_REPORT
Estas son las principales tablas de informes. En general, cada Smart Report en Alchemy Manager utiliza una tabla de informes, y cada fila de la tabla representa una fila de salida en un Smart Report. Los casos más sencillos utilizarán probablemente una tabla de informes y la tabla DM_STUDENT_DETAIL
, una consulta como esta funcionaría:
select s.user_full_name, tr.training_end_date, tr.activity_code, tr.activity_title from dm_tr_report tr inner join dm_student_detail s on tr.student_key = s.student_key where date(tr.training_end_date) = current_date
Las tablas son:
Tabla de Informaes | Datos proporcionados |
---|---|
DM_TR_REPORT |
Contiene datos de capacitación sobre actividades individuales de los alumnos, como cursos de Alchemy, observaciones, cursos de Player, ILT, etc. |
DM_LP_REPORT |
Contiene información sobre el estado de las suscripciones de los alumnos a los Planes de Aprendizaje. Para cada suscripción del alumno a un Plan de Aprendizaje, tiene una fila para cada actividad requerida para completar ese Plan de Aprendizaje y el estado del alumno para ese requisito. |
DM_OBSERVATION_REPORT |
Contiene detalles de las observaciones, como los comentarios resumidos, la información del observador, la causa principal, el refuerzo y las acciones correctivas. Tenga en cuenta que las imágenes no están disponibles y que los detalles de las respuestas individuales requieren unirse con DM_ANSWER_DETAILS . |
DM_QP_STATUS_REPORT |
Mantiene el estado de las asignaciones de los alumnos a los planes de cualificación. Puede incluir cualificaciones manuales o caducidades. |
Tenga en cuenta que estamos eliminando los campos de estudiante de las tablas de informes para simplificar los nuevos informes y obtener detalles de varios estudiantes (es decir, OBSERVED_BY_KEY
, FACILITATOR_STUDENT_KEY
, etc). Por motivos de compatibilidad, deberá recuperar los datos de los alumnos de la tabla DM_STUDENT_DETAIL
.
DM_LOCALE_*
Estas tablas contienen las distintas traducciones de los objetos de Alchemy Manager que las admiten. Cada tabla representa las traducciones disponibles para un único campo de texto. Cada fila de la tabla representa el texto que se mostraría para una única configuración regional. (Actualmente, el campo locale
contiene un número obtuso. Esto se cambiará más adelante).
Tenga en cuenta que existe una traducción en cada una de las configuraciones regionales de la interfaz de usuario aunque no se haya proporcionado ninguna. En este caso se utilizará la traducción "en_US".
El contenido del curso puede estar disponible en una amplia variedad de idiomas, pero el título principal está enDM_LOCALE_PARENT
y sólo en las configuraciones regionales de interfaz compatibles. Por ejemplo, hay cursos en swahili, vietnamita, etc., con nombres que no están en inglés, pero su título padre tendría una traducción al inglés, como "Electrical Safety Swahili", y podría no haber una traducción al español del título padre, por lo que en dm_locale_parent
se almacenaría con el mismo título en inglés.
Como ejemplo, para obtener nombres padre "es-US" (obtendremos "en-US" donde no haya "es-US") para la capacitación reciente, funcionaría una consulta como ésta:
select s.user_full_name, tr.training_end_date, tr.activity_code, p.name, tr.activity_title from dm_tr_report tr inner join dm_student_detail s on tr.student_key = s.student_key inner join dm_locale_parent p on p.parent_key=tr.parent_key and p.filter_locale=160 where date(training_end_date) = current_date() limit 20;
Las tablas son:
Tabla de traducción | Clave de objeto | Datos proporcionados |
---|---|---|
DM_LOCALE_CATEGORY_GROUP |
COURSECAT_KEY |
Contiene los nombres de las categorías de cursos |
DM_LOCALE_PARENT |
PARENT_KEY |
Contiene los nombres de los cursos principales |
DM_LOCALE_LP_GOAL |
GOAL_KEY |
Contiene los nombres de los Planes de Aprendizaje |
DM_LOCALE_QUALIFICATION |
QUALIFICATION_PLAN_KEY |
Contiene los nombres de los Planes de Cualificación |
El ID de localidad (filter_locale
) para los locales de Alchemy UI son:
Locale Name | Locale ID |
---|---|
en_US | 1 |
es_US | 160 |
fr_CA | 186 |
my_MM | 343 |
so_SO | 442 |
en_GB | 116 |
pa_IN | 380 |
zh_CN | 538 |
vi_VN | 522 |
de_DE | 85 |
es_ES | 149 |
pt_BR | 389 |
es_MX | 153 |
fr_FR | 194 |
es_419 | 140 |
DM_ANSWER_DETAILS
Esta tabla contiene los detalles de las respuestas de un alumno a un test, una evaluación o una observación. Algunos campos se rellenan o no dependiendo del tipo de objeto. Se unirá a la tabla del informe utilizando TEST_SESSION_KEY
.
Nota: Ninguno de los Smart Reports actuales incluye datos de esta tabla, y las "evaluaciones anónimas" son anónimas en la interfaz de usuario pero no en los datos. Para preservar el anonimato, cualquier uso de los datos debe ocultar los detalles.
DM_STUDENT_GROUP
Esta tabla incluye todos los grupos asociados a un alumno. Está pensada para ser utilizada sólo para filtrar. Esto se consigue añadiendo una cláusula WHERE
como:
where student_key in ( select distinct student_key from dm_student_group where group_name='A Status Name' and group_type='Status' )
DM_STUDENT_SECURITY
Esta tabla te permite reforzar la seguridad de estilo supervisor de Alchemy Manager. La seguridad de Manager se basa totalmente en el acceso a un estudiante. Las filas de esta tabla deben filtrarse por ADMIN_STUDENT_KEY
y unirse de nuevo a la tabla de informes mediante STUDENT_KEY
. El resultado es eliminar las filas a las que no tiene acceso el administrador. Para obtener la ADMIN_STUDENT_KEY
correcta, busque la STUDENT_KEY
del administrador en la tabla DM_STUDENT_DETAIL
Este es un ejemplo para filtrar los resultados del administrador con USER_ID='000001'
:
where student_key in ( select distinct student_key from dm_student_security where admin_student_key=( select student_key from dm_student_detail where user_id='000001' ) )
Nota: La tabla también puede ser archivada por UNIQUEADMINID
que se compone del StudentID
y su DB_NAME
. Se ve algo como esto:
where student_key in ( select distinct student_key from dm_student_security where uniqueadminid='12345@alchemy_clientname_live' )
Carga incremental
Si está replicando los datos del informe en un sistema propio, recargar los datos de forma regular puede resultar demasiado lento o costoso. La solución estándar a este problema es cargar sólo lo que ha cambiado. Esto se denomina carga incremental o, a veces, carga delta. Este plan presenta varias dificultades:
Identificar las filas modificadas puede ser difícil.
Las filas modificadas deben fusionarse con los datos antiguos.
No hay forma de saber qué filas deben eliminarse.
La forma más sencilla de gestionar una gran carga de datos es realizar cargas incrementales cada día y, a continuación, realizar una recarga completa una vez a la semana. En otras palabras, utilice una carga incremental como un "mejor esfuerzo" para tener los datos actualizados, pero utilice una recarga completa para corregir cualquier cosa que se haya pasado por alto o que deba eliminarse.
Estamos trabajando para facilitar la identificación de las filas modificadas. Actualmente, cada tabla tiene un campo CHANGE_DATE
pero puede que le parezca que cambia con demasiada frecuencia. Estamos añadiendo un campo DM_LAST_MODIFIED
para indicar sólo cuándo se han producido cambios importantes. Si utiliza uniones, también deberá tener en cuenta los cambios en esas tablas. Para ser minucioso, debería buscar cualquier fecha mayor que la mayor fecha de los datos cargados previamente.
Para ilustrar una estrategia para mantener una copia local de DM_TR_REPORT, este bloque de pseudocódigo asume que su "db local" funciona exactamente igual que otra cuenta Snowflake. El objetivo de esto es minimizar la cantidad de datos transferidos desde Alchemy a la db local.
Informes avanzados
Algunos de nuestros informes tienen una complejidad adicional además de las tablas normales. No podrá recrear la salida de estos informes sin reproducir esta complejidad adicional.
Por ejemplo:
- El Informe de Suscripción al Plan de Aprendizaje utiliza la agrupación para simplificar los resultados cuando los usuarios están suscritos al mismo plan varias veces.
- Los informes "Matriz" utilizan varias filas y realizan una operación "pivotante" para convertir esas filas adicionales en columnas.
- Los gráficos de cuadros de mando disponibles en Manager agregan las filas en una o dos dimensiones y luego proporcionan los datos a una biblioteca de gráficos.