World 2013 - Pushing MicroStrategy to the Limit, The Hacker Way

6,047 views
5,876 views

Published on

This presentation was delivered jointly with two colleagues. The original slides have been stripped down and blog links have been added where videos used to be.

1 Comment
6 Likes
Statistics
Notes
  • http://dbmanagement.info/Tutorials/Microstrategy.htm
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
6,047
On SlideShare
0
From Embeds
0
Number of Embeds
276
Actions
Shares
0
Downloads
0
Comments
1
Likes
6
Embeds 0
No embeds

No notes for slide
  • We could create another extension of the attribute and ad it to the underling cubes. I like the date format the way it was…our external web app didn.’t
  • World 2013 - Pushing MicroStrategy to the Limit, The Hacker Way

    1. 1. Pushing MicroStrategy to the LimitThe Hacker WayBryan Brandow Ashish Shah Jeremy Clover facebook.com/MicroStrategyHacks
    2. 2. This presentation has been modified from the formit was originally delivered. Facebook branding andstats have been removed after the titleslide, videos have been removed and additionallinks and information have been added.
    3. 3. Bryan‟s Section Bryan Brandow
    4. 4. it‟s all about theuser experience
    5. 5. making dashboards more engaging
    6. 6. HTML ContainersA door into the code• Allows you to add HTML code snippets• Place them anywhere on the dashboard• Can be used as iFrames to load external content• Can run JavaScript…
    7. 7. Video Removed. For more information, check out this blog post. http://www.bryanbrandow.com/20 12/09/create-graph-popups-with- javascript.html
    8. 8. JavaScript PopupsAdvantages over Info Windows • Dashboard loads faster • Called from anywhere • No parameter limit • Reposition window • Open multiple • Single popup serves the entire dashboard
    9. 9. JavaScript PopupsAdd the JavaScript<a style="cursor:pointer"onclick="window.open(<microstrategy url>, ,height=435,width=710);">
    10. 10. Answering PromptsAppend macros to the end of the URL• &elementsPromptAnswers=AttributeGUID;AttributeGUID:Value <BaseURL> &elementsPromptAnswers=8D679D4B11D3E4981000E787EC6DE8A4; 8D679D4B11D3E4981000E787EC6DE8A4:Central; 8D679D4B11D3E4981000E787EC6DE8A4:South• &valuePromptAnswers=Value <BaseURL> &valuePromptAnswers=Central^South
    11. 11. Hiding Page SectionsIntegrated look and feel• &hiddenSections=
    12. 12. Video Removed. For more information, check out this blog post. http://www.bryanbrandow.com/20 12/10/hideshow-sections-on- document.html
    13. 13. Collapsible SectionsAdd the JavaScript<img id=moreAppleonclick="javascript:if(getElementById(K8).style.height==0px) { getElementById(K8).style.height=300px; getElementById(moreApple).src=../images/minus.gif;}else { getElementById(K8).style.height=0px; getElementById(moreApple).src=../images/plus.gif;};"src=../images/plus.gifstyle="cursor:pointer"width=12>
    14. 14. Collapsible SectionsRetrieve the IDs• Execute your Dashboard and use Inspect Element (via Chrome)• Section ID = K8
    15. 15. Video Removed. For more information, check out this blog post. http://www.bryanbrandow.com/20 13/01/collapsible-sections-with- jquery.html
    16. 16. jQueryMaking dreams come trueAdd this to the beginning of the HTML Container:<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
    17. 17. jQuery Collapsible SectionsMore powerful JavaScript$(document).ready(function() { $(#K8).hide();});$(#moreApple).click(function () { if ($(#K8).is(":hidden")) { $(#K8).slideDown("slow"); $(#moreApple).attr(src, ../images/minus.gif);} else { $(#K8).slideUp("slow"); $(‟#moreApple).attr(„src‟, ../images/plus.gif‟);}});
    18. 18. Jeremy‟s Section Jeremy Clover
    19. 19. frictionsucks
    20. 20. understanding the HTML structurefirebug it
    21. 21. dynamic sectionsreuse and recycle based on structureHTML Containers• Define, Find, Capture, Change <div id=“k50” pber=„AttributeVal‟> <span>Metric Value</span> </div>• Let the document logic drive the data• Approx. 50 lines (currently) of Javascript Code will be posted directly after
    22. 22. is it perfect? nope
    23. 23. does it work? yep
    24. 24. full control over styleformat anything anywhereCSS and jQuery• Move panels outside of div sections • Remove block overflow hidden • Z-index adjustments • Transparency on the fly• Extensive fading options• Adjust “tooltip” formatting
    25. 25. date reformattingbecause we can
    26. 26. n00bsmoving fast and breaking things We‟re New at This Represents 2 Months of Work
    27. 27. Ashish‟s Section Ashish Shah
    28. 28. it‟s all about theuser experience
    29. 29. making datamore accessible
    30. 30. Reducing clicks to access data…Understanding the pain-points of end-usersThe Challenges…• Sharing a link the size of a paragraph in not very appealing• Too many clicks to access daily reports causes friction• Report links bookmarked by users can get outdated quickly• Not sure how current the data is!The Solution…• Quick Links• Data Freshness Time-Stamps
    31. 31. Quick Links
    32. 32. Data Freshness Timestamp
    33. 33. Quick Links & Data Freshness TimestampsThe HighlightsHighlights:• Thin jdbc connection to the database• Determines the active I-Server at runtime• Deployed as a plugin – built in v8.1.2 and never touched since• Crowd-sourced. Very easy to maintain and audit• Easy integration with ETL scripting and internal pages• Code extended to show highlights/announcements and communicate outages!
    34. 34. it‟s all about theuser experience
    35. 35. making data moreopen and connected
    36. 36. Revamp User ExperienceOne stop shop for accessing dataThe Challenges...• How to reduce friction?• How to enable browsing?• How to enable discovery?• How to enable collaboration?The Solution…• Data Portal
    37. 37. Video Removed. No further information available at this time.
    38. 38. Data Portal Highlights• Crowd sourced• Reporting technology agnostic• Built on FB LAMP stack• Internal identity management• It‟s all about the UEX!
    39. 39. Data PortalExample URLs of Mobile DashboardInstead of:https://<web_server_name>/MicroStrategy/servlet/mstrWeb?Server=<i_server_name>&Project=<project_name>&port=<portnumber>&evt=2048001&src=mstrWeb.2048001&visMode=0&documentID=29A51324451BE8397F1A14A79AB1AE1A&currentViewMedia=1&<authentication tokens>This: intern/data/portal/mobileOr just: dp mobile

    ×