Your SlideShare is downloading. ×
Ruby conf'11
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Ruby conf'11

3,350
views

Published on

Published in: Technology, Education

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,350
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • \n
  • Next slide --> must be wondering why I have put emphasis on the word Enterprise\n
  • Next slide --> ruby in enterprise\nBefore we dive deep into the session, let me introduce the penetration of Ruby in the Enterprise.\nWe have been doing Ruby work for more than 4 years now.\n\n
  • Next Slide --> So, coming back. The rest of the session would be focussed on our journey building an Analytics application for healthcare system and how we used Ruby to solve this problem.\n
  • Next Slide --> So, coming back. The rest of the session would be focussed on our journey building an Analytics application for healthcare system and how we used Ruby to solve this problem.\n
  • Next Slide --> So, coming back. The rest of the session would be focussed on our journey building an Analytics application for healthcare system and how we used Ruby to solve this problem.\n
  • Next Slide --> So, coming back. The rest of the session would be focussed on our journey building an Analytics application for healthcare system and how we used Ruby to solve this problem.\n
  • Next Slide --> So, coming back. The rest of the session would be focussed on our journey building an Analytics application for healthcare system and how we used Ruby to solve this problem.\n
  • Next Slide --> So, coming back. The rest of the session would be focussed on our journey building an Analytics application for healthcare system and how we used Ruby to solve this problem.\n
  • Next Slide --> So, coming back. The rest of the session would be focussed on our journey building an Analytics application for healthcare system and how we used Ruby to solve this problem.\n
  • Next Slide --> So, coming back. The rest of the session would be focussed on our journey building an Analytics application for healthcare system and how we used Ruby to solve this problem.\n
  • Next Slide --> So, coming back. The rest of the session would be focussed on our journey building an Analytics application for healthcare system and how we used Ruby to solve this problem.\n
  • Next Slide --> So, coming back. The rest of the session would be focussed on our journey building an Analytics application for healthcare system and how we used Ruby to solve this problem.\n
  • Next Slide --> So, coming back. The rest of the session would be focussed on our journey building an Analytics application for healthcare system and how we used Ruby to solve this problem.\n
  • Next Slide --> So, coming back. The rest of the session would be focussed on our journey building an Analytics application for healthcare system and how we used Ruby to solve this problem.\n
  • Next Slide --> So, coming back. The rest of the session would be focussed on our journey building an Analytics application for healthcare system and how we used Ruby to solve this problem.\n
  • Next Slide --> So, coming back. The rest of the session would be focussed on our journey building an Analytics application for healthcare system and how we used Ruby to solve this problem.\n
  • Next Slide --> We had few design philosophies. The first one is simplicity\n
  • Next Slide --> We had few design philosophies. The first one is simplicity\n
  • Next Slide --> We had few design philosophies. The first one is simplicity\n
  • Next --> portability\n
  • Next --> security\n
  • Next --> consistency\n\n
  • The consistency in interface design is very important. For analytics appln, there are other irregularities which has to be taken care:\n     - Consistent unit of data\n     - Data format\n     - Abbreviations should have clear meaning\n\nNext --> scalability\n
  • Next --> multi-dimensional data\n
  • \n
  • \n
  • \n
  • Next slide --> Lets me share how we built the data platform.\n
  • 3 step process to build the platform\nNext --> scalability\n
  • - Massaging, cleaning and aggregating raw data from various sources which are parked on raw staging tables.\n\n
  • - Build Kimberley Style Dimensional Data Warehouse\n\n
  • - Build application specific tables and olap cubes which were consumes for analytics\n- tables were flattened materialized views\n- cubes for analytics in the appln\n- due to security we had to make sure data is scedure which meant we have to segregate the aggregated and patient level data\n- in the upcoming slide I will show how data flows from source to application tier\nNext --> data mapping\n
  • \n
  • - safe haven for data\nLinking -- Sets of data from which the identifiable data has been separated and a ‘key’ added so that the data can be re-connected with its identifiers\nPseudonymisation -- replacing the patient identifiable components with pseudonyms so data processing can happen\n\n
  • \n
  • \n
  • Let us move on to something more interesting. Solving the problem building interactive charts using this dimensional data.\nNext --> Chart Types\n
  • \n
  • The most popular data visualization JS libraries in this space are: highcharts, jqplot, graphael, infovis, protoviz, google charts, timeplot etc.\n\nThe most important criteria for selecting any library was its portability across multiple platforms and browsers. We narrowed down on highcharts which satisfies all the kind of charts that our appln demands. We also used Inforviz's Spacetree to build organization hierarchical chart.\n\nThe kind of data visualization requirement we had required us to extend the libraries.\nThe first in the list is Org chart which is an extension of Spacetree api of Infovis\n\n
  • The most popular data visualization JS libraries in this space are: highcharts, jqplot, graphael, infovis, protoviz, google charts, timeplot etc.\n\nThe most important criteria for selecting any library was its portability across multiple platforms and browsers. We narrowed down on highcharts which satisfies all the kind of charts that our appln demands. We also used Inforviz's Spacetree to build organization hierarchical chart.\n\nThe kind of data visualization requirement we had required us to extend the libraries.\nThe first in the list is Org chart which is an extension of Spacetree api of Infovis\n\n
  • The most popular data visualization JS libraries in this space are: highcharts, jqplot, graphael, infovis, protoviz, google charts, timeplot etc.\n\nThe most important criteria for selecting any library was its portability across multiple platforms and browsers. We narrowed down on highcharts which satisfies all the kind of charts that our appln demands. We also used Inforviz's Spacetree to build organization hierarchical chart.\n\nThe kind of data visualization requirement we had required us to extend the libraries.\nThe first in the list is Org chart which is an extension of Spacetree api of Infovis\n\n
  • The most popular data visualization JS libraries in this space are: highcharts, jqplot, graphael, infovis, protoviz, google charts, timeplot etc.\n\nThe most important criteria for selecting any library was its portability across multiple platforms and browsers. We narrowed down on highcharts which satisfies all the kind of charts that our appln demands. We also used Inforviz's Spacetree to build organization hierarchical chart.\n\nThe kind of data visualization requirement we had required us to extend the libraries.\nThe first in the list is Org chart which is an extension of Spacetree api of Infovis\n\n
  • The most popular data visualization JS libraries in this space are: highcharts, jqplot, graphael, infovis, protoviz, google charts, timeplot etc.\n\nThe most important criteria for selecting any library was its portability across multiple platforms and browsers. We narrowed down on highcharts which satisfies all the kind of charts that our appln demands. We also used Inforviz's Spacetree to build organization hierarchical chart.\n\nThe kind of data visualization requirement we had required us to extend the libraries.\nThe first in the list is Org chart which is an extension of Spacetree api of Infovis\n\n
  • \n
  • \n
  • Next --> Configurable charts\nThe business problem was to simplify the chart creation process. It should be possible to do a new custom chart with arbitrary dimensions (given an existing cube / table of date in the DW) and add it to the app with a few hours work.\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • So, few hours of chart configuration by power users would enable data visualization in different kind of chart.\n\nThe only problem left here to solve was communication between ruby and OLAP cubes in MS SQL Server AS.\n\n
  • SQL Server Analysis Servies exposes XMLA interface to communicate to OLAP Cubes.\nFor consuming cube data from SQL Server Analysis Services into our ruby application we had 2 choices. \n
  • Use existing libraries like olap4j which sits as a service between our app and Analysis Services. This would have meant, we would have bite the bullet of porting the app to JRuby \n
  • Build the ruby xmla interface ourselves, kind of olap4r\n\nNext slide --> Some principles we kept in mind while designing the XMLA interface in ruby\n
  • - the library should output data in JSON format for the charting library to consume\n- It should be agnostic to XMLA interface\n- Data security because cubes had dimensional data\n- MDX is pretty complex language. Stay away from becoming mdx validation.  \n\nNext Slide --> In the following slides we would see some code samples explaining the communication between AS and Ruby.\n
  • - the library should output data in JSON format for the charting library to consume\n- It should be agnostic to XMLA interface\n- Data security because cubes had dimensional data\n- MDX is pretty complex language. Stay away from becoming mdx validation.  \n\nNext Slide --> In the following slides we would see some code samples explaining the communication between AS and Ruby.\n
  • - the library should output data in JSON format for the charting library to consume\n- It should be agnostic to XMLA interface\n- Data security because cubes had dimensional data\n- MDX is pretty complex language. Stay away from becoming mdx validation.  \n\nNext Slide --> In the following slides we would see some code samples explaining the communication between AS and Ruby.\n
  • \n
  • - discover method\n- request type (mdsschema_cubes)\n
  • - discover method\n- request type (mdsschema_cubes)\n
  • - discover method\n- request type (mdsschema_cubes)\n
  • \n
  • \n
  • \n
  • \n
  • Keep in mind Pareto Principle - 80/20. Pareto Principle in the context of UI basically says 20% of functionality is used 80% of the time.\n
  • Keep in mind Pareto Principle - 80/20. Pareto Principle in the context of UI basically says 20% of functionality is used 80% of the time.\n
  • Keep in mind Pareto Principle - 80/20. Pareto Principle in the context of UI basically says 20% of functionality is used 80% of the time.\n
  • Keep in mind Pareto Principle - 80/20. Pareto Principle in the context of UI basically says 20% of functionality is used 80% of the time.\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Transcript

    • 1. Big DataENTERPRISEY Analytics and RUBY 1 | RUBY CONF 2011 | Sept-29 | Public
    • 2. Big DataENTERPRISEY Analytics and RUBY 2 | RUBY CONF 2011 | Sept-29 | Public
    • 3. 3 | RUBY CONF 2011 | Sept-29 | Public
    • 4. Ruby in The Enterprise 4 | RUBY CONF 2011 | Sept-29 | Public
    • 5. Ruby in The Enterprise 4 | RUBY CONF 2011 | Sept-29 | Public
    • 6. Ruby in The Enterprise 4 | RUBY CONF 2011 | Sept-29 | Public
    • 7. Ruby in The Enterprise 4 | RUBY CONF 2011 | Sept-29 | Public
    • 8. Ruby in The Enterprise 4 | RUBY CONF 2011 | Sept-29 | Public
    • 9. Ruby in The Enterprise 4 | RUBY CONF 2011 | Sept-29 | Public
    • 10. Ruby in The Enterprise 4 | RUBY CONF 2011 | Sept-29 | Public
    • 11. Ruby in The EnterpriseDISTRIBUTE 4 | RUBY CONF 2011 | Sept-29 | Public
    • 12. Ruby in The Enterprise DISTRIBUTEINTERNAL GEM SERVER 4 | RUBY CONF 2011 | Sept-29 | Public
    • 13. Ruby in The Enterprise DISTRIBUTEINTERNAL GEM SERVER 4 | RUBY CONF 2011 | Sept-29 | Public
    • 14. Ruby in The Enterprise DISTRIBUTEINTERNAL GEM SERVER AUTOMATED TESTING 4 | RUBY CONF 2011 | Sept-29 | Public
    • 15. Ruby in The Enterprise DISTRIBUTEINTERNAL GEM SERVER AUTOMATED TESTING 4 | RUBY CONF 2011 | Sept-29 | Public
    • 16. Ruby in The Enterprise DISTRIBUTEINTERNAL GEM SERVER AUTOMATED TESTING 4 | RUBY CONF 2011 | Sept-29 | Public
    • 17. Ruby in The Enterprise DISTRIBUTEINTERNAL GEM SERVER AUTOMATED TESTING 4 | RUBY CONF 2011 | Sept-29 | Public
    • 18. Ruby in The Enterprise DISTRIBUTEINTERNAL GEM SERVER AUTOMATED TESTING 4 | RUBY CONF 2011 | Sept-29 | Public
    • 19. 5 | RUBY CONF 2011 | Sept-29 | Public
    • 20. ANALYTICS tool for Healthcare System 5 | RUBY CONF 2011 | Sept-29 | Public
    • 21. Design Philosophy I 6 | RUBY CONF 2011 | Sept-29 | Public
    • 22. Design Philosophy I 6 | RUBY CONF 2011 | Sept-29 | Public
    • 23. Design Philosophy II 7 | RUBY CONF 2011 | Sept-29 | Public
    • 24. Design Philosophy III 8 | RUBY CONF 2011 | Sept-29 | Public
    • 25. Design Philosophy IV 9 | RUBY CONF 2011 | Sept-29 | Public
    • 26. Design Philosophy V 10 | RUBY CONF 2011 | Sept-29 | Public
    • 27. Multi-Dimensional Hierarchical Data | RUBY CONF 2011 | Sept-29 | Public
    • 28. Open Source 12 | RUBY CONF 2011 | Sept-29 | Public
    • 29. ENTERPRISE 13 | RUBY CONF 2011 | Sept-29 | Public
    • 30. ENTERPRISE 14 | RUBY CONF 2011 | Sept-29 | Public
    • 31. Data Architecture 15 | RUBY CONF 2011 | Sept-29 | Public
    • 32. Data Architecture - Step I Data Processing SUS and other Data Sets 16 | RUBY CONF 2011 | Sept-29 | Public
    • 33. Data Architecture - Step II “Kimberly Style” Dimensional Data Warehouse 17 | RUBY CONF 2011 | Sept-29 | Public
    • 34. Data Architecture - Step II “Kimberly Style” Dimensional Data Warehouse 17 | RUBY CONF 2011 | Sept-29 | Public
    • 35. Data Architecture - Step IIIApplication Specific Data Marts 18 | RUBY CONF 2011 | Sept-29 | Public
    • 36. Data Architecture - Step IIIApplication Specific Data Marts 18 | RUBY CONF 2011 | Sept-29 | Public
    • 37. DATA FLOW MAPPING 19 | RUBY CONF 2011 | Sept-29 | Public
    • 38. DATA FLOW MAPPING 20 | RUBY CONF 2011 | Sept-29 | Public
    • 39. DATA FLOW MAPPING 21 | RUBY CONF 2011 | Sept-29 | Public
    • 40. DATA FLOW MAPPING 22 | RUBY CONF 2011 | Sept-29 | Public
    • 41. DATA FLOW MAPPING 23 | RUBY CONF 2011 | Sept-29 | Public
    • 42. Chart Types 24 | RUBY CONF 2011 | Sept-29 | Public
    • 43. Chart Types 24 | RUBY CONF 2011 | Sept-29 | Public
    • 44. Charting Library 25 | RUBY CONF 2011 | Sept-29 | Public
    • 45. Charting Library• Flash, Silverlight etc are not the only option 25 | RUBY CONF 2011 | Sept-29 | Public
    • 46. Charting Library• Flash, Silverlight etc are not the only option• Web based standards for building high quality charts 25 | RUBY CONF 2011 | Sept-29 | Public
    • 47. Charting Library• Flash, Silverlight etc are not the only option• Web based standards for building high quality charts• Should work on multiple platforms including mobile/ipad 25 | RUBY CONF 2011 | Sept-29 | Public
    • 48. Charting Library• Flash, Silverlight etc are not the only option• Web based standards for building high quality charts• Should work on multiple platforms including mobile/ipad 25 | RUBY CONF 2011 | Sept-29 | Public
    • 49. Charting Library• Flash, Silverlight etc are not the only option• Web based standards for building high quality charts• Should work on multiple platforms including mobile/ipad 25 | RUBY CONF 2011 | Sept-29 | Public
    • 50. Extending Charting Libraries 26 | RUBY CONF 2011 | Sept-29 | Public
    • 51. Extending Charting LibrariesExtension of Infovis https://github.com/toamitkumar/org_chart 26 | RUBY CONF 2011 | Sept-29 | Public
    • 52. Extending Charting LibrariesExtension of HighCharts https://github.com/toamitkumar/waterfall-charts 27 | RUBY CONF 2011 | Sept-29 | Public
    • 53. Extending Charting Libraries Extension of HighChartshttps://github.com/toamitkumar/Stacked-Waterfall/tree/master/stacked-waterfall 28 | RUBY CONF 2011 | Sept-29 | Public
    • 54. Configurable Charts 29 | RUBY CONF 2011 | Sept-29 | Public
    • 55. Configurable Charts 30 | RUBY CONF 2011 | Sept-29 | Public
    • 56. Configurable Charts Chart Attributes 31 | RUBY CONF 2011 | Sept-29 | Public
    • 57. Configurable Charts Chart Attributes Dimension for x-axis 31 | RUBY CONF 2011 | Sept-29 | Public
    • 58. Configurable Charts Chart Attributes Dimension for x-axis Dimension for y-axis 31 | RUBY CONF 2011 | Sept-29 | Public
    • 59. Configurable Charts Chart Attributes Dimension for x-axis Dimension for y-axis Filters for x-axis 31 | RUBY CONF 2011 | Sept-29 | Public
    • 60. Configurable Charts Chart Attributes Dimension for x-axis Dimension for y-axis Filters for x-axis Filters for y-axis 31 | RUBY CONF 2011 | Sept-29 | Public
    • 61. Configurable Charts Chart Attributes Dimension for x-axis Dimension for y-axis Filters for x-axis Filters for y-axis Data on x-axis 31 | RUBY CONF 2011 | Sept-29 | Public
    • 62. Configurable Charts Chart Attributes Dimension for x-axis Dimension for y-axis Filters for x-axis Filters for y-axis Data on x-axis Data on y-axis 31 | RUBY CONF 2011 | Sept-29 | Public
    • 63. Configurable ChartsSQL or MDX 32 | RUBY CONF 2011 | Sept-29 | Public
    • 64. MSAS XMLA INTERFACE 33 | RUBY CONF 2011 | Sept-29 | Public
    • 65. MSAS XMLA INTERFACE 33 | RUBY CONF 2011 | Sept-29 | Public
    • 66. Ruby + OLAP CUBES 34 | RUBY CONF 2011 | Sept-29 | Public
    • 67. Ruby + OLAP CUBES 35 | RUBY CONF 2011 | Sept-29 | Public
    • 68. RUBY + SSAS XMLA Interface 36 | RUBY CONF 2011 | Sept-29 | Public
    • 69. RUBY + SSAS XMLA Interface• JSON output 36 | RUBY CONF 2011 | Sept-29 | Public
    • 70. RUBY + SSAS XMLA Interface• JSON output• Easy integration with Chart Definition Language 36 | RUBY CONF 2011 | Sept-29 | Public
    • 71. RUBY + SSAS XMLA Interface• JSON output• Easy integration with Chart Definition Language• No MDX validation 36 | RUBY CONF 2011 | Sept-29 | Public
    • 72. Listing Cubes 37 | RUBY CONF 2011 | Sept-29 | Public
    • 73. Listing Cubes 37 | RUBY CONF 2011 | Sept-29 | Public
    • 74. SOAP request : listing cubes Listing CUBES 38 | RUBY CONF 2011 | Sept-29 | Public
    • 75. SOAP request : listing cubes Listing CUBES 38 | RUBY CONF 2011 | Sept-29 | Public
    • 76. SOAP request : listing cubes Listing CUBES 38 | RUBY CONF 2011 | Sept-29 | Public
    • 77. SOAP request : listing cubes Listing CUBES 38 | RUBY CONF 2011 | Sept-29 | Public
    • 78. Execute MDX 39 | RUBY CONF 2011 | Sept-29 | Public
    • 79. Execute MDX 39 | RUBY CONF 2011 | Sept-29 | Public
    • 80. SOAP request: Execute MDX Execute MDX 40 | RUBY CONF 2011 | Sept-29 | Public
    • 81. SOAP request: Execute MDX Execute MDX 40 | RUBY CONF 2011 | Sept-29 | Public
    • 82. SOAP request: Execute MDX Execute MDX 40 | RUBY CONF 2011 | Sept-29 | Public
    • 83. asxmla4r 41 | RUBY CONF 2011 | Sept-29 | Public
    • 84. asxmla4r 41 | RUBY CONF 2011 | Sept-29 | Public
    • 85. Analytics and UX 42 | RUBY CONF 2011 | Sept-29 | Public
    • 86. Analytics and UX• Power v/s Normal users 42 | RUBY CONF 2011 | Sept-29 | Public
    • 87. Analytics and UX• Power v/s Normal users• Data focussed 42 | RUBY CONF 2011 | Sept-29 | Public
    • 88. Analytics and UX• Power v/s Normal users• Data focussed• Pareto Principle in context of UI: 20% of the functionality is used 80% of the time 42 | RUBY CONF 2011 | Sept-29 | Public
    • 89. Analytics and UX• Power v/s Normal users• Data focussed• Pareto Principle in context of UI: 20% of the functionality is used 80% of the time• Interface design 42 | RUBY CONF 2011 | Sept-29 | Public
    • 90. Build for ALL 43 | RUBY CONF 2011 | Sept-29 | Public
    • 91. Build for ALL 43 | RUBY CONF 2011 | Sept-29 | Public
    • 92. Build for ALL 43 | RUBY CONF 2011 | Sept-29 | Public
    • 93. Build for ALL 43 | RUBY CONF 2011 | Sept-29 | Public
    • 94. Build for ALL 43 | RUBY CONF 2011 | Sept-29 | Public
    • 95. Build for ALL 43 | RUBY CONF 2011 | Sept-29 | Public
    • 96. Build for ALL 43 | RUBY CONF 2011 | Sept-29 | Public
    • 97. Build for ALL 43 | RUBY CONF 2011 | Sept-29 | Public
    • 98. Build for ALLIE6, IE7, IE8, IE9, IE10 43 | RUBY CONF 2011 | Sept-29 | Public
    • 99. Amit KumarTATA Consultancy Services Limited | RUBY CONF 2011 | Sept-29 | Public
    • 100. Amit Kumar TATA Consultancy Services Limited• @toamit• github.com/toamitkumar• rubyizednrailified.blogspot.com | RUBY CONF 2011 | Sept-29 | Public
    • 101. THANKS!