Como Generar Datos nuevos en WideWorldImporters
|Por muchos años, una de las primeras bases de datos de muestreo que instalamos para las pruebas fue AdventureWorks. Como muchos de Nosotros sabíamos, las tablas en AdventureWorks eran muy pequeñas.
La comunidad surgió con varias soluciones para hacer crecer la base de datos, pero el que he utilizado más es un script de Jonathan Kehayias (b|t)
Ahora, AdventureWorks ha estado en la comunidad por 10 años, y SQL Server ha cambiado bastante en ese tiempo. Para mostrar todas las funcionalidades de SQL Server 2016 y 2017, Microsoft nos ha dado una nueva base de datos de ejemplo que reemplaza a AdventureWorks. Esa base de datos es WideWorldImporters. Puedes descargar la última versión de WideWorldImporters desde github.
Cunado completas el restore del respaldo de WideWorldImporters, verás que las tablas son bastante pequeñas, de nuevo. Esto fue intencional, para mantener el tamaño del respaldo pequeño. Pero esta vez, Microsoft nos ha dado un stored procedure que generará nuevos datos para las tablas. Ese stored procedure se llama DataLoadSimulation.PopulateDataToCurrentDate.
El procedimiento acepta los siguientes parámetros:
- @AverageNumberOfCustomerOrdersPerDay int – La cantidad promedio de pedidos creados por día.
- @SaturdayPercentageOfNormalWorkDay int – El porcentaje de ordenes creados un sábado.
- @SundayPercentageOfNormalWorkDay int – El porcentaje de ordenes creados un domingo.
- @IsSilentMode bit – Imprime la actividad detallada del día en la ventana de resultados
- @AreDatesPrinted bit – Imprimir la fecha en la ventana de resultados
Aquí están los parámetros que he utilizado a continuación:
use WideWorldImporters go DECLARE @RC int DECLARE @AverageNumberOfCustomerOrdersPerDay int DECLARE @SaturdayPercentageOfNormalWorkDay int DECLARE @SundayPercentageOfNormalWorkDay int DECLARE @IsSilentMode bit DECLARE @AreDatesPrinted bit -- TODO: Set parameter values here. set @AverageNumberOfCustomerOrdersPerDay = 100 set @SaturdayPercentageOfNormalWorkDay = 20 set @SundayPercentageOfNormalWorkDay = 10 set @IsSilentMode = 1 set @AreDatesPrinted = 1 EXECUTE @RC = [DataLoadSimulation].[PopulateDataToCurrentDate] @AverageNumberOfCustomerOrdersPerDay ,@SaturdayPercentageOfNormalWorkDay ,@SundayPercentageOfNormalWorkDay ,@IsSilentMode ,@AreDatesPrinted GO
Lo siguiente es cuando @AverageNumberOfCustomerOrdersPerDay = 100, @IsSilentMode = 0, y @AreDatesPrinted = 1:
Tue Aug 01, 2017 Receiving stock from purchase orders Changing 1 passwords Activating 0 logons Creating 50 customer orders Picking stock for customer orders Processing customer payments Invoicing picked orders Placing supplier orders Recording invoice deliveries Adding 0 customers Adding 0 stock items Adding special deals Modifying a few temporal items Recording delivery van temperatures Recording cold room temperatures Wed Aug 02, 2017 Receiving stock from purchase orders Changing 0 passwords Activating 0 logons Creating 61 customer orders Picking stock for customer orders Processing customer payments Invoicing picked orders Placing supplier orders Recording invoice deliveries Adding 0 customers Adding 0 stock items Adding special deals Modifying a few temporal items Recording delivery van temperatures Recording cold room temperatures
Advertencia, este procedure es bastante lento. Microsoft estima alrededor de 10 minutos por año. Pero he visto DataLoadSimulation.PopulateDataToCurrentDate correr más lento, pero fuera de producción.
En mi VM, el proceso tomó 2 horas para completarse.
Con este query, puedos ver los SUMs diarios.
use WideWorldImporters go select [OrderDate] , count(*) as TotalOrders from sales.Orders group by [OrderDate] order by [OrderDate]
Los resultados verifican que el proceso esté completo