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


Posted

in

,

by

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *