Recent PostsRecent Posts Popular TopicsPopular Topics
 Home Search Members Calendar Who's On

 Generating Test Data: Part 1 - Generating Random Integers and Floats Rate Topic Display Mode Topic Options
Author
 Message
 Posted Sunday, March 25, 2012 5:26 PM
 SSC-Forever Group: General Forum Members Last Login: Yesterday @ 10:03 PM Points: 42,077, Visits: 39,461
 Comments posted to this topic are about the item Generating Test Data: Part 1 - Generating Random Integers and Floats --Jeff Moden"RBAR is pronounced "ree-bar" and is a "Modenism" for "Row-By-Agonizing-Row".First step towards the paradigm shift of writing Set Based code: Stop thinking about what you want to do to a row... think, instead, of what you want to do to a column." Helpful Links:How to post code problemsHow to post performance problems
Post #1272409
 Posted Monday, March 26, 2012 12:20 AM
 Hall of Fame Group: General Forum Members Last Login: Wednesday, February 24, 2016 6:28 AM Points: 3,977, Visits: 6,431
 Outstanding article Jeff! Just what the doctor ordered for something I'm working on at this instant.I can't wait for the purists to berate you for using "pseudo" random numbers though. And let me guess:`DECLARE @Range INT ,@StartValue DATETIME ,@EndValue DATETIMESELECT @StartValue = '2012-02-15', @EndValue = '2012-12-31'SELECT @Range = DATEDIFF(day, @StartValue, @EndValue) SELECT TOP 20 -- Random dates DATEADD(day, ABS(CHECKSUM(NEWID()) % @Range), @StartValue) As SomeRandomTime FROM sys.all_columns ac1 CROSS JOIN sys.all_columns ac2SELECT @Range = DATEDIFF(second, @StartValue, @EndValue) SELECT TOP 20 -- Random times (to the second) DATEADD(second, ABS(CHECKSUM(NEWID()) % @Range), @StartValue) As SomeRandomDate FROM sys.all_columns ac1 CROSS JOIN sys.all_columns ac2` My mantra: No loops! No CURSORs! No RBAR! Hoo-uh!My thought question: Have you ever been told that your query runs too fast?My advice:INDEXing a poor-performing query is like putting sugar on cat food. Yeah, it probably tastes better but are you sure you want to eat it?The path of least resistance can be a slippery slope. Take care that fixing your fixes of fixes doesn't snowball and end up costing you more than fixing the root cause would have in the first place.Need to UNPIVOT? Why not CROSS APPLY VALUES instead?Since random numbers are too important to be left to chance, let's generate some!Learn to understand recursive CTEs by example.Splitting strings based on patterns can be fast!My temporal SQL musings: Calendar Tables, an Easter SQL, Time Slots and Self-maintaining, Contiguous Effective Dates in Temporal Tables
Post #1272459
 Posted Monday, March 26, 2012 3:46 AM
 SSC Veteran Group: General Forum Members Last Login: Monday, June 20, 2016 12:14 AM Points: 270, Visits: 373
 Hi Jeff,Nice Article, Keep going.I have a question on sys tables, most of them using the Sys.tables for generating random numbers. Assume that developers don't have an access to System tables, then how can they get the random numbers.Thanks,Karthik
Post #1272507
 Posted Monday, March 26, 2012 4:25 AM
 SSCommitted Group: General Forum Members Last Login: Friday, October 14, 2016 2:57 AM Points: 1,833, Visits: 6,210
 Krtyknm (3/26/2012)I have a question on sys tables, most of them using the Sys.tables for generating random numbers. Assume that developers don't have an access to System tables, then how can they get the random numbers.He's only using a system table (or view, strictly speaking) because of the number of rows it has--any table with a decent number of rows will work, whether it's a tally table or one of your main data tables.
Post #1272528
 Posted Monday, March 26, 2012 4:38 AM
 Ten Centuries Group: General Forum Members Last Login: Saturday, November 12, 2016 6:57 PM Points: 1,006, Visits: 1,898
 This article was called "Generating Test Data: Part 1 - Generating Random Integers and Floats" It should have been called "Generating Test Data: Part 1 - A Way Cool Compendium of Well Explained El Neato T-SQL Techniques" Just one minor gripe - not about the article - about us, the SQL Server community. I know times are tough but we should all be ashamed of ourselves for allowing a true luminary of the T-SQL world to slip into such penury that he is only able to afford the sort of machine that my kids wouldn't (well probably couldn't) watch YouTube on. What say we pass the hat around and get a natty 2006 machine off ebay for Jeff? Maybe we could start up a One Laptop Per MVP project. One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important.Bertrand Russell
Post #1272532
 Posted Monday, March 26, 2012 5:57 AM
 SSC Eights! Group: General Forum Members Last Login: Wednesday, November 16, 2016 5:11 AM Points: 861, Visits: 535
 Good idea. If you count all the posters except Jeff you are up to 10 cents ------------Buy the ticket, take the ride. -- Hunter S. Thompson
Post #1272570
 Posted Monday, March 26, 2012 6:17 AM
 SSC-Forever Group: General Forum Members Last Login: Yesterday @ 10:03 PM Points: 42,077, Visits: 39,461
 Krtyknm (3/26/2012)Hi Jeff,Nice Article, Keep going.I have a question on sys tables, most of them using the Sys.tables for generating random numbers. Assume that developers don't have an access to System tables, then how can they get the random numbers.Thanks,KarthikThey can use virtually any table. Any table with just 1000 rows will allow them to build a million row table using the Cross Join.That, notwithstanding, in such situations and like I said in the article, I'll build a Tally table for them. My Tally tables usually have 11000 rows in them so I can use it to build 30 years of dates. That's enough for a Cross Join to build a million rows... or 121 million if they want. --Jeff Moden"RBAR is pronounced "ree-bar" and is a "Modenism" for "Row-By-Agonizing-Row".First step towards the paradigm shift of writing Set Based code: Stop thinking about what you want to do to a row... think, instead, of what you want to do to a column." Helpful Links:How to post code problemsHow to post performance problems
Post #1272579
 Posted Monday, March 26, 2012 6:20 AM
 SSC-Forever Group: General Forum Members Last Login: Yesterday @ 10:03 PM Points: 42,077, Visits: 39,461
 paul.knibbs (3/26/2012)Krtyknm (3/26/2012)I have a question on sys tables, most of them using the Sys.tables for generating random numbers. Assume that developers don't have an access to System tables, then how can they get the random numbers.He's only using a system table (or view, strictly speaking) because of the number of rows it has--any table with a decent number of rows will work, whether it's a tally table or one of your main data tables.Ah... I should have scrolled down a bit more before replying. Thanks for the cover, Paul! --Jeff Moden"RBAR is pronounced "ree-bar" and is a "Modenism" for "Row-By-Agonizing-Row".First step towards the paradigm shift of writing Set Based code: Stop thinking about what you want to do to a row... think, instead, of what you want to do to a column." Helpful Links:How to post code problemsHow to post performance problems
Post #1272582
 Posted Monday, March 26, 2012 6:25 AM
 SSC-Forever Group: General Forum Members Last Login: Yesterday @ 10:03 PM Points: 42,077, Visits: 39,461
 GPO (3/26/2012)This article was called "Generating Test Data: Part 1 - Generating Random Integers and Floats" It should have been called "Generating Test Data: Part 1 - A Way Cool Compendium of Well Explained El Neato T-SQL Techniques" Just one minor gripe - not about the article - about us, the SQL Server community. I know times are tough but we should all be ashamed of ourselves for allowing a true luminary of the T-SQL world to slip into such penury that he is only able to afford the sort of machine that my kids wouldn't (well probably couldn't) watch YouTube on. What say we pass the hat around and get a natty 2006 machine off ebay for Jeff? Maybe we could start up a One Laptop Per MVP project.That's a much cooler title! Thanks for the great feedback.I actually do have a more modern HP G71 laptop that comparatively screams and will do parallelism, etc but I actually like my ol' war horse. If I can make something run fast on it, I know you folks with "real" machines are going to love it. That, notwithstanding, maybe we could get Al Gore to start a "No MVP left behind" project. --Jeff Moden"RBAR is pronounced "ree-bar" and is a "Modenism" for "Row-By-Agonizing-Row".First step towards the paradigm shift of writing Set Based code: Stop thinking about what you want to do to a row... think, instead, of what you want to do to a column." Helpful Links:How to post code problemsHow to post performance problems
Post #1272585
 Posted Monday, March 26, 2012 6:25 AM
 SSC-Forever Group: General Forum Members Last Login: Yesterday @ 10:03 PM Points: 42,077, Visits: 39,461
 G Bryant McClellan (3/26/2012)Good idea. If you count all the posters except Jeff you are up to 10 centsHeh... that's more than Al Gore has given me so far. --Jeff Moden"RBAR is pronounced "ree-bar" and is a "Modenism" for "Row-By-Agonizing-Row".First step towards the paradigm shift of writing Set Based code: Stop thinking about what you want to do to a row... think, instead, of what you want to do to a column." Helpful Links:How to post code problemsHow to post performance problems
Post #1272586

 Permissions