<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlblog.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Davide Mauri : Agile</title><link>http://sqlblog.com/blogs/davide_mauri/archive/tags/Agile/default.aspx</link><description>Tags: Agile</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Agile Data Warehousing with SQL Server 2012 Q&amp;A</title><link>http://sqlblog.com/blogs/davide_mauri/archive/2012/08/30/agile-data-warehousing-with-sql-server-2012-q-a.aspx</link><pubDate>Thu, 30 Aug 2012 13:38:33 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:44933</guid><dc:creator>Davide Mauri</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/davide_mauri/comments/44933.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/davide_mauri/commentrss.aspx?PostID=44933</wfw:commentRss><description>&lt;p&gt;Yesterday has been published my Q&amp;amp;A interview on my &lt;a href="http://www.sqlpass.org/summit/2012/Sessions/SessionDetails.aspx?sid=2821"&gt;Pre-Conference Workshop at SQL Pass 2012&lt;/a&gt;. It’s a good way to understand what will be discussed in the workshop, so if you’re interested or you’re into the Data Warehouse / Business Intelligence field and want to understand how the Agile approach can help you, you can read it here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://bit.ly/PASS2012DMInterview" href="http://bit.ly/PASS2012DMInterview"&gt;http://bit.ly/PASS2012DMInterview&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=44933" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Agile/default.aspx">Agile</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Business+Intelligence/default.aspx">Business Intelligence</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/PASS/default.aspx">PASS</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Engineering/default.aspx">Engineering</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Adaptive/default.aspx">Adaptive</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Data+Warehouse/default.aspx">Data Warehouse</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Summit/default.aspx">Summit</category></item><item><title>“Adaptive BI: Engineering a BI Solution” slides available</title><link>http://sqlblog.com/blogs/davide_mauri/archive/2010/09/23/adaptive-bi-engineering-a-bi-solution-slides-available.aspx</link><pubDate>Thu, 23 Sep 2010 06:09:45 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:28924</guid><dc:creator>Davide Mauri</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/davide_mauri/comments/28924.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/davide_mauri/commentrss.aspx?PostID=28924</wfw:commentRss><description>&lt;p&gt;Many thanks to all who attented to my webcast on Monday. I really appreciated your feedbacks and I already got some very interesting suggestion that I’ll surely implement.&lt;/p&gt;  &lt;p&gt;If you have more feedbacks you can leave them here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://speakerrate.com/talks/4577-adaptive-bi-engineering-a-bi-solution" href="http://speakerrate.com/talks/4577-adaptive-bi-engineering-a-bi-solution"&gt;http://speakerrate.com/talks/4577-adaptive-bi-engineering-a-bi-solution&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I must say that I would have liked to have more time to do the demo, but via Livemeeting seems to me that time goes MUCH faster and so I arrived near the end of the session with few time left for a proper demonstration of my “Dimension Loader Package Generator” tool. For this reason I’m preparing a set of small screencast that will show it in action, since also for this little tool I’d like to have your feedbacks.&lt;/p&gt;  &lt;p&gt;Ah yes, before I forget :), slides are available here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.slideshare.net/yorek/adaptive-bi-engineering-a-bi-solution" href="http://www.slideshare.net/yorek/adaptive-bi-engineering-a-bi-solution"&gt;http://www.slideshare.net/yorek/adaptive-bi-engineering-a-bi-solution&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Finally, for all those who asked: the Workshop I’ll be delivering at PASS will show how one can create a BI solution putting in place &lt;em&gt;all&lt;/em&gt; the rules I’ve shown, so that the solution will be almost self-documenting, solid, clean, formal but still &lt;em&gt;adaptive&lt;/em&gt;. &lt;/p&gt;  &lt;p&gt;PS&lt;/p&gt;  &lt;p&gt;A public version of “Dimension Loader Package Generator” will be make available at PASS Summit. &lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=28924" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Agile/default.aspx">Agile</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Business+Intelligence/default.aspx">Business Intelligence</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/PASS/default.aspx">PASS</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Adaptive/default.aspx">Adaptive</category></item><item><title>BI Virtual Chapter: “Adaptive BI: Engineering a BI Solution”</title><link>http://sqlblog.com/blogs/davide_mauri/archive/2010/09/09/bi-virtual-chapter-adaptive-bi-engineering-a-bi-solution.aspx</link><pubDate>Thu, 09 Sep 2010 09:54:27 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:28643</guid><dc:creator>Davide Mauri</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/davide_mauri/comments/28643.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/davide_mauri/commentrss.aspx?PostID=28643</wfw:commentRss><description>&lt;p&gt;On the next 20th Semptember I’ll deliver a session on a topic that is IMHO really important but is not yet covered enough:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;Adaptive BI: Engineering a BI Solution&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;Are you starting to create a BI solution....but where do you begin with? How to setup everything correctly so that you'll be able to handle new features required by the customers easily and without too much effort? Which standard do you put in place so that everyone who will join the project will be immediately operative? How do you define your BI architecture so that it can be sound and flexible and the same time?&amp;#160; All these questions come out every time someone has to start a BI project. In this session I'll present a set of standard rules we use to create our BI project, consolidated in more than five years of development (since SQL 2005 was released) and that allow to put some technical rules that helps you to start in the correct way right from the beginning: naming convention, architecture decisions, database unit testing, layering and everything you need to know to build an &amp;quot;Adaptive&amp;quot; Business Intelligence solution. The idea is to be flexible in terms of architectural decision but have some well-known rules in the solution to make it “engineerable”: in one word...&amp;quot;Adaptive&amp;quot;!&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If you’re into BI this session can give you some interesting ideas on how to structure your next project. See you in cyberspace here&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="https://www.livemeeting.com/cc/usergroups/join?id=C97PWB&amp;amp;role=attend&amp;amp;pw=Z%40%2B%5Ew%2B%40h4"&gt;https://www.livemeeting.com/cc/usergroups/join?id=C97PWB&amp;amp;role=attend&amp;amp;pw=Z%40%2B%5Ew%2B%40h4&lt;/a&gt; &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;on Sept 20th at 12pm EST.&lt;/p&gt;  &lt;p&gt;PS&lt;/p&gt;  &lt;p&gt;At the end of the session I’ll show also how the rules can be applied automatically with the right tools, creating an entire package to load a dimension in less then 1 minute, with all best pratices and standard in place!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/davide_mauri/image_2EF590FC.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/davide_mauri/image_thumb_0B0CB9A2.png" width="226" height="244" /&gt;&lt;/a&gt; &lt;a href="http://sqlblog.com/blogs/davide_mauri/image_023CB156.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/davide_mauri/image_thumb_21DB6551.png" width="244" height="223" /&gt;&lt;/a&gt; &lt;a href="http://sqlblog.com/blogs/davide_mauri/image_4A2A97A5.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/davide_mauri/image_thumb_1E0D9AB4.png" width="244" height="180" /&gt;&lt;/a&gt;&lt;a href="http://sqlblog.com/blogs/davide_mauri/image_55DFDED7.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/davide_mauri/image_thumb_45F09A13.png" width="161" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=28643" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Agile/default.aspx">Agile</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Business+Intelligence/default.aspx">Business Intelligence</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/2008/default.aspx">2008</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/2005/default.aspx">2005</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/2008+R2/default.aspx">2008 R2</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Best+Practices/default.aspx">Best Practices</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Engineering/default.aspx">Engineering</category></item><item><title>Engineering BI (Or “On my PASS seminar”, prelude)</title><link>http://sqlblog.com/blogs/davide_mauri/archive/2010/08/28/engineering-bi-or-on-my-pass-seminar-prelude.aspx</link><pubDate>Sat, 28 Aug 2010 13:27:33 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:28380</guid><dc:creator>Davide Mauri</dc:creator><slash:comments>7</slash:comments><comments>http://sqlblog.com/blogs/davide_mauri/comments/28380.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/davide_mauri/commentrss.aspx?PostID=28380</wfw:commentRss><description>&lt;p&gt;I’ve always stated that creating a software solution is half and art and half an engineering process. Just like building an house, or a car, or any mechanical or electrical device, the art is that part of the work where someone has to &lt;em&gt;create something new&lt;/em&gt; to satisfy the customer need. &lt;/p&gt;  &lt;p&gt;Architects are the figures that plays the artistic role. Sure, they don’t re-invent everything from scratch every time: &lt;a href="http://en.wikipedia.org/wiki/Pattern_(architecture)"&gt;Architectural Design Pattern&lt;/a&gt; are here to demonstrate that ideas can be reused successfully. But, still, architects put patterns and new ideas together in order create something new. &lt;/p&gt;  &lt;p&gt;Engineers are the more practical side of this role-playing game and they are more concerned with processes and implementation of the solution so that it can feasible in first place, but also be maintainable, predictable, replicable and cost-effective.&lt;/p&gt;  &lt;p&gt;In the software industry we have Architects but my feeling is that we’re missing the Engineers. This means that a lot of what is being produced from the software industry is more an art than a science and this drives to the fact that the quality, and the maintainability of the final product is completely dependent on the people working on it.&amp;#160; In addition to that, since there are no standards to follow, each one will do as it wish. If you put several people working together you’ll obtain a cauldron of different styles that leads inevitably to higher maintenance cost and low stability and predictability. (I don’t know if you have the same feeling, but I would like to have a feedback on this, if you care to share.)&lt;/p&gt;  &lt;p&gt;Of course I’m generalizing a lot here – I complete discussion on this matter would easily fill a book – and there are several exception to this, but I think I can say without any doubt that if I had to make a picture of my perception of the software industry I’d draw a conglomerate of craftsman workshops and not a factory district.&lt;/p&gt;  &lt;p&gt;In the last years I struggled a bit with this lack of the “engineering” discipline: particularly I found an evidence of this situation in BI projects. While there’s at least two well-know architectural approach (Kimball and Inmon), with other options rising (like the Data-Vault), but still there are no rules and tools that can make the creation of a BI solution more standard.&lt;/p&gt;  &lt;p&gt;In order to be able to add people to an existing project quickly, being sure that they would create something that anyone of the existing team can easily understand, that the infrastructure of all of our BI solution would be similar in order to make its development faster and easier to maintain, I’ve defined a sets of &lt;em&gt;rules&lt;/em&gt; and &lt;em&gt;tools&lt;/em&gt; that helps to make the work easier and higher in quality.&lt;/p&gt;  &lt;p&gt;The idea is that the rules will define the standards, and once we have the rules, we can also create the tools to apply them quickly. This will shorten a lot the time need to &lt;em&gt;build&lt;/em&gt; the solution (which is the part with the lowest added-value) and leave much more time to &lt;em&gt;design &lt;/em&gt;it (where there is the “core” value of it).&lt;/p&gt;  &lt;p&gt;I’ve got this idea watching “How it’s made” on Science Discovery channel, watching people building the awesome Airbus 380. If such complex machine can be assembled by several people everyone doing a small part of the work, we should be able to do it also with BI solution! We “only” need rules that will drive organization of work and tools to make work easier and faster for anyone. Of course this also leads to a solution that is flexible enough to accomodote quickly new customers requests or changes of direction.&lt;/p&gt;  &lt;p&gt;Apply the idea to Business Intelligence and you’ll have and “Engineered BI Solution” which will be both sound and agile. I like to call it “Adaptive”. That’s what I’ve already &lt;a href="http://www.sqlpass.org/summit/eu2010/Agenda/ProgramSessions/AdaptiveBIBestPratices.aspx"&gt;presented&lt;/a&gt; on PASS European Summit 2010 in an specific session that had very good feedbacks and that’s what I’m going to show in my “&lt;a href="http://sqlpass.eventpoint.com/topic/details/BIA281P"&gt;Creating a BI Solution from A to Z&lt;/a&gt;” post-conference seminar (&lt;em&gt;8 hours of deep dive, blending theory and practice, architecture and engineering, making it a unique session of its kind&lt;/em&gt;), in my next BI Virtual Chapter meeting (more on this in another post) and also in the next posts of this series. &lt;/p&gt;  &lt;p&gt;If you’re new to BI or you’ll starting a new BI project in the next months, or you simply want to learn more on this approach, don’t miss the opportunity, and share your feedback!&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=28380" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Agile/default.aspx">Agile</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Business+Intelligence/default.aspx">Business Intelligence</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Engineering/default.aspx">Engineering</category></item><item><title>QueryUnit 0.0.0.8 – Trust No One</title><link>http://sqlblog.com/blogs/davide_mauri/archive/2010/04/13/queryunit-0-0-0-8-trust-no-one.aspx</link><pubDate>Tue, 13 Apr 2010 06:22:01 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:24232</guid><dc:creator>Davide Mauri</dc:creator><slash:comments>2</slash:comments><comments>http://sqlblog.com/blogs/davide_mauri/comments/24232.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/davide_mauri/commentrss.aspx?PostID=24232</wfw:commentRss><description>&lt;p&gt;Yesterday I’ve release an updated version of QueryUnit, the version 0.0.0.8.&lt;/p&gt;  &lt;p&gt;QueryUnit now supports AreNotEqual, Greater, and Less assertions and is more capable of managing strings results.&lt;/p&gt;  &lt;p&gt;I must say that I cannot live anymore without a proper Unit Testing of a BI solution. Just yesterday happened that one of the unit tests at a customer site failed showing a subtle situation where the release of a new version of custom application would have corrupted the source of BI data with a very low chance that someone would have noticed it before several days. It may happen when you have more the 15 systems that handles the data needed by your BI solution.&lt;/p&gt;  &lt;p&gt;The key message of this situation is “&lt;strong&gt;Trust No One&lt;/strong&gt;”: &lt;em&gt;if your data hasn’t passed quality testing it’s not trustable. Period.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;So QueryUnit is now officialy an hero (at least for me) :) No superpowers still, but useful above all.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://queryunit.codeplex.com/" href="http://queryunit.codeplex.com/"&gt;http://queryunit.codeplex.com/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=24232" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Unit+Testing/default.aspx">Unit Testing</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Agile/default.aspx">Agile</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Business+Intelligence/default.aspx">Business Intelligence</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/QueryUnit/default.aspx">QueryUnit</category></item><item><title>The importance of Unit Testing in BI</title><link>http://sqlblog.com/blogs/davide_mauri/archive/2010/04/01/the-importance-of-unit-testing-in-bi.aspx</link><pubDate>Thu, 01 Apr 2010 16:50:06 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:23978</guid><dc:creator>Davide Mauri</dc:creator><slash:comments>2</slash:comments><comments>http://sqlblog.com/blogs/davide_mauri/comments/23978.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/davide_mauri/commentrss.aspx?PostID=23978</wfw:commentRss><description>&lt;p&gt;One of the main steps in the process we internally use to develop a BI solution is the implementation of Unit Test of you BI Data.&lt;/p&gt;  &lt;p&gt;As you may already know, I’ve create a simple (for now) tool that leverages NUnit to allow us to quickly create Unit Testing without having to resort to use Visual Studio Database Professional:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://queryunit.codeplex.com/" href="http://queryunit.codeplex.com/"&gt;http://queryunit.codeplex.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Once you have a tool like this one, you can start also to make sure that your BI solution (DWH and CUBE) is not only structurally sound (I mean, the cube or the report gets processed correctly), but you can also check that the &lt;em&gt;logical integrity of your business rules is enforced&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;For example let’s say that the customer tell you that they will never create an invoice for a specific product-line in 2010 since that product-line is dismissed and will never be sold again. Ok we know that this &lt;em&gt;in theory&lt;/em&gt; is true, but a lot of this business rule effectiveness depends on the fact the people does not do a mistake while inserting new orders/invoices and the ERP used implements a check for this business logic. Unfortunately these last two hypotesis are not always true, so you may find yourself really having some invoices for a product line that doesn’t exists anymore.&lt;/p&gt;  &lt;p&gt;Maybe this kind of situation in future will be solved using Master Data Management but, meanwhile, how you can give and idea of the data quality to your customers? How can you check that logical integrity of the analytical data you produce is exactly what you expect?&lt;/p&gt;  &lt;p&gt;Well, Unit Testing of a DWH or a CUBE can be a solution.&lt;/p&gt;  &lt;p&gt;Once you have defined your test suite, by writing SQL and MDX queries that checks that your data is what you expect to be, if you use NUnit (and QueryUnit does), you can then use a tool like &lt;a href="http://nunit2report.sourceforge.net/" target="_blank"&gt;NUnit2Report&lt;/a&gt; to create a nice HTML report that can be shipped via email to give information of data quality:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/davide_mauri/UnitTesting_1E3B08A7.png" target="_blank"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="UnitTesting" border="0" alt="UnitTesting" src="http://sqlblog.com/blogs/davide_mauri/UnitTesting_thumb_6DC48430.png" width="244" height="123" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In addition to that, since NUnit produces an XML file as a result, you can also import it into a SQL Server Database and then monitor the quality of data over time.&lt;/p&gt;  &lt;p&gt;I’ll be speaking about this approach (and more in general about how to “engineer” a BI solution) at the next European SQL PASS&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Adaptive BI Best Practices     &lt;br /&gt;&lt;/strong&gt;&lt;a title="http://www.sqlpass.org/summit/eu2010/Agenda/ProgramSessions/AdaptiveBIBestPratices.aspx" href="http://www.sqlpass.org/summit/eu2010/Agenda/ProgramSessions/AdaptiveBIBestPratices.aspx"&gt;http://www.sqlpass.org/summit/eu2010/Agenda/ProgramSessions/AdaptiveBIBestPratices.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I’ll enjoy discussing with you all about this, so see you there!&lt;/p&gt;  &lt;p&gt;And remember: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“if ain't tested it's broken!”&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt; (Sorry I don’t remember how said that in first place :-))&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=23978" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Unit+Testing/default.aspx">Unit Testing</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Agile/default.aspx">Agile</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Business+Intelligence/default.aspx">Business Intelligence</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/QueryUnit/default.aspx">QueryUnit</category></item><item><title>QueryUnit POC v.0.0.0.6</title><link>http://sqlblog.com/blogs/davide_mauri/archive/2009/10/11/queryunit-poc-v-0-0-0-6.aspx</link><pubDate>Sun, 11 Oct 2009 09:02:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:17545</guid><dc:creator>Davide Mauri</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/davide_mauri/comments/17545.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/davide_mauri/commentrss.aspx?PostID=17545</wfw:commentRss><description>&lt;P&gt;Yesterday I released a new version of &lt;A href="http://www.codeplex.com/queryunit" target=_blank&gt;QueryUnit&lt;/A&gt;, a tool I've created to easily perform unit testing on SQL Server and Analysis Services databases.&lt;/P&gt;
&lt;P&gt;The main feature of this new version is the ability to automatically launch the NUnit GUI so that it’s even simpler to do unit testing.&lt;/P&gt;
&lt;P&gt;You can download it here:&lt;/P&gt;
&lt;P&gt;&lt;A title=http://queryunit.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=34250 href="http://queryunit.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=34250"&gt;http://queryunit.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=34250&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;I’ve also updated the little help page:&lt;/P&gt;
&lt;P&gt;&lt;A title=http://queryunit.codeplex.com/Wiki/View.aspx?title=How%20to%20use%20this%20Proof-Of-Concept href="http://queryunit.codeplex.com/Wiki/View.aspx?title=How%20to%20use%20this%20Proof-Of-Concept"&gt;http://queryunit.codeplex.com/Wiki/View.aspx?title=How%20to%20use%20this%20Proof-Of-Concept&lt;/A&gt;&lt;/P&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=17545" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Unit+Testing/default.aspx">Unit Testing</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Agile/default.aspx">Agile</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/QueryUnit/default.aspx">QueryUnit</category></item><item><title>SET IDENTITY_INSERT little bug(?)</title><link>http://sqlblog.com/blogs/davide_mauri/archive/2009/09/30/set-identity-insert-little-bug.aspx</link><pubDate>Wed, 30 Sep 2009 05:52:22 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:17083</guid><dc:creator>Davide Mauri</dc:creator><slash:comments>5</slash:comments><comments>http://sqlblog.com/blogs/davide_mauri/comments/17083.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/davide_mauri/commentrss.aspx?PostID=17083</wfw:commentRss><description>&lt;p&gt;While I was working on a package to incrementally load a dimension in the DWH I’m developing for a customer, I stumbled upon a tricky little bug (I think, I still have to have a response from MS) that had – and will have – a little impact on how I create my packages.&lt;/p&gt;  &lt;p&gt;I’ve found that, when working on an &lt;em&gt;empty&lt;/em&gt; table that has an &lt;em&gt;identity&lt;/em&gt; column, if you insert a value forcing the &lt;em&gt;identity&lt;/em&gt; value, the next time SQL Server will generate the identity value, it will generate it missing one number. So, for example, you’ll have&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="1"&gt;     &lt;tr&gt;       &lt;td&gt;0&lt;/td&gt;        &lt;td&gt;(Forced Identity Value)&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;2&lt;/td&gt;        &lt;td&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;3&lt;/td&gt;        &lt;td&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;instead of having the correct sequence&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2"&gt;     &lt;tr&gt;       &lt;td&gt;0&lt;/td&gt;        &lt;td&gt;(Forced Identity Value)&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;1&lt;/td&gt;        &lt;td&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;2&lt;/td&gt;        &lt;td&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;Not a huge problem as you can see, but I’d like to see it fixed, since can cause little troubles if your forgot about it and you expect to have predictable &lt;em&gt;identity&lt;/em&gt; values. I know that identity values are usually not 100% predictable, but I find them useful to speed-up SSIS package development for loading dimensions tables while keeping package complexity low. Since I apply &lt;a href="http://agilemanifesto.org/principles.html"&gt;Agile Principles&lt;/a&gt; to BI, simplicity is fundamental, since it allows me to change package quickly, easily embracing changes that comes from refactoring or from customer new needs. &lt;/p&gt;  &lt;p&gt;You can find the connect item to vote here:&lt;/p&gt;  &lt;p&gt;&lt;a title="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=492452" href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=492452"&gt;https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=492452&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=17083" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/SSIS/default.aspx">SSIS</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Integration+Services/default.aspx">Integration Services</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Agile/default.aspx">Agile</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Business+Intelligence/default.aspx">Business Intelligence</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/T-SQL/default.aspx">T-SQL</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>QueryUnit Binaries Released</title><link>http://sqlblog.com/blogs/davide_mauri/archive/2009/07/31/queryunit-binaries-released.aspx</link><pubDate>Fri, 31 Jul 2009 15:16:40 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:15655</guid><dc:creator>Davide Mauri</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/davide_mauri/comments/15655.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/davide_mauri/commentrss.aspx?PostID=15655</wfw:commentRss><description>&lt;p&gt;Due to several requests I’ve also released the binaries of QueryUnit:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://queryunit.codeplex.com/" href="http://queryunit.codeplex.com/"&gt;http://queryunit.codeplex.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=15655" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Unit+Testing/default.aspx">Unit Testing</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Agile/default.aspx">Agile</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/QueryUnit/default.aspx">QueryUnit</category></item><item><title>Agile BI Development: QueryUnit is born!</title><link>http://sqlblog.com/blogs/davide_mauri/archive/2009/07/27/agile-bi-development-queryunit-is-born.aspx</link><pubDate>Mon, 27 Jul 2009 16:29:39 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:15530</guid><dc:creator>Davide Mauri</dc:creator><slash:comments>6</slash:comments><comments>http://sqlblog.com/blogs/davide_mauri/comments/15530.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/davide_mauri/commentrss.aspx?PostID=15530</wfw:commentRss><description>&lt;p&gt;Having a developer background I’m used to work trying to apply an Agile approach to projects. In these last years I focused my work primary on BI projects, and so I tried to apply an Agile approach also to them, since I really believe that Agile is the path to follow.&lt;/p&gt;  &lt;p&gt;While Agile methods in the classic Object-Oriented field are quite widespread nowadays, in the BI field they are basically totally unknown to masses (at least this is my experience). Of course this means also that there is a total lack of tools and instruments to properly adopt Agile in your approach.&lt;/p&gt;  &lt;p&gt;Unit-Testing is surely something that is absolutely necessary if you want or need to refactor a solution. Since now, to unit-test staging databases, datawarehouses and cubes was a pain. I needed a tool to automate everything. I searched on the web but I found nothing I really liked. So I started to wrote something by myself.&lt;/p&gt;  &lt;p&gt;The first release is more a proof of concept that anything else, but I’ve started to use it in current BI project I’m working one with a lot of satisfaction. Now each time I change something in DWH or Cube I can automatically tests hundreds of queries. If all lights are green I can ask the customer to test the new implementation being sure that all existing reports, cubes, queries and so no will still be working perfectly. Otherwise I have some more work to do [:)].&lt;/p&gt;  &lt;p&gt;Here’s a&amp;#160; sample screenshot:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/davide_mauri/clip_image001_74122C7B.png" target="_blank"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image001" border="0" alt="clip_image001" src="http://sqlblog.com/blogs/davide_mauri/clip_image001_thumb_23809B48.png" width="240" height="155" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As you can see I’m using NUnit as Unit-Testing framework. It will allow to test SQL and MDX queries stored into an XML file, so that no .NET coding is required.&lt;/p&gt;  &lt;p&gt;I’m going to release this first release ASAP, hope you’ll enjoy it as much as I am doing, and that you start to embrace Agile also in the DB field, if you’re not already with it. :)&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=15530" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Unit+Testing/default.aspx">Unit Testing</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Agile/default.aspx">Agile</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/Business+Intelligence/default.aspx">Business Intelligence</category><category domain="http://sqlblog.com/blogs/davide_mauri/archive/tags/QueryUnit/default.aspx">QueryUnit</category></item></channel></rss>