ODTUG Aggregator ODTUG Blogs http://localhost:8080 Fri, 24 Mar 2017 09:58:01 +0000 http://aggrssgator.com/ Tips for Using Essbase in Data Visualization https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/ <p>Last Friday I wrote a <a href="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization/">blog</a> on how to connect Essbase and Essbase Cloud Service (EssCS) to Data Visualization (DV). I’ve decided to put together a couple tips to help you start using Essbase/EssCS as a data source in DV.</p> <p>Let’s start…</p> <p>If you followed the steps and have Essbase or EssCS as a DV data source, you might find yourself annoyed that the hierarchy names came in as Generations. Here is one of my examples from last week:</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image0011.png"><img data-attachment-id="1640" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image0011-3/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image0011.png" data-orig-size="381,530" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image0011" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image0011.png?w=216&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image0011.png?w=381" class="alignnone size-medium wp-image-1640" src="https://epmqueen.files.wordpress.com/2017/03/image0011.png?w=216&#038;h=300" alt="" width="216" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image0011.png?w=216&amp;h=300 216w, https://epmqueen.files.wordpress.com/2017/03/image0011.png?w=108&amp;h=150 108w, https://epmqueen.files.wordpress.com/2017/03/image0011.png 381w" sizes="(max-width: 216px) 100vw, 216px" /></a></p> <p>If you administer a cube, you might know what each generation refers to in the dimension. For example, “Gen2, Location” might be country, “Gen3, Location” might be state, and “Gen4, Location” might be city. However, if you are the end user, you might get confused with these details.</p> <p>Doesn’t this look easier to navigate?</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image027.jpg"><img data-attachment-id="1660" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image027-5/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image027.jpg" data-orig-size="184,279" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image027" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image027.jpg?w=198&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image027.jpg?w=198&#038;h=300" class="alignnone size-medium wp-image-1660" src="https://epmqueen.files.wordpress.com/2017/03/image027.jpg?w=198&#038;h=300" alt="" srcset="https://epmqueen.files.wordpress.com/2017/03/image027.jpg 184w, https://epmqueen.files.wordpress.com/2017/03/image027.jpg?w=99&amp;h=150 99w" sizes="(max-width: 184px) 100vw, 184px" /></a></p> <p>So, how can you give the generations a clearer definition of the hierarchy granularity? It’s actually pretty simple! I’ll show you how to do this in EssCS then in Essbase, but it’s really the logic, just different steps.</p> <p><strong>EssCS</strong></p> <p>There are two ways we can define generations for EssCS. You can choose which one you like best.</p> <p>The first way is to log into EssCS, choose your cube, and click “Settings”.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image003.png"><img data-attachment-id="1641" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image003-7/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image003.png" data-orig-size="1160,390" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image003" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image003.png?w=300&#038;h=101" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image003.png?w=840" class="alignnone size-medium wp-image-1641" src="https://epmqueen.files.wordpress.com/2017/03/image003.png?w=300&#038;h=101" alt="" width="300" height="101" srcset="https://epmqueen.files.wordpress.com/2017/03/image003.png?w=300&amp;h=101 300w, https://epmqueen.files.wordpress.com/2017/03/image003.png?w=600&amp;h=202 600w, https://epmqueen.files.wordpress.com/2017/03/image003.png?w=150&amp;h=50 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>In the “Dimensions” section, you will see the each dimension listed with details.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image004.png"><img data-attachment-id="1642" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image004-8/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image004.png" data-orig-size="1207,446" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image004" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image004.png?w=300&#038;h=111" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image004.png?w=840" class="alignnone size-medium wp-image-1642" src="https://epmqueen.files.wordpress.com/2017/03/image004.png?w=300&#038;h=111" alt="" width="300" height="111" srcset="https://epmqueen.files.wordpress.com/2017/03/image004.png?w=300&amp;h=111 300w, https://epmqueen.files.wordpress.com/2017/03/image004.png?w=600&amp;h=222 600w, https://epmqueen.files.wordpress.com/2017/03/image004.png?w=150&amp;h=55 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>For demo purposes, I’m going to update Years.</p> <p>Note that the generation names are “Gen1” and “Gen2”.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image005.png"><img data-attachment-id="1643" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image005-8/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image005.png" data-orig-size="793,242" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image005" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image005.png?w=300&#038;h=92" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image005.png?w=793" class="alignnone size-medium wp-image-1643" src="https://epmqueen.files.wordpress.com/2017/03/image005.png?w=300&#038;h=92" alt="" width="300" height="92" srcset="https://epmqueen.files.wordpress.com/2017/03/image005.png?w=300&amp;h=92 300w, https://epmqueen.files.wordpress.com/2017/03/image005.png?w=600&amp;h=184 600w, https://epmqueen.files.wordpress.com/2017/03/image005.png?w=150&amp;h=46 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Let’s update “Gen1” to be “All Years” and “Gen2” to be “Year”. This is done by clicking on the Name (“Gen1” or “Gen2”) and entering the name you would like to enter.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image006.png"><img data-attachment-id="1644" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image006-8/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image006.png" data-orig-size="795,251" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image006" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image006.png?w=300&#038;h=95" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image006.png?w=795" class="alignnone size-medium wp-image-1644" src="https://epmqueen.files.wordpress.com/2017/03/image006.png?w=300&#038;h=95" alt="" width="300" height="95" srcset="https://epmqueen.files.wordpress.com/2017/03/image006.png?w=300&amp;h=95 300w, https://epmqueen.files.wordpress.com/2017/03/image006.png?w=600&amp;h=190 600w, https://epmqueen.files.wordpress.com/2017/03/image006.png?w=150&amp;h=47 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Once I have finished naming my generations, I click “Save”.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image007.png"><img data-attachment-id="1645" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image007-6/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image007.png" data-orig-size="1905,288" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image007" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image007.png?w=300&#038;h=45" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image007.png?w=840" class="alignnone size-medium wp-image-1645" src="https://epmqueen.files.wordpress.com/2017/03/image007.png?w=300&#038;h=45" alt="" width="300" height="45" srcset="https://epmqueen.files.wordpress.com/2017/03/image007.png?w=300&amp;h=45 300w, https://epmqueen.files.wordpress.com/2017/03/image007.png?w=595&amp;h=90 595w, https://epmqueen.files.wordpress.com/2017/03/image007.png?w=150&amp;h=23 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Now, when I go into DV and connect to this cube, I have an updated data element name.</p> <p>Previous:</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image028.jpg"><img data-attachment-id="1661" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image028-6/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image028.jpg" data-orig-size="177,254" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image028" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image028.jpg?w=209&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image028.jpg?w=209&#038;h=300" class="alignnone size-medium wp-image-1661" src="https://epmqueen.files.wordpress.com/2017/03/image028.jpg?w=209&#038;h=300" alt="" srcset="https://epmqueen.files.wordpress.com/2017/03/image028.jpg 177w, https://epmqueen.files.wordpress.com/2017/03/image028.jpg?w=105&amp;h=150 105w" sizes="(max-width: 177px) 100vw, 177px" /></a></p> <p>Current:</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image029.jpg"><img data-attachment-id="1662" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image029-2/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image029.jpg" data-orig-size="183,251" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image029" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image029.jpg?w=219&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image029.jpg?w=219&#038;h=300" class="alignnone size-medium wp-image-1662" src="https://epmqueen.files.wordpress.com/2017/03/image029.jpg?w=219&#038;h=300" alt="" srcset="https://epmqueen.files.wordpress.com/2017/03/image029.jpg 183w, https://epmqueen.files.wordpress.com/2017/03/image029.jpg?w=109&amp;h=150 109w" sizes="(max-width: 183px) 100vw, 183px" /></a></p> <p>The second way to do this in EssCS is to use the Cube Designer workbook. On the “Cube.Generations” tab, enter the names of the generations for the dimensions you want updated.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image010.png"><img data-attachment-id="1646" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image010-7/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image010.png" data-orig-size="539,820" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image010" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image010.png?w=197&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image010.png?w=539" class="alignnone size-medium wp-image-1646" src="https://epmqueen.files.wordpress.com/2017/03/image010.png?w=197&#038;h=300" alt="" width="197" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image010.png?w=197&amp;h=300 197w, https://epmqueen.files.wordpress.com/2017/03/image010.png?w=394&amp;h=600 394w, https://epmqueen.files.wordpress.com/2017/03/image010.png?w=99&amp;h=150 99w" sizes="(max-width: 197px) 100vw, 197px" /></a></p> <p>From the Cube Designer ribbon, choose “Build Cube”.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image011.png"><img data-attachment-id="1647" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image011-8/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image011.png" data-orig-size="643,117" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image011" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image011.png?w=300&#038;h=55" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image011.png?w=643" class="alignnone size-medium wp-image-1647" src="https://epmqueen.files.wordpress.com/2017/03/image011.png?w=300&#038;h=55" alt="" width="300" height="55" srcset="https://epmqueen.files.wordpress.com/2017/03/image011.png?w=300&amp;h=55 300w, https://epmqueen.files.wordpress.com/2017/03/image011.png?w=600&amp;h=110 600w, https://epmqueen.files.wordpress.com/2017/03/image011.png?w=150&amp;h=27 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Choose to “Update Cube – Retain All Data” and click “Run”. You will likely not want to load the data sheets, but you can if you would like to.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image012.png"><img data-attachment-id="1648" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image012-7/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image012.png" data-orig-size="336,309" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image012" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image012.png?w=300&#038;h=276" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image012.png?w=336" class="alignnone size-medium wp-image-1648" src="https://epmqueen.files.wordpress.com/2017/03/image012.png?w=300&#038;h=276" alt="" width="300" height="276" srcset="https://epmqueen.files.wordpress.com/2017/03/image012.png?w=300&amp;h=276 300w, https://epmqueen.files.wordpress.com/2017/03/image012.png?w=150&amp;h=138 150w, https://epmqueen.files.wordpress.com/2017/03/image012.png 336w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Confirm that you want to update the listed cube.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image013.png"><img data-attachment-id="1649" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image013-8/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image013.png" data-orig-size="237,188" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image013" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image013.png?w=300&#038;h=238" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image013.png?w=300&#038;h=238" class="alignnone size-medium wp-image-1649" src="https://epmqueen.files.wordpress.com/2017/03/image013.png?w=300&#038;h=238" alt="" srcset="https://epmqueen.files.wordpress.com/2017/03/image013.png 237w, https://epmqueen.files.wordpress.com/2017/03/image013.png?w=150&amp;h=119 150w" sizes="(max-width: 237px) 100vw, 237px" /></a></p> <p>Choose Yes to see the job run.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image014.png"><img data-attachment-id="1650" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image014-8/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image014.png" data-orig-size="242,173" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image014" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image014.png?w=300&#038;h=214" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image014.png?w=300&#038;h=214" class="alignnone size-medium wp-image-1650" src="https://epmqueen.files.wordpress.com/2017/03/image014.png?w=300&#038;h=214" alt="" srcset="https://epmqueen.files.wordpress.com/2017/03/image014.png 242w, https://epmqueen.files.wordpress.com/2017/03/image014.png?w=150&amp;h=107 150w" sizes="(max-width: 242px) 100vw, 242px" /></a></p> <p>Once the job finishes, you should have generation names available in DV.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image030.jpg"><img data-attachment-id="1663" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image030-2/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image030.jpg" data-orig-size="227,474" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image030" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image030.jpg?w=144&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image030.jpg?w=227" class="alignnone size-medium wp-image-1663" src="https://epmqueen.files.wordpress.com/2017/03/image030.jpg?w=144&#038;h=300" alt="" width="144" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image030.jpg?w=144&amp;h=300 144w, https://epmqueen.files.wordpress.com/2017/03/image030.jpg?w=72&amp;h=150 72w, https://epmqueen.files.wordpress.com/2017/03/image030.jpg 227w" sizes="(max-width: 144px) 100vw, 144px" /></a></p> <p><strong>Essbase</strong></p> <p>If want to name the generations in Essbase, choose “Generations” from the right-click menu of the dimension you want to update:</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image016.png"><img data-attachment-id="1651" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image016-8/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image016.png" data-orig-size="327,560" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image016" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image016.png?w=175&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image016.png?w=327" class="alignnone size-medium wp-image-1651" src="https://epmqueen.files.wordpress.com/2017/03/image016.png?w=175&#038;h=300" alt="" width="175" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image016.png?w=175&amp;h=300 175w, https://epmqueen.files.wordpress.com/2017/03/image016.png?w=88&amp;h=150 88w, https://epmqueen.files.wordpress.com/2017/03/image016.png 327w" sizes="(max-width: 175px) 100vw, 175px" /></a></p> <p>Enter the names of the generations for that dimension and click “OK”.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image031.jpg"><img data-attachment-id="1664" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image031-2/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image031.jpg" data-orig-size="924,425" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image031" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image031.jpg?w=300&#038;h=138" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image031.jpg?w=840" class="alignnone size-medium wp-image-1664" src="https://epmqueen.files.wordpress.com/2017/03/image031.jpg?w=300&#038;h=138" alt="" width="300" height="138" srcset="https://epmqueen.files.wordpress.com/2017/03/image031.jpg?w=300&amp;h=138 300w, https://epmqueen.files.wordpress.com/2017/03/image031.jpg?w=600&amp;h=276 600w, https://epmqueen.files.wordpress.com/2017/03/image031.jpg?w=150&amp;h=69 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>When I go to DV, I see my generations updated for Department.</p> <p>Note: To prove I wasn’t pulling any trickery, this is to prove that my screenshot is from my OP Essbase cube, not my cloud Essbase cube. …The Years were not updated in the OP cube!</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image032.jpg"><img data-attachment-id="1665" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image032-2/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image032.jpg" data-orig-size="240,450" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image032" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image032.jpg?w=160&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image032.jpg?w=240" class="alignnone size-medium wp-image-1665" src="https://epmqueen.files.wordpress.com/2017/03/image032.jpg?w=160&#038;h=300" alt="" width="160" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image032.jpg?w=160&amp;h=300 160w, https://epmqueen.files.wordpress.com/2017/03/image032.jpg?w=80&amp;h=150 80w, https://epmqueen.files.wordpress.com/2017/03/image032.jpg 240w" sizes="(max-width: 160px) 100vw, 160px" /></a></p> <p>Now we can build more meaningful visualizations in DV!</p> <p><strong>Visualizations in DV</strong></p> <p>Unlike in Smart View or HFR, you are NOT required to specify a member from every dimension in DV. Using the below as an example, I built a Row Expander visualization that is very something that we would normally build in Smart View for comparison. To the right, I used a stacked bar graph using just a few data elements. I’ve modified the visualization to show the currency amounts for the whole of what the government paid towards employee’s Basic Benefit and Thrift Savings Plans (no, it’s not real data!).</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image0191.png"><img data-attachment-id="1652" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image0191-3/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image0191.png" data-orig-size="1920,1017" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image0191" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image0191.png?w=300&#038;h=159" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image0191.png?w=840" class="alignnone size-medium wp-image-1652" src="https://epmqueen.files.wordpress.com/2017/03/image0191.png?w=300&#038;h=159" alt="" width="300" height="159" srcset="https://epmqueen.files.wordpress.com/2017/03/image0191.png?w=300&amp;h=159 300w, https://epmqueen.files.wordpress.com/2017/03/image0191.png?w=600&amp;h=318 600w, https://epmqueen.files.wordpress.com/2017/03/image0191.png?w=150&amp;h=79 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Imagine being able to drill into data visually and NOT in Excel, having to move around columns, dimensions, etc. How neat is that? Let’s drill into FY2017’s Basic Benefit Plan. I right-click on the portion of data I want to go deeper into for analysis.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image0201.png"><img data-attachment-id="1653" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image0201-2/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image0201.png" data-orig-size="714,489" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image0201" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image0201.png?w=300&#038;h=205" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image0201.png?w=714" class="alignnone size-medium wp-image-1653" src="https://epmqueen.files.wordpress.com/2017/03/image0201.png?w=300&#038;h=205" alt="" width="300" height="205" srcset="https://epmqueen.files.wordpress.com/2017/03/image0201.png?w=300&amp;h=205 300w, https://epmqueen.files.wordpress.com/2017/03/image0201.png?w=600&amp;h=410 600w, https://epmqueen.files.wordpress.com/2017/03/image0201.png?w=150&amp;h=103 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>I can choose from any dimension.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image021.png"><img data-attachment-id="1654" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image021-6/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image021.png" data-orig-size="411,398" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image021" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image021.png?w=300&#038;h=291" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image021.png?w=411" class="alignnone size-medium wp-image-1654" src="https://epmqueen.files.wordpress.com/2017/03/image021.png?w=300&#038;h=291" alt="" width="300" height="291" srcset="https://epmqueen.files.wordpress.com/2017/03/image021.png?w=300&amp;h=291 300w, https://epmqueen.files.wordpress.com/2017/03/image021.png?w=150&amp;h=145 150w, https://epmqueen.files.wordpress.com/2017/03/image021.png 411w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Let’s choose by Job Function.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image022.png"><img data-attachment-id="1655" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image022-4/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image022.png" data-orig-size="418,411" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image022" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image022.png?w=300&#038;h=295" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image022.png?w=418" class="alignnone size-medium wp-image-1655" src="https://epmqueen.files.wordpress.com/2017/03/image022.png?w=300&#038;h=295" alt="" width="300" height="295" srcset="https://epmqueen.files.wordpress.com/2017/03/image022.png?w=300&amp;h=295 300w, https://epmqueen.files.wordpress.com/2017/03/image022.png?w=150&amp;h=147 150w, https://epmqueen.files.wordpress.com/2017/03/image022.png 418w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Notice that <em>both</em> visualizations drill to the Job Function level.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image0232.png"><img data-attachment-id="1656" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image0232/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image0232.png" data-orig-size="1632,941" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image0232" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image0232.png?w=300&#038;h=173" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image0232.png?w=840" class="alignnone size-medium wp-image-1656" src="https://epmqueen.files.wordpress.com/2017/03/image0232.png?w=300&#038;h=173" alt="" width="300" height="173" srcset="https://epmqueen.files.wordpress.com/2017/03/image0232.png?w=300&amp;h=173 300w, https://epmqueen.files.wordpress.com/2017/03/image0232.png?w=600&amp;h=346 600w, https://epmqueen.files.wordpress.com/2017/03/image0232.png?w=150&amp;h=86 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Let’s keep drilling into the one with the most contributions, GS0600, to the Group level.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image0241.png"><img data-attachment-id="1657" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image0241-2/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image0241.png" data-orig-size="1625,904" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image0241" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image0241.png?w=300&#038;h=167" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image0241.png?w=840" class="alignnone size-medium wp-image-1657" src="https://epmqueen.files.wordpress.com/2017/03/image0241.png?w=300&#038;h=167" alt="" width="300" height="167" srcset="https://epmqueen.files.wordpress.com/2017/03/image0241.png?w=300&amp;h=167 300w, https://epmqueen.files.wordpress.com/2017/03/image0241.png?w=600&amp;h=334 600w, https://epmqueen.files.wordpress.com/2017/03/image0241.png?w=150&amp;h=83 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>And, finally, to the Employee level for GS0688.</p> <p>We now see all the employees that are contributing towards the GS0688 numbers. I’ve highlighted the filters in the screenshot to show it is very easy to get back to the starting point by deleting (or even altering) the filters.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image0251.png"><img data-attachment-id="1658" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image0251/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image0251.png" data-orig-size="1625,903" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image0251" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image0251.png?w=300&#038;h=167" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image0251.png?w=840" class="alignnone size-medium wp-image-1658" src="https://epmqueen.files.wordpress.com/2017/03/image0251.png?w=300&#038;h=167" alt="" width="300" height="167" srcset="https://epmqueen.files.wordpress.com/2017/03/image0251.png?w=300&amp;h=167 300w, https://epmqueen.files.wordpress.com/2017/03/image0251.png?w=600&amp;h=334 600w, https://epmqueen.files.wordpress.com/2017/03/image0251.png?w=150&amp;h=83 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Since the Basic Benefit Plan values are 1% of the employee’s base pay if they have served at least 5 years for the government, I want to see the actual number of years, grade, and step of the employees.</p> <p>I’m going to alter the Row Expander visualization.</p> <p>The numbers make complete sense and I was able to see data next to a visualization that update with each other. Pretty cool, huh??</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image0262.png"><img data-attachment-id="1659" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image0262/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image0262.png" data-orig-size="1629,897" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image0262" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image0262.png?w=300&#038;h=165" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image0262.png?w=840" class="alignnone size-medium wp-image-1659" src="https://epmqueen.files.wordpress.com/2017/03/image0262.png?w=300&#038;h=165" alt="" width="300" height="165" srcset="https://epmqueen.files.wordpress.com/2017/03/image0262.png?w=300&amp;h=165 300w, https://epmqueen.files.wordpress.com/2017/03/image0262.png?w=600&amp;h=330 600w, https://epmqueen.files.wordpress.com/2017/03/image0262.png?w=150&amp;h=83 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Now, at this point, I really wanted to show how you can mashup data in DV, specifically using the Essbase data source. I had this great example of a spreadsheet that listed each employee’s job title:</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image0331.png"><img data-attachment-id="1666" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image0331/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image0331.png" data-orig-size="286,138" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image0331" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image0331.png?w=300&#038;h=145" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image0331.png?w=300&#038;h=145" class="alignnone size-medium wp-image-1666" src="https://epmqueen.files.wordpress.com/2017/03/image0331.png?w=300&#038;h=145" alt="" srcset="https://epmqueen.files.wordpress.com/2017/03/image0331.png 286w, https://epmqueen.files.wordpress.com/2017/03/image0331.png?w=150&amp;h=72 150w" sizes="(max-width: 286px) 100vw, 286px" /></a></p> <p>And I was going to join them together in a visualization to show how they can be presented as one. However, as I was trying, I was having trouble with joining the sources. Since the Essbase connection is still in beta, there are a few caveats. One of them I found in the latest documentation:</p> <p><img data-attachment-id="1667" data-permalink="https://realtrigeek.com/2017/03/23/tips-for-using-essbase-in-data-visualization/image0341-2/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image0341.png" data-orig-size="1006,27" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image0341" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image0341.png?w=300&#038;h=8" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image0341.png?w=840" class="alignnone size-medium wp-image-1667" src="https://epmqueen.files.wordpress.com/2017/03/image0341.png?w=300&#038;h=8" alt="" width="300" height="8" srcset="https://epmqueen.files.wordpress.com/2017/03/image0341.png?w=300&amp;h=8 300w, https://epmqueen.files.wordpress.com/2017/03/image0341.png?w=600&amp;h=16 600w, https://epmqueen.files.wordpress.com/2017/03/image0341.png?w=150&amp;h=4 150w" sizes="(max-width: 300px) 100vw, 300px" /></p> <p>Well, darn. I guess this post will have to be updated when the bugs are worked out!</p> <p>As you can see, you can modify the settings in Essbase to make DV very simple to use for Essbase analysis. As I build out my demo more, I try to show more reasons why Essbase and DV are perfect compliments!</p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/epmqueen.wordpress.com/1639/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/epmqueen.wordpress.com/1639/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=realtrigeek.com&#038;blog=70089387&#038;post=1639&#038;subd=epmqueen&#038;ref=&#038;feed=1" width="1" height="1" /> Sarah Craynon Zumbrum http://realtrigeek.com/?p=1639 Thu Mar 23 2017 15:40:28 GMT-0400 (EDT) BIAPPS on PAAS – Backup and Restore - Introduction (Part1) https://blogs.oracle.com/biapps/entry/biapps_on_paas_backup_and <p align="justify" class="MsoNormal" style="text-align: justify;"><font face="verdana,arial,helvetica,sans-serif" size="2">BI Applications (BIApps) is an integrated application involving multiple components. A backup of BIApps therefore would mean a backup of the integrated application and not just the datawarehouse or the database. </font></p> <p> <font face="verdana,arial,helvetica,sans-serif" size="2"><span style="font-size: 11pt; line-height: 115%;">High level architecture of BIAPPS on PAAS is shown below:</span></font></p> <p><img src="https://blogs.oracle.com/biapps/resource/bop_backup1_biappsarchitecture.png" style="max-width: 99%;" /> </p> <p><font face="verdana,arial,helvetica,sans-serif" size="2"> </font> </p> <p align="justify" style="text-align: justify;" class="MsoNormal"><font face="verdana,arial,helvetica,sans-serif" size="2">There are four different cloud service instances involved at a minimum when using BIAPPS on PAAS. Following table shows the components/software that are installed on each:</font></p><font face="verdana,arial,helvetica,sans-serif" size="2"> </font> <table border="1" cellspacing="0" cellpadding="0" style="border-collapse: collapse; border: medium none;" class="MsoTableGrid"> <tbody> <tr> <td width="205" valign="top" style="width: 153.9pt; border: 1pt solid windowtext; padding: 0in 5.4pt;"> <p style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;" class="MsoNormal"><font face="verdana,arial,helvetica,sans-serif" size="2">DBCS (Database Cloud Service)</font></p> </td> <td width="433" valign="top" style="width: 324.9pt; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; padding: 0in 5.4pt;"> <p style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;" class="MsoNormal"><font face="verdana,arial,helvetica,sans-serif" size="2">Database that has the ODI repository, BIACM Repository, SDS schemas and the Datawarehouse Schema</font></p> </td> </tr> <tr> <td width="205" valign="top" style="width: 153.9pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; padding: 0in 5.4pt;"> <p style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;" class="MsoNormal"><font face="verdana,arial,helvetica,sans-serif" size="2">BICS (BI Cloud Service)</font></p> </td> <td width="433" valign="top" style="width: 324.9pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0in 5.4pt;"> <p style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;" class="MsoNormal"><font face="verdana,arial,helvetica,sans-serif" size="2">RPD, Webcat, Jazn file</font></p> </td> </tr> <tr> <td width="205" valign="top" style="width: 153.9pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; padding: 0in 5.4pt;"> <p style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;" class="MsoNormal"><font face="verdana,arial,helvetica,sans-serif" size="2">Compute Cloud</font></p> </td> <td width="433" valign="top" style="width: 324.9pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0in 5.4pt;"><font size="2"><font face="verdana,arial,helvetica,sans-serif">Weblogic Server<br />ODI Server<br />BIACM<br />BIAPPS Shiphome<br />Customer Data stored as files (E.g. Source Files, Universal Adaptor files)<br /><br />*Optionally the below if installed<br />Corente VPN ?<br />Vnc<br />Dev tools like sql developer/browser/ODI studio and their associated files</font></font><br /></td> </tr> <tr> <td width="205" valign="top" style="width: 153.9pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; padding: 0in 5.4pt;"> <p style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;" class="MsoNormal"><font face="verdana,arial,helvetica,sans-serif" size="2">Storage Service</font></p> </td> <td width="433" valign="top" style="width: 324.9pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0in 5.4pt;"> <p style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;" class="MsoNormal"><font face="verdana,arial,helvetica,sans-serif" size="2">Database backups</font></p> </td> </tr> </tbody> </table><font face="verdana,arial,helvetica,sans-serif" size="2"> </font> <p style="text-align: justify;" class="MsoNormal"><font face="verdana,arial,helvetica,sans-serif" size="2"> </font></p><font face="verdana,arial,helvetica,sans-serif" size="2"> </font> <p align="justify" style="text-align: justify;" class="MsoNormal"><font face="verdana,arial,helvetica,sans-serif" size="2">You will need to backup all of the above instances to be able to successfully restore the BI Applications. Each of the Cloud services provides its own backup mechanism.<span> </span>Relevant information for backing up each of these cloud services is available in the Oracle Cloud documentation and will be detailed in subsequent blogs in this backup series. </font></p> <div align="justify"><font face="verdana,arial,helvetica,sans-serif" size="2"> </font></div> <p align="justify" style="text-align: justify;" class="MsoNormal"><font face="verdana,arial,helvetica,sans-serif" size="2">However is it adequate if you just backed up each of the cloud instance independently? Following section details some of the considerations related to this question by drawing on few examples.</font></p> <div align="justify"><font face="verdana,arial,helvetica,sans-serif" size="2"> </font></div> <p align="justify" style="text-align: justify;" class="MsoNormal"><font face="verdana,arial,helvetica,sans-serif" size="2"><b><u>Example 1:</u></b> Database has been backed up on weekend Saturday 11<sup>th</sup> March 11pm. Compute Cloud Instance was backed up earlier at 10 am the same day.<span> </span>Configuration that is done on weblogic (JDBC data sources, memory settings etc) is not stored in the database. So if any of the configuration was done between 10am 11<sup>th</sup> March and 11pm 11<sup>th</sup> March, that would be lost.<span> </span>And in that sense, the backup and restore does not truly reflect the state of the integrated BIAPPS environment as it would have been at 11pm 11<sup>th</sup> March.</font></p> <div align="justify"><font face="verdana,arial,helvetica,sans-serif" size="2"> </font></div> <p align="justify" style="text-align: justify;" class="MsoNormal"><font face="verdana,arial,helvetica,sans-serif" size="2"><b><u>Example2</u></b>: BICS was backed up on 10 pm on Sunday 12<sup>th</sup> March.<span> </span>Now continuing from example1, we have the database backup from 11pm 11<sup>th</sup> Match and BICS backup from 10 pm on Sunday 12<sup>th</sup> March. If there were any changes that were done to the database (like adding a new table/column) that was followed by a change in the RPD, then there is a chance that when we restore the database and the BICS instance, we can have a failure since they are no longer in sync. </font></p> <div align="justify"><font face="verdana,arial,helvetica,sans-serif" size="2"> </font></div> <p align="justify" style="text-align: justify;" class="MsoNormal"><font face="verdana,arial,helvetica,sans-serif" size="2">As you can see from the above examples, backing up the cloud instances at different points in time can cause a potential problem. That said, there is a no single button that can be clicked to backup all the instances at exact same time. However with a right process in place, it is still easy enough to backup and restore the BIAPPS Application. Following are some of the <b><u>best practices/guidelines</u></b> that the customer can take to avoid the above issues:</font></p> <div align="justify"> <ol> <li><font face="verdana,arial,helvetica,sans-serif" size="2">The most volatile of the BIAPPS components is the database. That said, the database is primarily changed when the ETL is run. So it is probably a good idea to backup the database outside the ETL window and as frequent as is possible. Configuration changes done in BIACM will also reside in the database, but these are less likely to occur once the initial configuration is done. Similarly ODI repository changes also reside in the database but in a production instance this should not be done everyday but rather during limited controlled windows.</font></li> <li><font face="verdana,arial,helvetica,sans-serif" size="2">BICS RPD is tightly coupled with the database. So the customer could restrict the RPD changes to certain limited days in a month and ensure that there is proper database backup along with accompanying BICS backup outside the change period. In other words, have a quiet period for making RPD changes and ensure that the BICS and DB are backed up in that quiet period.&nbsp;</font></li> <li><font face="verdana,arial,helvetica,sans-serif" size="2">Most of the configuration required for Weblogic is done during the initial configuration. So after the full load, ensure there is a blackout period when you back up all the cloud instances. Subsequently similar to the BICS quiet periods, ensure that the changes to the weblogic and other domains on the Compute are done only during certain days and ensure that they are being backed up during the quiet periods.&nbsp;</font></li> <li><font face="verdana,arial,helvetica,sans-serif" size="2">Most of the cloud services have either an API or command line utility to backup that instance. You could consider using those to automate the backup of all those instances. Better still, you can have that script kicked off automatically at the end of the ETL load plan.&nbsp;</font></li> <li><font face="verdana,arial,helvetica,sans-serif" size="2">When restoring the system from a backup, consider the impact of any extract from Source Systems. Most of the Sources Systems have incremental extracts. If the last extracted date is stored in the database, then that date will also be restored as part of the database restore. However if the extract date is stored outside the BIAPPS Database (E.g. Fusion or any on Prem Sources which you are replicating via a Replication tool), then you will need to ensure that post the database restore, you reset the extract dates to match the data in the database and also clear any pending data in transit (Like in UCM).&nbsp;</font></li> <li><font face="verdana,arial,helvetica,sans-serif" size="2">A full reset of the SDS and the warehouse, followed by a full load will fix any issues with the SDS/warehouse. However Full loads are expensive and certain Source Systems have restrictions on how much data can be extracted in a day (E.g. Taleo). Further you can potentially lose any existing snapshot data if doing reset of the warehouse (and if the snapshot data is not available in the source).&nbsp;</font></li> <li><font face="verdana,arial,helvetica,sans-serif" size="2">When you restore a database, you will be restoring all the tables and all the schemas. It is not easy to restore a single table. Therefore it is best to keep activities that impact different schemas separate. E.g. If doing major configuration in BIACM, then do that when no ETL is running and take a adhoc backup before and after those changes. Similarly when promoting code to the ODI Production repository, do it outside the ETL window and at a time when no BIACM changes are happening and take a backup, before and after those changes. This will ensure that you can use the db backup to restore the database to the point in time before those changes are done without worrying about impact to other schemas. For the same reasons, if you are making a change to a single warehouse table, keep a backup of that table (and other dependent tables) in the warehouse schema along with the data, so that you can use those to restore the table rather than use the complete database backup. </font><br /></li> </ol> </div> <p align="justify"> </p> <p align="justify" class="MsoNormal" style="text-align: justify;"><font face="verdana,arial,helvetica,sans-serif" size="2">There are other components that are also involved in the BIAPPS on PAAS Solution and need to be included in the backup strategy. These include but not limited to:</font></p> <div align="justify"><font face="verdana,arial,helvetica,sans-serif" size="2"> </font><font face="verdana,arial,helvetica,sans-serif" size="2"> </font> <ol><font face="verdana,arial,helvetica,sans-serif" size="2"> </font> <li><font face="verdana,arial,helvetica,sans-serif" size="2">Source Systems: These are the systems from which BIAPPS gets the data from. The backup of those systems is also required when considering the entire application. However those are typically taken care by the Source System administrators and hence not listed here.&nbsp; </font></li> <li><font face="verdana,arial,helvetica,sans-serif" size="2">Replication Tools: If you are not using VPN to connect to the On Prem Source Systems, then it is likely, you have some kind of Replication mechanism to transfer the data from the On Premise Source System to the SDS. So your backup strategy ought to cover those as well.</font></li> <li><font face="verdana,arial,helvetica,sans-serif" size="2">Identity Domain/ Users &amp; Roles:&nbsp; These are usually maintained from the Service Admin Console (SAC). Refer to SAC documentation on how to back these up.</font></li> <li><font face="verdana,arial,helvetica,sans-serif" size="2">Any Network/Security Rules you setup between these various instances.</font><br /></li> </ol> </div> <p align="justify" style="text-align: justify;" class="MsoNormal"><font face="verdana,arial,helvetica,sans-serif" size="2">The customer ought to therefore understand the entire BIAPPS archictecture and then design the backup strategy accordingly. The customer will also likely have a Dev/Test/Prod environment, each of which is a complete BIAPPS application in itself. The customer will have to ensure that the backup strategy covers all those environments. Special care should also be taken if customer has a T2P process (Test to Production) and one of the environments requires to be restored. </font></p> <p><font face="verdana,arial,helvetica,sans-serif" size="2">The subsequent blogs in this series, will attempt to drill into the relevant backup functionality that is present for the individual components that make up the BIAPPS on PAAS solution. </font><br /></p> <p align="justify"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;;">Disclaimer: Refer to the latest BIAPPS and Oracle Cloud Documentation as things might have changed since this blog was written.</span></i></p> <p> <span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;"><a href="https://blogs.oracle.com/biapps/tags/biapps_on_paas">All blogs related to BIAPPS on PAAS</a></span></p> <p><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;"><a href="https://blogs.oracle.com/biapps/tags/biapps_on_paas_backup">BIAPPS on PAAS Backup Blog Series</a></span><br /><br /> </p> <p> </p> <p><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;"></span> </p> Guna Vasireddy-Oracle https://blogs.oracle.com/biapps/entry/biapps_on_paas_backup_and Thu Mar 23 2017 06:51:58 GMT-0400 (EDT) Finding an Open Slip http://redpillanalytics.com/finding-an-open-slip/ <p><img width="300" height="200" src="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/SlipBackground.jpg?fit=300%2C200" class="attachment-medium size-medium wp-post-image" alt="" srcset="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/SlipBackground.jpg?w=2000 2000w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/SlipBackground.jpg?resize=300%2C200 300w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/SlipBackground.jpg?resize=768%2C512 768w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/SlipBackground.jpg?resize=1024%2C682 1024w" sizes="(max-width: 300px) 100vw, 300px" data-attachment-id="4748" data-permalink="http://redpillanalytics.com/finding-an-open-slip/slipbackground/" data-orig-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/SlipBackground.jpg?fit=2000%2C1333" data-orig-size="2000,1333" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="SlipBackground" data-image-description="" data-medium-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/SlipBackground.jpg?fit=300%2C200" data-large-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/SlipBackground.jpg?fit=1024%2C682" /></p><p id="81a0" class="graf graf--p graf-after--h4">Let’s pretend that you need to change ports within your OBIEE 12c instance due to new applications that natively install into ports that OBIEE is running. Or maybe you want to have the ports be the same as the OBIEE 11g ports. Whatever the reason, how do we go about changing the ports within the instance? Below is a quick guide for doing just that.</p> <p id="dff6" class="graf graf--p graf-after--p">Log into your OBIEE host and open a .cmd prompt or terminal window with rights to the OBIEE instance. Check the instance status, and shut down the OBIEE environment if it is up.</p> <p id="3cf2" class="graf graf--p graf-after--p">Navigate to the &lt;ORACLE_HOME&gt;/bi/config/fmwconfig/bienv/core directory.</p> <figure id="c8e7" class="graf graf--figure graf-after--p"> <div class="aspectRatioPlaceholder is-locked"> <div class="progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded" data-image-id="1*VANVoJfs9uQexlrPCv8Uxg.png" data-width="1322" data-height="388" data-action="zoom" data-action-value="1*VANVoJfs9uQexlrPCv8Uxg.png" data-scroll="native"><img class="progressiveMedia-image js-progressiveMedia-image" src="https://i1.wp.com/cdn-images-1.medium.com/max/1600/1*VANVoJfs9uQexlrPCv8Uxg.png?w=1170&#038;ssl=1" data-src="https://i1.wp.com/cdn-images-1.medium.com/max/1600/1*VANVoJfs9uQexlrPCv8Uxg.png?w=1170&#038;ssl=1" data-recalc-dims="1" /></div> </div> </figure> <p id="31d0" class="graf graf--p graf-after--figure">In this directory there is a file that controls all of the ports for your current environment. Convenient, right? Let’s edit it. Open the bienv-components.xml file.</p> <p id="9d5d" class="graf graf--p graf-after--p">You’ll now see a list of all of the services that you have configured for your environment. Each of these will have an xml tag called &lt;port&gt; with the port number in it.</p> <figure id="96c4" class="graf graf--figure graf-after--p"> <div class="aspectRatioPlaceholder is-locked"> <div class="progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded" data-image-id="1*tU6XKmP2q63dWIw036Hk1A.png" data-width="1336" data-height="782" data-action="zoom" data-action-value="1*tU6XKmP2q63dWIw036Hk1A.png" data-scroll="native"> <div style="width: 1346px" class="wp-caption aligncenter"><img class="progressiveMedia-image js-progressiveMedia-image" src="https://i0.wp.com/cdn-images-1.medium.com/max/1600/1*tU6XKmP2q63dWIw036Hk1A.png?resize=1170%2C685&#038;ssl=1" alt="" data-src="https://i0.wp.com/cdn-images-1.medium.com/max/1600/1*tU6XKmP2q63dWIw036Hk1A.png?resize=1170%2C685&#038;ssl=1" data-recalc-dims="1" /><p class="wp-caption-text">Before we edit…</p></div> </div> </div><figcaption class="imageCaption"></figcaption></figure> <p id="66fc" class="graf graf--p graf-after--figure">Simply edit the file to change the port number to your new port number. Save and exit.</p> <figure id="ebcc" class="graf graf--figure graf-after--p"> <div class="aspectRatioPlaceholder is-locked"> <div class="progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded" data-image-id="1*vO2Ueb99I0uQ3d9KwTzm-Q.png" data-width="1324" data-height="476" data-action="zoom" data-action-value="1*vO2Ueb99I0uQ3d9KwTzm-Q.png" data-scroll="native"> <p>&nbsp;</p> <div style="width: 1334px" class="wp-caption aligncenter"><img class="progressiveMedia-image js-progressiveMedia-image" src="https://i1.wp.com/cdn-images-1.medium.com/max/1600/1*vO2Ueb99I0uQ3d9KwTzm-Q.png?resize=1170%2C421&#038;ssl=1" alt="" data-src="https://i1.wp.com/cdn-images-1.medium.com/max/1600/1*vO2Ueb99I0uQ3d9KwTzm-Q.png?resize=1170%2C421&#038;ssl=1" data-recalc-dims="1" /><p class="wp-caption-text">…and after!</p></div> </div> </div> </figure> <p id="e3a4" class="graf graf--p graf-after--figure">Restart your OBIEE environment.</p> <p id="91f9" class="graf graf--p graf-after--p">Remember to do this process while the environment is down as the ports will only be refreshed once it is started. Also, remember to check that there are no other services running on the port that you are changing to.</p> <hr /> <p class="graf graf--p graf-after--p">Check out our collection of tip posts <a href="http://redpillanalytics.com/category/red-pill-analytics-tips/">here</a>. Subscribe to have them delivered to your inbox <a href="http://eepurl.com/cz5H_r">here</a>.</p> Phil Goerdt http://redpillanalytics.com/?p=4745 Wed Mar 22 2017 09:01:06 GMT-0400 (EDT) Finding an Open Slip https://medium.com/red-pill-analytics/finding-an-open-slip-ec57de26e03f?source=rss----abcc62a8d63e---4 <figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*xMIfpeOVSQu7MI97J0305Q.jpeg" /><figcaption>Photo credit:<a href="https://unsplash.com/search/boat?photo=YXZnE1jFdFo"> Joshua Stannard</a></figcaption></figure><h4>Changing Ports in OBIEE 12c</h4><p>Let’s pretend that you need to change ports within your OBIEE 12c instance due to new applications that natively install into ports that OBIEE is running. Or maybe you want to have the ports be the same as the OBIEE 11g ports. Whatever the reason, how do we go about changing the ports within the instance? Below is a quick guide for doing just that.</p><p>Log into your OBIEE host and open a .cmd prompt or terminal window with rights to the OBIEE instance. Check the instance status, and shut down the OBIEE environment if it is up.</p><p>Navigate to the &lt;ORACLE_HOME&gt;/bi/config/fmwconfig/bienv/core directory.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*VANVoJfs9uQexlrPCv8Uxg.png" /></figure><p>In this directory there is a file that controls all of the ports for your current environment. Convenient, right? Let’s edit it. Open the bienv-components.xml file.</p><p>You’ll now see a list of all of the services that you have configured for your environment. Each of these will have an xml tag called &lt;port&gt; with the port number in it.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*tU6XKmP2q63dWIw036Hk1A.png" /><figcaption>Before we edit…</figcaption></figure><p>Simply edit the file to change the port number to your new port number. Save and exit.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vO2Ueb99I0uQ3d9KwTzm-Q.png" /><figcaption>…and after!</figcaption></figure><p>Restart your OBIEE environment.</p><p>Remember to do this process while the environment is down as the ports will only be refreshed once it is started. Also, remember to check that there are no other services running on the port that you are changing to.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ec57de26e03f" width="1" height="1"><hr><p><a href="https://medium.com/red-pill-analytics/finding-an-open-slip-ec57de26e03f">Finding an Open Slip</a> was originally published in <a href="https://medium.com/red-pill-analytics">Red Pill Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p> Phil Goerdt https://medium.com/p/ec57de26e03f Wed Mar 22 2017 09:01:01 GMT-0400 (EDT) Oracle Database 12c Release 2 New Feature – Create Data Guard Standby Database Using DBCA http://gavinsoorma.com/2017/03/oracle-database-12c-release-2-new-feature-create-data-guard-standby-database-using-dbca/ <p>One of the real nice new features in Oracle 12c Release 2 (12.2.0.1) is the ability to create an Oracle Data Guard Standby Database using DBCA (Database Configuration Assistant). This really does simplify the process of creating a standby database as well and automates a number of steps in the creation process which were earlier manually performed.</p> <p>In this example we will see how a 12.2.0.1 Data Guard environment is created via DBCA and then Data Guard Broker (DGMGRL).</p> <p>The source database is called <strong>salesdb</strong> and the standby database DB_UNIQUE_NAME will be <strong>salesdb_sb</strong>.</p> <p>Primary database host name is <strong>host01</strong> and the Standby database host name is <strong>host02</strong>.</p> <p>The syntax is:</p> <pre dir="ltr">dbca -createDuplicateDB -gdbName global_database_name -primaryDBConnectionString easy_connect_string_to_primary -sid database_system_identifier [-createAsStandby [-dbUniqueName db_unique_name_for_standby]] </pre> <p>We will run the command from the standby host host02 as shown below.<br /> &nbsp;</p> <pre>[oracle@host02 ~]$ <strong>dbca -silent -createDuplicateDB -gdbName salesdb -primaryDBConnectionString</strong> <strong>host01:1521/salesdb -sid salesdb -createAsStandby -dbUniqueName salesdb_sb</strong> Enter SYS user password: Listener config step 33% complete Auxiliary instance creation 66% complete RMAN duplicate 100% complete Look at the log file "/u02/app/oracle/cfgtoollogs/dbca/salesdb_sb/salesdb.log" for further details. </pre> <p>Connect to the Standby Database and verify the role of the database<br /> &nbsp;<br /> <a href="http://gavinsoorma.com/wp-content/uploads/2017/03/dg1.png" rel="attachment wp-att-7481"><img class="aligncenter size-full wp-image-7481" src="http://gavinsoorma.com/wp-content/uploads/2017/03/dg1.png" alt="dg1" width="844" height="367" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/dg1-300x130.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/dg1-768x334.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/dg1.png 844w, http://gavinsoorma.com/wp-content/uploads/2017/03/dg1-300x130@2x.png 600w" sizes="(max-width: 844px) 100vw, 844px" /></a></p> <p>&nbsp;</p> <p>Note that the SPFILE and Password File for the Standby Database has been automatically created</p> <pre> [oracle@host02 dbs]$ ls -l sp* -rw-r-----. 1 oracle dba 5632 Mar 22 09:40 spfilesalesdb.ora [oracle@host02 dbs]$ ls -l ora* -rw-r-----. 1 oracle dba 3584 Mar 17 14:38 orapwsalesdb </pre> <p>&nbsp;</p> <p>Add the required entries to the tnsnames.ora file</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/dg2.png" rel="attachment wp-att-7482"><img class="aligncenter size-full wp-image-7482" src="http://gavinsoorma.com/wp-content/uploads/2017/03/dg2.png" alt="dg2" width="694" height="302" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/dg2-300x131.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/dg2.png 694w, http://gavinsoorma.com/wp-content/uploads/2017/03/dg2-300x131@2x.png 600w" sizes="(max-width: 694px) 100vw, 694px" /></a></p> <p>Continue with the Data Guard Standby Database creation using the Data Guard Broker<br /> &nbsp;</p> <pre>SQL&gt; <strong>alter system set dg_broker_start=true scope=both;</strong> System altered. SQL&gt; quit Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production [oracle@host01 archivelog]$<strong> dgmgrl</strong> DGMGRL for Linux: Release 12.2.0.1.0 - Production on Fri Mar 17 14:47:27 2017 <Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved. Welcome to DGMGRL, type "help" for information. DGMGRL&gt; <strong>connect /</strong> Connected to "salesdb" Connected as SYSDG. DGMGRL&gt; <strong>create configuration 'salesdb_dg'</strong> &gt; <strong>as primary database is 'salesdb'</strong> &gt; <strong>connect identifier is 'salesdb';</strong> Configuration "salesdb_dg" created with primary database "salesdb" </pre> <pre>DGMGRL&gt; <strong>add database 'salesdb_sb' as connect identifier is 'salesdb_sb';</strong> Database "salesdb_sb" added DGMGRL&gt; <strong>enable configuration;</strong> Enabled.</pre> <p>&nbsp;</p> <p>Create the Standby Redo Log Files on the primary database</p> <p>&nbsp;</p> <pre>SQL&gt; select member from v$logfile; MEMBER -------------------------------------------------------------------------------- /u03/app/oradata/salesdb/redo03.log /u03/app/oradata/salesdb/redo02.log /u03/app/oradata/salesdb/redo01.log SQL&gt; select bytes/1048576 from v$log; BYTES/1048576 -------------      200      200      200 SQL&gt; alter database add standby logfile '/u03/app/oradata/salesdb/standy_redo1.log' size 200m; Database altered. SQL&gt; alter database add standby logfile '/u03/app/oradata/salesdb/standy_redo2.log' size 200m; Database altered. SQL&gt; alter database add standby logfile '/u03/app/oradata/salesdb/standy_redo3.log' size 200m; Database altered. SQL&gt; alter database add standby logfile '/u03/app/oradata/salesdb/standy_redo4.log' size 200m; Database altered. </pre> <p>&nbsp;<br /> Create the Standby Redo Log Files on the standby database</p> <p>&nbsp;</p> <pre>DGMGRL&gt; connect / Connected to "salesdb" Connected as SYSDG. DGMGRL&gt; edit database 'salesdb_sb' set state='APPLY-OFF'; Succeeded. SQL&gt; shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL&gt; startup mount; ORACLE instance started. Total System Global Area 1174405120 bytes Fixed Size          8619984 bytes Variable Size           436209712 bytes Database Buffers   721420288 bytes Redo Buffers              8155136 bytes Database mounted. SQL&gt;  alter database add standby logfile '/u03/app/oradata/salesdb/standy_redo1.log' size 200m; Database altered. SQL&gt; alter database add standby logfile '/u03/app/oradata/salesdb/standy_redo2.log' size 200m; Database altered. SQL&gt; alter database add standby logfile '/u03/app/oradata/salesdb/standy_redo3.log' size 200m; Database altered. SQL&gt; alter database add standby logfile '/u03/app/oradata/salesdb/standy_redo4.log' size 200m; Database altered. SQL&gt; alter database open; Database altered. SQL&gt;</pre> <p>&nbsp;<br /> Verify the Data Guard Configuration<br /> &nbsp;</p> <pre>DGMGRL&gt; edit database 'salesdb_sb' set state='APPLY-ON'; Succeeded. DGMGRL&gt; show configuration; Configuration - salesdb_dg Protection Mode: MaxPerformance salesdb    - Primary database    salesdb_sb - Physical standby database Fast-Start Failover: DISABLED Configuration Status: SUCCESS   (status updated 8 seconds ago)</pre> <p>&nbsp;<br /> Set the property <strong>StaticConnectIdentifier</strong> to prevent errors during switchover operations<br /> &nbsp;</p> <pre>Edit database ‘salesdb’ set property StaticConnectIdentifier= '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=host01.localdomain)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=salesdb_DGMGRL)(INSTANCE_NAME=salesdb)(SERVER=DEDICATED)))'; Edit database ‘salesdb_sb’ set property StaticConnectIdentifier=StaticConnectIdentifier= '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=host02.localdomain)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=salesdb_sb_DGMGRL)(INSTANCE_NAME=salesdb)(SERVER=DEDICATED)))';</pre> <p>Edit listener.ora on primary database host and add the lines shown below. Reload the listener.<br /> &nbsp;</p> <pre> SID_LIST_LISTENER =   (SID_LIST =     (SID_DESC =       (GLOBAL_DBNAME = salesdb_DGMGRL)       (SID_NAME = salesdb)         )   ) </pre> <p>&nbsp;<br /> Edit listener.ora on standby database host and add the lines shown below. Reload the listener.<br /> &nbsp;</p> <pre>SID_LIST_LISTENER =   (SID_LIST =     (SID_DESC =       (GLOBAL_DBNAME = salesdb_sb_DGMGRL)       (SID_NAME = salesdb)         )   )</pre> Gavin Soorma http://gavinsoorma.com/?p=7480 Wed Mar 22 2017 00:06:10 GMT-0400 (EDT) Migrating an On-Premises Essbase Cube to the Cloud https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/ <p>With <a href="https://cloud.oracle.com/analytics-cloud">Oracle Analytics Cloud</a> (OAC) having been released last Friday (luck of the Irish!), I made it a priority to examine the level of difficulty (or ease) to migrate an on-premises (OP) Essbase cubes to the cloud. Overall the process is simple, but there are a few gotchas and caveats I found in the process.</p> <p>And since I post my failures on my blog, you will see what I tried that failed so you won’t make the same mistakes I did!</p> <p>Below is my OP Essbase cube. It is a fairly standard workforce planning/analysis cube that I built using the US’s Office of Personnel Management (OPM) structure for General Schedules (the pay and locality pay matrix for the different jobs in the US government). This is a BSO cube.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image001.png"><img data-attachment-id="1568" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image001-9/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image001.png" data-orig-size="540,736" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image001" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image001.png?w=220&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image001.png?w=540" class="alignnone size-medium wp-image-1568" src="https://epmqueen.files.wordpress.com/2017/03/image001.png?w=220&#038;h=300" alt="" width="220" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image001.png?w=220&amp;h=300 220w, https://epmqueen.files.wordpress.com/2017/03/image001.png?w=440&amp;h=600 440w, https://epmqueen.files.wordpress.com/2017/03/image001.png?w=110&amp;h=150 110w" sizes="(max-width: 220px) 100vw, 220px" /></a></p> <p>Because I truly wanted to test the export/import process, I added Typed Measures to my OP cube to see if they came over. Here, you can see the different localities in the GS schedule.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image011.jpg"><img data-attachment-id="1604" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image011-7/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image011.jpg" data-orig-size="624,322" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image011" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image011.jpg?w=300&#038;h=155" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image011.jpg?w=624" class="alignnone size-medium wp-image-1604" src="https://epmqueen.files.wordpress.com/2017/03/image011.jpg?w=300&#038;h=155" alt="" width="300" height="155" srcset="https://epmqueen.files.wordpress.com/2017/03/image011.jpg?w=300&amp;h=155 300w, https://epmqueen.files.wordpress.com/2017/03/image011.jpg?w=600&amp;h=310 600w, https://epmqueen.files.wordpress.com/2017/03/image011.jpg?w=150&amp;h=77 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>To show I don’t have just one or two rows of data, here are the cube statistics. There’s a chunk of data in there…comparable to some cubes I’ve built in the past.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image091.jpg"><img data-attachment-id="1605" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image091/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image091.jpg" data-orig-size="624,385" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image091" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image091.jpg?w=300&#038;h=185" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image091.jpg?w=624" class="alignnone size-medium wp-image-1605" src="https://epmqueen.files.wordpress.com/2017/03/image091.jpg?w=300&#038;h=185" alt="" width="300" height="185" srcset="https://epmqueen.files.wordpress.com/2017/03/image091.jpg?w=300&amp;h=185 300w, https://epmqueen.files.wordpress.com/2017/03/image091.jpg?w=600&amp;h=370 600w, https://epmqueen.files.wordpress.com/2017/03/image091.jpg?w=150&amp;h=93 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>I show the following screen to show the outline structure a bit. In each period block, I have the base level rolling up through Department to “GS Positions”. I wanted to highlight that the Typed Measures for Locality show at the base level, or Detroit in this example.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image094.jpg"><img data-attachment-id="1606" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image094/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image094.jpg" data-orig-size="625,181" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image094" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image094.jpg?w=300&#038;h=87" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image094.jpg?w=625" class="alignnone size-medium wp-image-1606" src="https://epmqueen.files.wordpress.com/2017/03/image094.jpg?w=300&#038;h=87" alt="" width="300" height="87" srcset="https://epmqueen.files.wordpress.com/2017/03/image094.jpg?w=300&amp;h=87 300w, https://epmqueen.files.wordpress.com/2017/03/image094.jpg?w=600&amp;h=174 600w, https://epmqueen.files.wordpress.com/2017/03/image094.jpg?w=150&amp;h=43 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>I’ve also added the option to enter and calculate pay and locality pay percentage increases for the different Budget versions.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image008.png"><img data-attachment-id="1569" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image008-9/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image008.png" data-orig-size="556,136" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image008" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image008.png?w=300&#038;h=73" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image008.png?w=556" class="alignnone size-medium wp-image-1569" src="https://epmqueen.files.wordpress.com/2017/03/image008.png?w=300&#038;h=73" alt="" width="300" height="73" srcset="https://epmqueen.files.wordpress.com/2017/03/image008.png?w=300&amp;h=73 300w, https://epmqueen.files.wordpress.com/2017/03/image008.png?w=150&amp;h=37 150w, https://epmqueen.files.wordpress.com/2017/03/image008.png 556w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>As you can see, it’s not a wimpy cube to export, data included. Using the <a href="https://realtrigeek.com/2017/03/17/esscs-command-line-scripts/">tool</a> I wrote about last Friday that exports Essbase cubes, “dbxtool”, I enter the details required to connect to Essbase and download the desired cube, USG_WF.Emp_Dets.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image102.png"><img data-attachment-id="1595" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image102/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image102.png" data-orig-size="1006,164" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image102" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image102.png?w=300&#038;h=49" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image102.png?w=840" class="alignnone size-medium wp-image-1595" src="https://epmqueen.files.wordpress.com/2017/03/image102.png?w=300&#038;h=49" alt="" width="300" height="49" srcset="https://epmqueen.files.wordpress.com/2017/03/image102.png?w=300&amp;h=49 300w, https://epmqueen.files.wordpress.com/2017/03/image102.png?w=600&amp;h=98 600w, https://epmqueen.files.wordpress.com/2017/03/image102.png?w=150&amp;h=24 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>I get a visual cue from the tool that my cube is being exported (so much better than a simple “Success”, IMHO).</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image009.png"><img data-attachment-id="1596" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image009-9/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image009.png" data-orig-size="1006,969" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image009" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image009.png?w=300&#038;h=289" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image009.png?w=840" class="alignnone size-medium wp-image-1596" src="https://epmqueen.files.wordpress.com/2017/03/image009.png?w=300&#038;h=289" alt="" width="300" height="289" srcset="https://epmqueen.files.wordpress.com/2017/03/image009.png?w=300&amp;h=289 300w, https://epmqueen.files.wordpress.com/2017/03/image009.png?w=600&amp;h=578 600w, https://epmqueen.files.wordpress.com/2017/03/image009.png?w=150&amp;h=144 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>When I go to the export’s folder, I see I have 2 items. I was expecting just one – the Excel file – so I want to investigate. The zip file contains my data because the data set is too large for Excel. I understand that reasoning.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image096.jpg"><img data-attachment-id="1607" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image096/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image096.jpg" data-orig-size="624,177" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image096" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image096.jpg?w=300&#038;h=85" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image096.jpg?w=624" class="alignnone size-medium wp-image-1607" src="https://epmqueen.files.wordpress.com/2017/03/image096.jpg?w=300&#038;h=85" alt="" width="300" height="85" srcset="https://epmqueen.files.wordpress.com/2017/03/image096.jpg?w=300&amp;h=85 300w, https://epmqueen.files.wordpress.com/2017/03/image096.jpg?w=600&amp;h=170 600w, https://epmqueen.files.wordpress.com/2017/03/image096.jpg?w=150&amp;h=43 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>When I open the Excel file, I see many of the cube details laid out for me in “Cube Designer” format (notice this is also the tab that opens when I open this file). I see my application name, database name, and dimensions listed.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image099.png"><img data-attachment-id="1608" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image099/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image099.png" data-orig-size="624,331" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image099" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image099.png?w=300&#038;h=159" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image099.png?w=624" class="alignnone size-medium wp-image-1608" src="https://epmqueen.files.wordpress.com/2017/03/image099.png?w=300&#038;h=159" alt="" width="300" height="159" srcset="https://epmqueen.files.wordpress.com/2017/03/image099.png?w=300&amp;h=159 300w, https://epmqueen.files.wordpress.com/2017/03/image099.png?w=600&amp;h=318 600w, https://epmqueen.files.wordpress.com/2017/03/image099.png?w=150&amp;h=80 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>On the Cube.Settings tab, I see the details about my cube. Everything looks correct to me.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image100.jpg"><img data-attachment-id="1609" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image100/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image100.jpg" data-orig-size="624,650" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image100" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image100.jpg?w=288&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image100.jpg?w=624" class="alignnone size-medium wp-image-1609" src="https://epmqueen.files.wordpress.com/2017/03/image100.jpg?w=288&#038;h=300" alt="" width="288" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image100.jpg?w=288&amp;h=300 288w, https://epmqueen.files.wordpress.com/2017/03/image100.jpg?w=576&amp;h=600 576w, https://epmqueen.files.wordpress.com/2017/03/image100.jpg?w=144&amp;h=150 144w" sizes="(max-width: 288px) 100vw, 288px" /></a></p> <p>The Cube.Generations tab is empty.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image019.png"><img data-attachment-id="1570" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image019-5/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image019.png" data-orig-size="489,832" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image019" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image019.png?w=176&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image019.png?w=489" class="alignnone size-medium wp-image-1570" src="https://epmqueen.files.wordpress.com/2017/03/image019.png?w=176&#038;h=300" alt="" width="176" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image019.png?w=176&amp;h=300 176w, https://epmqueen.files.wordpress.com/2017/03/image019.png?w=352&amp;h=600 352w, https://epmqueen.files.wordpress.com/2017/03/image019.png?w=88&amp;h=150 88w" sizes="(max-width: 176px) 100vw, 176px" /></a></p> <p>Next, the different dimensions are listed out on their own tab. I see the dimension name and hierarchy under “Members”. In the Definitions section, I see that the file and rule names have been provided for me.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image020.png"><img data-attachment-id="1571" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image020-6/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image020.png" data-orig-size="576,830" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image020" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image020.png?w=208&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image020.png?w=576" class="alignnone size-medium wp-image-1571" src="https://epmqueen.files.wordpress.com/2017/03/image020.png?w=208&#038;h=300" alt="" width="208" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image020.png?w=208&amp;h=300 208w, https://epmqueen.files.wordpress.com/2017/03/image020.png?w=416&amp;h=600 416w, https://epmqueen.files.wordpress.com/2017/03/image020.png?w=104&amp;h=150 104w" sizes="(max-width: 208px) 100vw, 208px" /></a></p> <p>Since I expected the dbxtool to export the OP cube in ready format for cloud load, I decide to load it to OAC as is. I need to set my Essbase cloud connection, and I did that by clicking “Connections”.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image101.jpg"><img data-attachment-id="1610" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image101/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image101.jpg" data-orig-size="624,97" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image101" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image101.jpg?w=300&#038;h=47" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image101.jpg?w=624" class="alignnone size-medium wp-image-1610" src="https://epmqueen.files.wordpress.com/2017/03/image101.jpg?w=300&#038;h=47" alt="" width="300" height="47" srcset="https://epmqueen.files.wordpress.com/2017/03/image101.jpg?w=300&amp;h=47 300w, https://epmqueen.files.wordpress.com/2017/03/image101.jpg?w=600&amp;h=94 600w, https://epmqueen.files.wordpress.com/2017/03/image101.jpg?w=150&amp;h=23 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>I entered the URL for Essbase.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image0231.png"><img data-attachment-id="1572" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image0231-2/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image0231.png" data-orig-size="406,239" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image0231" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image0231.png?w=300&#038;h=177" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image0231.png?w=406" class="alignnone size-medium wp-image-1572" src="https://epmqueen.files.wordpress.com/2017/03/image0231.png?w=300&#038;h=177" alt="" width="300" height="177" srcset="https://epmqueen.files.wordpress.com/2017/03/image0231.png?w=300&amp;h=177 300w, https://epmqueen.files.wordpress.com/2017/03/image0231.png?w=150&amp;h=88 150w, https://epmqueen.files.wordpress.com/2017/03/image0231.png 406w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Next, I clicked “Transform Data” to load the workbook.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image103.png"><img data-attachment-id="1611" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image103/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image103.png" data-orig-size="963,145" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image103" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image103.png?w=300&#038;h=45" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image103.png?w=840" class="alignnone size-medium wp-image-1611" src="https://epmqueen.files.wordpress.com/2017/03/image103.png?w=300&#038;h=45" alt="" width="300" height="45" srcset="https://epmqueen.files.wordpress.com/2017/03/image103.png?w=300&amp;h=45 300w, https://epmqueen.files.wordpress.com/2017/03/image103.png?w=600&amp;h=90 600w, https://epmqueen.files.wordpress.com/2017/03/image103.png?w=150&amp;h=23 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>You can have the system choose the cube name, or you can modify it yourself. I did not make any modifications and clicked “Run”.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image0261.png"><img data-attachment-id="1573" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image0261/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image0261.png" data-orig-size="342,346" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image0261" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image0261.png?w=297&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image0261.png?w=342" class="alignnone size-medium wp-image-1573" src="https://epmqueen.files.wordpress.com/2017/03/image0261.png?w=297&#038;h=300" alt="" width="297" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image0261.png?w=297&amp;h=300 297w, https://epmqueen.files.wordpress.com/2017/03/image0261.png?w=148&amp;h=150 148w, https://epmqueen.files.wordpress.com/2017/03/image0261.png 342w" sizes="(max-width: 297px) 100vw, 297px" /></a></p> <p>The tool asks if I want to build the cube…yes, Run.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image0271.png"><img data-attachment-id="1574" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image0271/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image0271.png" data-orig-size="450,466" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image0271" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image0271.png?w=290&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image0271.png?w=450" class="alignnone size-medium wp-image-1574" src="https://epmqueen.files.wordpress.com/2017/03/image0271.png?w=290&#038;h=300" alt="" width="290" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image0271.png?w=290&amp;h=300 290w, https://epmqueen.files.wordpress.com/2017/03/image0271.png?w=145&amp;h=150 145w, https://epmqueen.files.wordpress.com/2017/03/image0271.png 450w" sizes="(max-width: 290px) 100vw, 290px" /></a></p> <p>Once the job has been started, you can choose to go to Job Viewer to see the progress.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image0281.png"><img data-attachment-id="1575" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image0281/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image0281.png" data-orig-size="450,445" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image0281" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image0281.png?w=300&#038;h=297" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image0281.png?w=450" class="alignnone size-medium wp-image-1575" src="https://epmqueen.files.wordpress.com/2017/03/image0281.png?w=300&#038;h=297" alt="" width="300" height="297" srcset="https://epmqueen.files.wordpress.com/2017/03/image0281.png?w=300&amp;h=297 300w, https://epmqueen.files.wordpress.com/2017/03/image0281.png?w=150&amp;h=148 150w, https://epmqueen.files.wordpress.com/2017/03/image0281.png 450w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>I see my cube load is running. I can click “Refresh” to see the updates.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image104.png"><img data-attachment-id="1612" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image104/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image104.png" data-orig-size="943,475" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image104" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image104.png?w=300&#038;h=151" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image104.png?w=840" class="alignnone size-medium wp-image-1612" src="https://epmqueen.files.wordpress.com/2017/03/image104.png?w=300&#038;h=151" alt="" width="300" height="151" srcset="https://epmqueen.files.wordpress.com/2017/03/image104.png?w=300&amp;h=151 300w, https://epmqueen.files.wordpress.com/2017/03/image104.png?w=600&amp;h=302 600w, https://epmqueen.files.wordpress.com/2017/03/image104.png?w=150&amp;h=76 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Also, I can click “Details” to see details behind the job.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image105.png"><img data-attachment-id="1613" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image105/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image105.png" data-orig-size="943,475" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image105" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image105.png?w=300&#038;h=151" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image105.png?w=840" class="alignnone size-medium wp-image-1613" src="https://epmqueen.files.wordpress.com/2017/03/image105.png?w=300&#038;h=151" alt="" width="300" height="151" srcset="https://epmqueen.files.wordpress.com/2017/03/image105.png?w=300&amp;h=151 300w, https://epmqueen.files.wordpress.com/2017/03/image105.png?w=600&amp;h=302 600w, https://epmqueen.files.wordpress.com/2017/03/image105.png?w=150&amp;h=76 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Still in progress… If there are any errors, they will spit out to a text file that you view in this screen.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image033.png"><img data-attachment-id="1576" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image033-2/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image033.png" data-orig-size="511,519" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image033" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image033.png?w=295&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image033.png?w=511" class="alignnone size-medium wp-image-1576" src="https://epmqueen.files.wordpress.com/2017/03/image033.png?w=295&#038;h=300" alt="" width="295" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image033.png?w=295&amp;h=300 295w, https://epmqueen.files.wordpress.com/2017/03/image033.png?w=148&amp;h=150 148w, https://epmqueen.files.wordpress.com/2017/03/image033.png 511w" sizes="(max-width: 295px) 100vw, 295px" /></a></p> <p>So, my build errored out.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image106.png"><img data-attachment-id="1614" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image106/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image106.png" data-orig-size="943,475" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image106" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image106.png?w=300&#038;h=151" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image106.png?w=840" class="alignnone size-medium wp-image-1614" src="https://epmqueen.files.wordpress.com/2017/03/image106.png?w=300&#038;h=151" alt="" width="300" height="151" srcset="https://epmqueen.files.wordpress.com/2017/03/image106.png?w=300&amp;h=151 300w, https://epmqueen.files.wordpress.com/2017/03/image106.png?w=600&amp;h=302 600w, https://epmqueen.files.wordpress.com/2017/03/image106.png?w=150&amp;h=76 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>I get an error that Headcount didn’t load (or anything else, for that matter). That’s odd.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image0361.png"><img data-attachment-id="1577" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image0361/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image0361.png" data-orig-size="511,519" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image0361" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image0361.png?w=295&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image0361.png?w=511" class="alignnone size-medium wp-image-1577" src="https://epmqueen.files.wordpress.com/2017/03/image0361.png?w=295&#038;h=300" alt="" width="295" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image0361.png?w=295&amp;h=300 295w, https://epmqueen.files.wordpress.com/2017/03/image0361.png?w=148&amp;h=150 148w, https://epmqueen.files.wordpress.com/2017/03/image0361.png 511w" sizes="(max-width: 295px) 100vw, 295px" /></a></p> <p>So, I try the same process except choosing to make Modifcations. …Except I don’t really have any options to change.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image037.png"><img data-attachment-id="1578" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image037-3/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image037.png" data-orig-size="636,643" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image037" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image037.png?w=297&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image037.png?w=636" class="alignnone size-medium wp-image-1578" src="https://epmqueen.files.wordpress.com/2017/03/image037.png?w=297&#038;h=300" alt="" width="297" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image037.png?w=297&amp;h=300 297w, https://epmqueen.files.wordpress.com/2017/03/image037.png?w=594&amp;h=600 594w, https://epmqueen.files.wordpress.com/2017/03/image037.png?w=148&amp;h=150 148w" sizes="(max-width: 297px) 100vw, 297px" /></a></p> <p>The second tab… The Application Name and “USG_WF” name aren’t generations in the cube… Hmmm. Well, I have problems.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image038.png"><img data-attachment-id="1579" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image038-4/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image038.png" data-orig-size="636,643" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image038" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image038.png?w=297&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image038.png?w=636" class="alignnone size-medium wp-image-1579" src="https://epmqueen.files.wordpress.com/2017/03/image038.png?w=297&#038;h=300" alt="" width="297" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image038.png?w=297&amp;h=300 297w, https://epmqueen.files.wordpress.com/2017/03/image038.png?w=594&amp;h=600 594w, https://epmqueen.files.wordpress.com/2017/03/image038.png?w=148&amp;h=150 148w" sizes="(max-width: 297px) 100vw, 297px" /></a></p> <p>Next, I try to import the file online in Essbase.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image107.png"><img data-attachment-id="1615" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image107/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image107.png" data-orig-size="624,485" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image107" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image107.png?w=300&#038;h=233" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image107.png?w=624" class="alignnone size-medium wp-image-1615" src="https://epmqueen.files.wordpress.com/2017/03/image107.png?w=300&#038;h=233" alt="" width="300" height="233" srcset="https://epmqueen.files.wordpress.com/2017/03/image107.png?w=300&amp;h=233 300w, https://epmqueen.files.wordpress.com/2017/03/image107.png?w=600&amp;h=466 600w, https://epmqueen.files.wordpress.com/2017/03/image107.png?w=150&amp;h=117 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>I see my cube name and dimensions are listed…great. I choose not to Load Data at this point. …There wasn’t data on my data tab anyways. More on that later…</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image108.jpg"><img data-attachment-id="1616" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image108/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image108.jpg" data-orig-size="624,430" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image108" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image108.jpg?w=300&#038;h=207" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image108.jpg?w=624" class="alignnone size-medium wp-image-1616" src="https://epmqueen.files.wordpress.com/2017/03/image108.jpg?w=300&#038;h=207" alt="" width="300" height="207" srcset="https://epmqueen.files.wordpress.com/2017/03/image108.jpg?w=300&amp;h=207 300w, https://epmqueen.files.wordpress.com/2017/03/image108.jpg?w=600&amp;h=414 600w, https://epmqueen.files.wordpress.com/2017/03/image108.jpg?w=150&amp;h=103 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>I see I’m erroring out again. Argh.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image041.png"><img data-attachment-id="1580" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image041-3/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image041.png" data-orig-size="423,402" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image041" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image041.png?w=300&#038;h=285" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image041.png?w=423" class="alignnone size-medium wp-image-1580" src="https://epmqueen.files.wordpress.com/2017/03/image041.png?w=300&#038;h=285" alt="" width="300" height="285" srcset="https://epmqueen.files.wordpress.com/2017/03/image041.png?w=300&amp;h=285 300w, https://epmqueen.files.wordpress.com/2017/03/image041.png?w=150&amp;h=143 150w, https://epmqueen.files.wordpress.com/2017/03/image041.png 423w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>When I clicked “Export to Excel”, I really hoped to get more details about the errors, but I just got a regurgitation of what was on the screen.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image042.png"><img data-attachment-id="1581" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image042-3/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image042.png" data-orig-size="281,511" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image042" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image042.png?w=165&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image042.png?w=281" class="alignnone size-medium wp-image-1581" src="https://epmqueen.files.wordpress.com/2017/03/image042.png?w=165&#038;h=300" alt="" width="165" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image042.png?w=165&amp;h=300 165w, https://epmqueen.files.wordpress.com/2017/03/image042.png?w=82&amp;h=150 82w, https://epmqueen.files.wordpress.com/2017/03/image042.png 281w" sizes="(max-width: 165px) 100vw, 165px" /></a></p> <p>However, I see my cube has been created. Wait, what?</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image045.png"><img data-attachment-id="1582" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image045-5/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image045.png" data-orig-size="343,608" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image045" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image045.png?w=169&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image045.png?w=343" class="alignnone size-medium wp-image-1582" src="https://epmqueen.files.wordpress.com/2017/03/image045.png?w=169&#038;h=300" alt="" width="169" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image045.png?w=169&amp;h=300 169w, https://epmqueen.files.wordpress.com/2017/03/image045.png?w=338&amp;h=600 338w, https://epmqueen.files.wordpress.com/2017/03/image045.png?w=85&amp;h=150 85w" sizes="(max-width: 169px) 100vw, 169px" /></a></p> <p>When I click on the database and choose “Outline”…</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image109.jpg"><img data-attachment-id="1617" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image109-2/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image109.jpg" data-orig-size="624,325" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image109" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image109.jpg?w=300&#038;h=156" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image109.jpg?w=624" class="alignnone size-medium wp-image-1617" src="https://epmqueen.files.wordpress.com/2017/03/image109.jpg?w=300&#038;h=156" alt="" width="300" height="156" srcset="https://epmqueen.files.wordpress.com/2017/03/image109.jpg?w=300&amp;h=156 300w, https://epmqueen.files.wordpress.com/2017/03/image109.jpg?w=600&amp;h=312 600w, https://epmqueen.files.wordpress.com/2017/03/image109.jpg?w=150&amp;h=78 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>I am brought to this screen. Notice the “Statistics” column shows no children (C), descendants (D), generations (G), or levels (L). No good.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image110.jpg"><img data-attachment-id="1618" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image110-2/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image110.jpg" data-orig-size="623,169" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image110" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image110.jpg?w=300&#038;h=81" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image110.jpg?w=623" class="alignnone size-medium wp-image-1618" src="https://epmqueen.files.wordpress.com/2017/03/image110.jpg?w=300&#038;h=81" alt="" width="300" height="81" srcset="https://epmqueen.files.wordpress.com/2017/03/image110.jpg?w=300&amp;h=81 300w, https://epmqueen.files.wordpress.com/2017/03/image110.jpg?w=597&amp;h=162 597w, https://epmqueen.files.wordpress.com/2017/03/image110.jpg?w=150&amp;h=41 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Okay, 3rd attempt at loading the metadata. In Cube Designer, I choose “Build Cube”.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image111.png"><img data-attachment-id="1619" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image111-2/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image111.png" data-orig-size="624,318" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image111" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image111.png?w=300&#038;h=153" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image111.png?w=624" class="alignnone size-medium wp-image-1619" src="https://epmqueen.files.wordpress.com/2017/03/image111.png?w=300&#038;h=153" alt="" width="300" height="153" srcset="https://epmqueen.files.wordpress.com/2017/03/image111.png?w=300&amp;h=153 300w, https://epmqueen.files.wordpress.com/2017/03/image111.png?w=600&amp;h=306 600w, https://epmqueen.files.wordpress.com/2017/03/image111.png?w=150&amp;h=76 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>I get a warning this time.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image112.png"><img data-attachment-id="1620" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image112-2/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image112.png" data-orig-size="943,475" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image112" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image112.png?w=300&#038;h=151" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image112.png?w=840" class="alignnone size-medium wp-image-1620" src="https://epmqueen.files.wordpress.com/2017/03/image112.png?w=300&#038;h=151" alt="" width="300" height="151" srcset="https://epmqueen.files.wordpress.com/2017/03/image112.png?w=300&amp;h=151 300w, https://epmqueen.files.wordpress.com/2017/03/image112.png?w=600&amp;h=302 600w, https://epmqueen.files.wordpress.com/2017/03/image112.png?w=150&amp;h=76 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Okay, so it created. That’s a step forward.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image054.png"><img data-attachment-id="1583" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image054-3/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image054.png" data-orig-size="511,519" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image054" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image054.png?w=295&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image054.png?w=511" class="alignnone size-medium wp-image-1583" src="https://epmqueen.files.wordpress.com/2017/03/image054.png?w=295&#038;h=300" alt="" width="295" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image054.png?w=295&amp;h=300 295w, https://epmqueen.files.wordpress.com/2017/03/image054.png?w=148&amp;h=150 148w, https://epmqueen.files.wordpress.com/2017/03/image054.png 511w" sizes="(max-width: 295px) 100vw, 295px" /></a></p> <p>However, when I look at some of the error files, I see the same error as before and back to square one.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image0551.png"><img data-attachment-id="1584" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image0551/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image0551.png" data-orig-size="511,519" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image0551" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image0551.png?w=295&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image0551.png?w=511" class="alignnone size-medium wp-image-1584" src="https://epmqueen.files.wordpress.com/2017/03/image0551.png?w=295&#038;h=300" alt="" width="295" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image0551.png?w=295&amp;h=300 295w, https://epmqueen.files.wordpress.com/2017/03/image0551.png?w=148&amp;h=150 148w, https://epmqueen.files.wordpress.com/2017/03/image0551.png 511w" sizes="(max-width: 295px) 100vw, 295px" /></a></p> <p>Out of frustration, I go to the “Templates” section in Essbase to download the workbook for Sample.Basic to see what I have wrong in my workbook.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image0511.png"><img data-attachment-id="1597" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image0511/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image0511.png" data-orig-size="1717,419" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image0511" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image0511.png?w=300&#038;h=73" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image0511.png?w=840" class="alignnone size-medium wp-image-1597" src="https://epmqueen.files.wordpress.com/2017/03/image0511.png?w=300&#038;h=73" alt="" width="300" height="73" srcset="https://epmqueen.files.wordpress.com/2017/03/image0511.png?w=300&amp;h=73 300w, https://epmqueen.files.wordpress.com/2017/03/image0511.png?w=600&amp;h=146 600w, https://epmqueen.files.wordpress.com/2017/03/image0511.png?w=150&amp;h=37 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>I decided that I’m going to copy my dbxtool details to the Sample.Basic one.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image113.png"><img data-attachment-id="1621" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image113/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image113.png" data-orig-size="624,747" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image113" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image113.png?w=251&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image113.png?w=624" class="alignnone size-medium wp-image-1621" src="https://epmqueen.files.wordpress.com/2017/03/image113.png?w=251&#038;h=300" alt="" width="251" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image113.png?w=251&amp;h=300 251w, https://epmqueen.files.wordpress.com/2017/03/image113.png?w=502&amp;h=600 502w, https://epmqueen.files.wordpress.com/2017/03/image113.png?w=125&amp;h=150 125w" sizes="(max-width: 251px) 100vw, 251px" /></a></p> <p>Here are my details added to the Essbase.Cube tab.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image114.jpg"><img data-attachment-id="1622" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image114/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image114.jpg" data-orig-size="624,307" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image114" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image114.jpg?w=300&#038;h=148" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image114.jpg?w=624" class="alignnone size-medium wp-image-1622" src="https://epmqueen.files.wordpress.com/2017/03/image114.jpg?w=300&#038;h=148" alt="" width="300" height="148" srcset="https://epmqueen.files.wordpress.com/2017/03/image114.jpg?w=300&amp;h=148 300w, https://epmqueen.files.wordpress.com/2017/03/image114.jpg?w=600&amp;h=296 600w, https://epmqueen.files.wordpress.com/2017/03/image114.jpg?w=150&amp;h=74 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Following Sample.Basic’s format, I added generation names for Department and Periods.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image060.png"><img data-attachment-id="1585" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image060-4/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image060.png" data-orig-size="499,365" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image060" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image060.png?w=300&#038;h=219" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image060.png?w=499" class="alignnone size-medium wp-image-1585" src="https://epmqueen.files.wordpress.com/2017/03/image060.png?w=300&#038;h=219" alt="" width="300" height="219" srcset="https://epmqueen.files.wordpress.com/2017/03/image060.png?w=300&amp;h=219 300w, https://epmqueen.files.wordpress.com/2017/03/image060.png?w=150&amp;h=110 150w, https://epmqueen.files.wordpress.com/2017/03/image060.png 499w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>AHHHHHH. I see my issue. Using the dbxtool, I do NOT get the column names needed for my metadata. See below in light blue where it says “PARENT”, “CHILD”, etc. Yep, that’s it. And I knew it. So I now go through the process of adding the column names to my extract.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image115.jpg"><img data-attachment-id="1623" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image115/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image115.jpg" data-orig-size="624,299" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image115" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image115.jpg?w=300&#038;h=144" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image115.jpg?w=624" class="alignnone size-medium wp-image-1623" src="https://epmqueen.files.wordpress.com/2017/03/image115.jpg?w=300&#038;h=144" alt="" width="300" height="144" srcset="https://epmqueen.files.wordpress.com/2017/03/image115.jpg?w=300&amp;h=144 300w, https://epmqueen.files.wordpress.com/2017/03/image115.jpg?w=600&amp;h=288 600w, https://epmqueen.files.wordpress.com/2017/03/image115.jpg?w=150&amp;h=72 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>YES. FINALLY. SUCCESS. As you can see, it took me an hour’s worth of making mistakes to get it correct. But, I found my error.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image116.png"><img data-attachment-id="1624" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image116/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image116.png" data-orig-size="943,475" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image116" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image116.png?w=300&#038;h=151" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image116.png?w=840" class="alignnone size-medium wp-image-1624" src="https://epmqueen.files.wordpress.com/2017/03/image116.png?w=300&#038;h=151" alt="" width="300" height="151" srcset="https://epmqueen.files.wordpress.com/2017/03/image116.png?w=300&amp;h=151 300w, https://epmqueen.files.wordpress.com/2017/03/image116.png?w=600&amp;h=302 600w, https://epmqueen.files.wordpress.com/2017/03/image116.png?w=150&amp;h=76 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>The details behind the “Success” message.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image0651.png"><img data-attachment-id="1586" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image0651/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image0651.png" data-orig-size="511,519" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image0651" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image0651.png?w=295&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image0651.png?w=511" class="alignnone size-medium wp-image-1586" src="https://epmqueen.files.wordpress.com/2017/03/image0651.png?w=295&#038;h=300" alt="" width="295" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image0651.png?w=295&amp;h=300 295w, https://epmqueen.files.wordpress.com/2017/03/image0651.png?w=148&amp;h=150 148w, https://epmqueen.files.wordpress.com/2017/03/image0651.png 511w" sizes="(max-width: 295px) 100vw, 295px" /></a></p> <p>I now have my new cube! …And I deleted the old cube that had no children.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image117.jpg"><img data-attachment-id="1625" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image117/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image117.jpg" data-orig-size="624,501" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image117" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image117.jpg?w=300&#038;h=241" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image117.jpg?w=624" class="alignnone size-medium wp-image-1625" src="https://epmqueen.files.wordpress.com/2017/03/image117.jpg?w=300&#038;h=241" alt="" width="300" height="241" srcset="https://epmqueen.files.wordpress.com/2017/03/image117.jpg?w=300&amp;h=241 300w, https://epmqueen.files.wordpress.com/2017/03/image117.jpg?w=600&amp;h=482 600w, https://epmqueen.files.wordpress.com/2017/03/image117.jpg?w=150&amp;h=120 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Now when I go to the “Outline” tab, I have “Statistics”!</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image118.jpg"><img data-attachment-id="1626" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image118/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image118.jpg" data-orig-size="625,179" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image118" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image118.jpg?w=300&#038;h=86" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image118.jpg?w=625" class="alignnone size-medium wp-image-1626" src="https://epmqueen.files.wordpress.com/2017/03/image118.jpg?w=300&#038;h=86" alt="" width="300" height="86" srcset="https://epmqueen.files.wordpress.com/2017/03/image118.jpg?w=300&amp;h=86 300w, https://epmqueen.files.wordpress.com/2017/03/image118.jpg?w=600&amp;h=172 600w, https://epmqueen.files.wordpress.com/2017/03/image118.jpg?w=150&amp;h=43 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Just like OP Essbase, you must lock the outline to edit it. To verify my formulas came over, I want to test one out.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image0701.png"><img data-attachment-id="1587" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image0701/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image0701.png" data-orig-size="372,169" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image0701" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image0701.png?w=300&#038;h=136" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image0701.png?w=372" class="alignnone size-medium wp-image-1587" src="https://epmqueen.files.wordpress.com/2017/03/image0701.png?w=300&#038;h=136" alt="" width="300" height="136" srcset="https://epmqueen.files.wordpress.com/2017/03/image0701.png?w=300&amp;h=136 300w, https://epmqueen.files.wordpress.com/2017/03/image0701.png?w=150&amp;h=68 150w, https://epmqueen.files.wordpress.com/2017/03/image0701.png 372w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Clicking on the member formula shows it correctly. Perfect.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image119.jpg"><img data-attachment-id="1627" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image119/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image119.jpg" data-orig-size="624,306" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image119" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image119.jpg?w=300&#038;h=147" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image119.jpg?w=624" class="alignnone size-medium wp-image-1627" src="https://epmqueen.files.wordpress.com/2017/03/image119.jpg?w=300&#038;h=147" alt="" width="300" height="147" srcset="https://epmqueen.files.wordpress.com/2017/03/image119.jpg?w=300&amp;h=147 300w, https://epmqueen.files.wordpress.com/2017/03/image119.jpg?w=600&amp;h=294 600w, https://epmqueen.files.wordpress.com/2017/03/image119.jpg?w=150&amp;h=74 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>It even validates. Sweet.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image120.jpg"><img data-attachment-id="1628" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image120/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image120.jpg" data-orig-size="624,520" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image120" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image120.jpg?w=300&#038;h=250" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image120.jpg?w=624" class="alignnone size-medium wp-image-1628" src="https://epmqueen.files.wordpress.com/2017/03/image120.jpg?w=300&#038;h=250" alt="" width="300" height="250" srcset="https://epmqueen.files.wordpress.com/2017/03/image120.jpg?w=300&amp;h=250 300w, https://epmqueen.files.wordpress.com/2017/03/image120.jpg?w=600&amp;h=500 600w, https://epmqueen.files.wordpress.com/2017/03/image120.jpg?w=150&amp;h=125 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Now I want to load my calc scripts. I only have 3 main ones, so it’s as simple as copying and pasting the script from OP to Cloud.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image0751.png"><img data-attachment-id="1588" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image0751/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image0751.png" data-orig-size="577,764" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image0751" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image0751.png?w=227&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image0751.png?w=577" class="alignnone size-medium wp-image-1588" src="https://epmqueen.files.wordpress.com/2017/03/image0751.png?w=227&#038;h=300" alt="" width="227" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image0751.png?w=227&amp;h=300 227w, https://epmqueen.files.wordpress.com/2017/03/image0751.png?w=454&amp;h=600 454w, https://epmqueen.files.wordpress.com/2017/03/image0751.png?w=113&amp;h=150 113w" sizes="(max-width: 227px) 100vw, 227px" /></a></p> <p>Under the “Scripts” tab, I can create a new script.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image121.jpg"><img data-attachment-id="1629" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image121/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image121.jpg" data-orig-size="623,194" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image121" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image121.jpg?w=300&#038;h=93" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image121.jpg?w=623" class="alignnone size-medium wp-image-1629" src="https://epmqueen.files.wordpress.com/2017/03/image121.jpg?w=300&#038;h=93" alt="" width="300" height="93" srcset="https://epmqueen.files.wordpress.com/2017/03/image121.jpg?w=300&amp;h=93 300w, https://epmqueen.files.wordpress.com/2017/03/image121.jpg?w=597&amp;h=186 597w, https://epmqueen.files.wordpress.com/2017/03/image121.jpg?w=150&amp;h=47 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>When I click “Validate”, I get confirmation the script is valid.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image078.png"><img data-attachment-id="1589" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image078-3/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image078.png" data-orig-size="211,159" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image078" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image078.png?w=300&#038;h=226" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image078.png?w=300&#038;h=226" class="alignnone size-medium wp-image-1589" src="https://epmqueen.files.wordpress.com/2017/03/image078.png?w=300&#038;h=226" alt="" srcset="https://epmqueen.files.wordpress.com/2017/03/image078.png 211w, https://epmqueen.files.wordpress.com/2017/03/image078.png?w=150&amp;h=113 150w" sizes="(max-width: 211px) 100vw, 211px" /></a></p> <p>Saved off and ready for use.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image122.jpg"><img data-attachment-id="1630" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image122/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image122.jpg" data-orig-size="624,248" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image122" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image122.jpg?w=300&#038;h=119" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image122.jpg?w=624" class="alignnone size-medium wp-image-1630" src="https://epmqueen.files.wordpress.com/2017/03/image122.jpg?w=300&#038;h=119" alt="" width="300" height="119" srcset="https://epmqueen.files.wordpress.com/2017/03/image122.jpg?w=300&amp;h=119 300w, https://epmqueen.files.wordpress.com/2017/03/image122.jpg?w=600&amp;h=238 600w, https://epmqueen.files.wordpress.com/2017/03/image122.jpg?w=150&amp;h=60 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>If I need to add it later, I can do so on this same screen.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image081.png"><img data-attachment-id="1590" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image081/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image081.png" data-orig-size="397,354" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image081" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image081.png?w=300&#038;h=268" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image081.png?w=397" class="alignnone size-medium wp-image-1590" src="https://epmqueen.files.wordpress.com/2017/03/image081.png?w=300&#038;h=268" alt="" width="300" height="268" srcset="https://epmqueen.files.wordpress.com/2017/03/image081.png?w=300&amp;h=268 300w, https://epmqueen.files.wordpress.com/2017/03/image081.png?w=150&amp;h=134 150w, https://epmqueen.files.wordpress.com/2017/03/image081.png 397w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>I have added my 2 other scripts to the repository.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image123.jpg"><img data-attachment-id="1631" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image123/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image123.jpg" data-orig-size="624,377" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image123" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image123.jpg?w=300&#038;h=181" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image123.jpg?w=624" class="alignnone size-medium wp-image-1631" src="https://epmqueen.files.wordpress.com/2017/03/image123.jpg?w=300&#038;h=181" alt="" width="300" height="181" srcset="https://epmqueen.files.wordpress.com/2017/03/image123.jpg?w=300&amp;h=181 300w, https://epmqueen.files.wordpress.com/2017/03/image123.jpg?w=600&amp;h=362 600w, https://epmqueen.files.wordpress.com/2017/03/image123.jpg?w=150&amp;h=91 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>To run the scripts manually, I click on “Jobs”. From here I click “New Job”.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image080.png"><img data-attachment-id="1598" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image080-2/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image080.png" data-orig-size="566,192" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image080" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image080.png?w=300&#038;h=102" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image080.png?w=566" class="alignnone size-medium wp-image-1598" src="https://epmqueen.files.wordpress.com/2017/03/image080.png?w=300&#038;h=102" alt="" width="300" height="102" srcset="https://epmqueen.files.wordpress.com/2017/03/image080.png?w=300&amp;h=102 300w, https://epmqueen.files.wordpress.com/2017/03/image080.png?w=150&amp;h=51 150w, https://epmqueen.files.wordpress.com/2017/03/image080.png 566w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>I choose “Calc Execution” and the script I want to run. Then “Execute”.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image124.jpg"><img data-attachment-id="1632" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image124/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image124.jpg" data-orig-size="624,381" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image124" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image124.jpg?w=300&#038;h=183" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image124.jpg?w=624" class="alignnone size-medium wp-image-1632" src="https://epmqueen.files.wordpress.com/2017/03/image124.jpg?w=300&#038;h=183" alt="" width="300" height="183" srcset="https://epmqueen.files.wordpress.com/2017/03/image124.jpg?w=300&amp;h=183 300w, https://epmqueen.files.wordpress.com/2017/03/image124.jpg?w=600&amp;h=366 600w, https://epmqueen.files.wordpress.com/2017/03/image124.jpg?w=150&amp;h=92 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>The calcs haven’t really done anything yet because there is no data in the cube.</p> <p>Okay. Now we need to talk about the data. Figuring this out really frustrated me. I couldn’t figure out how to load my data into the cube since it was not exported to the Excel workbook. I tried copying and pasting the data from the zip file, it didn’t line up with the format needed.</p> <p>Here is the zip file. Notice how the columns are the period dimension.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image125.png"><img data-attachment-id="1599" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image125/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image125.png" data-orig-size="1185,290" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image125" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image125.png?w=300&#038;h=73" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image125.png?w=840" class="alignnone size-medium wp-image-1599" src="https://epmqueen.files.wordpress.com/2017/03/image125.png?w=300&#038;h=73" alt="" width="300" height="73" srcset="https://epmqueen.files.wordpress.com/2017/03/image125.png?w=300&amp;h=73 300w, https://epmqueen.files.wordpress.com/2017/03/image125.png?w=597&amp;h=146 597w, https://epmqueen.files.wordpress.com/2017/03/image125.png?w=150&amp;h=37 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>In the dbxtool export, the columns are the Measures dimension, and Periods are in a Dimension column.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image087.png"><img data-attachment-id="1600" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image087/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image087.png" data-orig-size="1295,203" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image087" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image087.png?w=300&#038;h=47" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image087.png?w=840" class="alignnone size-medium wp-image-1600" src="https://epmqueen.files.wordpress.com/2017/03/image087.png?w=300&#038;h=47" alt="" width="300" height="47" srcset="https://epmqueen.files.wordpress.com/2017/03/image087.png?w=300&amp;h=47 300w, https://epmqueen.files.wordpress.com/2017/03/image087.png?w=600&amp;h=94 600w, https://epmqueen.files.wordpress.com/2017/03/image087.png?w=150&amp;h=24 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>I tried to use Excel to rearrange the data, but the data size is just too large. I thought about loading it to my Oracle database, but that was going to take a while too.</p> <p>There was really 1 true tool that was above all others for this task…and I shudder to say it…Essbase Report Script. So, that’s what I did.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image126.png"><img data-attachment-id="1601" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image126/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image126.png" data-orig-size="344,591" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image126" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image126.png?w=175&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image126.png?w=344" class="alignnone size-medium wp-image-1601" src="https://epmqueen.files.wordpress.com/2017/03/image126.png?w=175&#038;h=300" alt="" width="175" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image126.png?w=175&amp;h=300 175w, https://epmqueen.files.wordpress.com/2017/03/image126.png?w=87&amp;h=150 87w, https://epmqueen.files.wordpress.com/2017/03/image126.png 344w" sizes="(max-width: 175px) 100vw, 175px" /></a></p> <p>And it did its job perfectly.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image127.png"><img data-attachment-id="1602" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image127/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image127.png" data-orig-size="1021,267" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image127" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image127.png?w=300&#038;h=78" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image127.png?w=840" class="alignnone size-medium wp-image-1602" src="https://epmqueen.files.wordpress.com/2017/03/image127.png?w=300&#038;h=78" alt="" width="300" height="78" srcset="https://epmqueen.files.wordpress.com/2017/03/image127.png?w=300&amp;h=78 300w, https://epmqueen.files.wordpress.com/2017/03/image127.png?w=597&amp;h=156 597w, https://epmqueen.files.wordpress.com/2017/03/image127.png?w=150&amp;h=39 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>I decided to test something out at this point… Since I knew my dimension build tabs were good in my workbook, I deleted the application from the Cloud. I wanted to try and rebuild it with the data in the data tab.</p> <p>When I went through the process to load the cube using the “Import” option online, I chose to load the data as well. (Pay no attention to the warning given on the screen. I forgot to take screenshots the first time around…) Since I deleted my previous cube and calc scripts, I re-added my calcs after the cube was recreated.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image128.png"><img data-attachment-id="1603" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image128/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image128.png" data-orig-size="824,563" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image128" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image128.png?w=300&#038;h=205" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image128.png?w=824" class="alignnone size-medium wp-image-1603" src="https://epmqueen.files.wordpress.com/2017/03/image128.png?w=300&#038;h=205" alt="" width="300" height="205" srcset="https://epmqueen.files.wordpress.com/2017/03/image128.png?w=300&amp;h=205 300w, https://epmqueen.files.wordpress.com/2017/03/image128.png?w=600&amp;h=410 600w, https://epmqueen.files.wordpress.com/2017/03/image128.png?w=150&amp;h=102 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>And it worked!</p> <p>To verify the data loaded completely, I want to run my 3 calc scripts to calc the data. In the jobs tab, I click “New Job”.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image129.jpg"><img data-attachment-id="1633" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image129/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image129.jpg" data-orig-size="625,134" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image129" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image129.jpg?w=300&#038;h=64" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image129.jpg?w=625" class="alignnone size-medium wp-image-1633" src="https://epmqueen.files.wordpress.com/2017/03/image129.jpg?w=300&#038;h=64" alt="" width="300" height="64" srcset="https://epmqueen.files.wordpress.com/2017/03/image129.jpg?w=300&amp;h=64 300w, https://epmqueen.files.wordpress.com/2017/03/image129.jpg?w=597&amp;h=128 597w, https://epmqueen.files.wordpress.com/2017/03/image129.jpg?w=150&amp;h=32 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>It will ask me which script…</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image092.png"><img data-attachment-id="1592" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image092/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image092.png" data-orig-size="404,432" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image092" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image092.png?w=281&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image092.png?w=404" class="alignnone size-medium wp-image-1592" src="https://epmqueen.files.wordpress.com/2017/03/image092.png?w=281&#038;h=300" alt="" width="281" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image092.png?w=281&amp;h=300 281w, https://epmqueen.files.wordpress.com/2017/03/image092.png?w=140&amp;h=150 140w, https://epmqueen.files.wordpress.com/2017/03/image092.png 404w" sizes="(max-width: 281px) 100vw, 281px" /></a></p> <p>And I can see it ran successfully.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image130.jpg"><img data-attachment-id="1634" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image130/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image130.jpg" data-orig-size="624,146" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image130" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image130.jpg?w=300&#038;h=70" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image130.jpg?w=624" class="alignnone size-medium wp-image-1634" src="https://epmqueen.files.wordpress.com/2017/03/image130.jpg?w=300&#038;h=70" alt="" width="300" height="70" srcset="https://epmqueen.files.wordpress.com/2017/03/image130.jpg?w=300&amp;h=70 300w, https://epmqueen.files.wordpress.com/2017/03/image130.jpg?w=600&amp;h=140 600w, https://epmqueen.files.wordpress.com/2017/03/image130.jpg?w=150&amp;h=35 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>This is what a success script looks like form the Details:</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image131.jpg"><img data-attachment-id="1635" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image131/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image131.jpg" data-orig-size="624,154" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image131" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image131.jpg?w=300&#038;h=74" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image131.jpg?w=624" class="alignnone size-medium wp-image-1635" src="https://epmqueen.files.wordpress.com/2017/03/image131.jpg?w=300&#038;h=74" alt="" width="300" height="74" srcset="https://epmqueen.files.wordpress.com/2017/03/image131.jpg?w=300&amp;h=74 300w, https://epmqueen.files.wordpress.com/2017/03/image131.jpg?w=600&amp;h=148 600w, https://epmqueen.files.wordpress.com/2017/03/image131.jpg?w=150&amp;h=37 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>To test the calcs, I decided to compare numbers at the top for FY2018-&gt;Budget-&gt;Final.</p> <p>Here are the Cloud numbers:</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image097.png"><img data-attachment-id="1593" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image097/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image097.png" data-orig-size="503,439" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image097" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image097.png?w=300&#038;h=262" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image097.png?w=503" class="alignnone size-medium wp-image-1593" src="https://epmqueen.files.wordpress.com/2017/03/image097.png?w=300&#038;h=262" alt="" width="300" height="262" srcset="https://epmqueen.files.wordpress.com/2017/03/image097.png?w=300&amp;h=262 300w, https://epmqueen.files.wordpress.com/2017/03/image097.png?w=150&amp;h=131 150w, https://epmqueen.files.wordpress.com/2017/03/image097.png 503w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Here are the OP numbers:</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image098.png"><img data-attachment-id="1594" data-permalink="https://realtrigeek.com/2017/03/21/migrating-an-on-premises-essbase-cube-to-the-cloud/image098/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image098.png" data-orig-size="552,449" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image098" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image098.png?w=300&#038;h=244" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image098.png?w=552" class="alignnone size-medium wp-image-1594" src="https://epmqueen.files.wordpress.com/2017/03/image098.png?w=300&#038;h=244" alt="" width="300" height="244" srcset="https://epmqueen.files.wordpress.com/2017/03/image098.png?w=300&amp;h=244 300w, https://epmqueen.files.wordpress.com/2017/03/image098.png?w=150&amp;h=122 150w, https://epmqueen.files.wordpress.com/2017/03/image098.png 552w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Perfect! I just need to reset some of the consolidation settings for some members so that members don’t roll up where it doesn’t make sense (like Locality Percentage).</p> <p>Some takeaways:</p> <p>· The dbxtool does not export column headings that are necessary for importing a cube into the cloud. You will need to add these.</p> <p>· If you have a lot of data, you may need to load data outside of the data tab in the workbook. Using BI Data Sync is a great option, especially if loading XLSX, CSV, or database data.</p> <p>· Double check the work of the dbxtool! Just for sanity’s sake.</p> <p>· There are more than one way to load a new/update a cube. Pick which one you like best!</p> <p>· You can now use the cube like you would any OP cube with Smart View, BICS (OAC), and Data Visualization. I wrote a post last week on how to connect DV to Essbase data sources. The link is <a href="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization/">here</a>.</p> <p>· The Typed Measures (Locality) did not come over in the migration. They were never exported with the dbxtool, so I did lose that in the process.</p> <p>If I had the workbook set up correctly for the dimensions and data, I probably could have done this process in about 30-45 minutes. Pretty quick, IMHO! Seeing the numbers tie on first try has given me confidence in the tool.</p> <p>Happy cube migrating!</p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/epmqueen.wordpress.com/1567/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/epmqueen.wordpress.com/1567/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=realtrigeek.com&#038;blog=70089387&#038;post=1567&#038;subd=epmqueen&#038;ref=&#038;feed=1" width="1" height="1" /> Sarah Craynon Zumbrum http://realtrigeek.com/?p=1567 Tue Mar 21 2017 11:15:24 GMT-0400 (EDT) Real World OBIEE: Demystification of Variables Pt. 2 http://www.rittmanmead.com/blog/2017/03/real-world-obiee-demystification-of-variables-pt-2/ <p>In <a href="https://www.rittmanmead.com/blog/2017/03/real-world-obiee-demystification-of-variables-pt-1/">part one</a> of this blog series, I went over using bins and presentation variables to dynamically create groups and switch between them in a report and on a dashboard. In part two, I am going to talk about making reports dynamic for periods of time using repository, system and presentation variables. Before I dive into an example, there are a couple of things I would like to cover first. </p> <p><strong>SYSDATE</strong></p> <p>The <em>sysdate</em> function returns the current datetime set by the system where the database resides. <em>Sysdate</em> is a really useful function for creating repository variables for use with date dimensions. If I go into SQL Developer, I can write a query to return the current <em>sysdate</em>:</p> <pre><code>select sysdate from dual;</code></pre> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-10.09.12-AM.png" alt=""></p> <p><strong>CURRENT_DATE</strong></p> <p>The <em>current_date</em> functions returns the current datetime set by the system where the bi server resides. This datetime may differ from sysdate depending on the geographical location of the database vs. the system that OBIEE resides on. I can write a query using sql developer to return the datetime using the <em>current_date</em> function:</p> <pre><code>select current_date from dual;</code></pre> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-10.32.54-AM.png" alt=""></p> <p>Since my database and OBIEE instance are on the same system, <em>sysdate</em> and <em>current_date</em> are the same. </p> <p><strong>TRUNCATE</strong></p> <p>When using <em>sysdate</em> or current_date to create repository variables for dates (which I am going to show in an upcoming example), you have to keep something in mind. While the date may match, the time may not. To show an example of this, I am going to join one of my date columns with sysdate.</p> <pre><code>select sysdate, dim_date_key from dual, gcbc_pef.dim_date where sysdate = dim_date_key;</code></pre> <p>If I run this query, I don't get an error but I get no results.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-10.48.59-AM.png" alt=""></p> <p>Why? To answer this, I need to write a query to inspect my date column.</p> <pre><code>select dim_date_key from gcbc_pef.dim_date;</code></pre> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-10.51.16-AM.png" alt=""></p> <p>As you can see by the results of my query, the <em>DIM_DATE_KEY</em> column does have the same format as sysdate but all the times are set to 00:00:00 (or midnight). To further demonstrate the difference between my date column and <em>sysdate</em>, I am going to write a new query and use the <em>TRUNC</em> (or <em>TRUNCATE</em>) function.</p> <pre><code>select sysdate, dim_date_key from dual, gcbc_pef.dim_date where trunc(sysdate) = dim_date_key;</code></pre> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-10.59.41-AM.png" alt=""></p> <p>As you can see, the query runs successfully but notice how <em>sysdate</em> and <em>DIM_DATE_KEY</em> still have different times. How is the join possible? Because I used the truncate function in the where clause in my query for <em>sysdate</em>. Without going into too much detail, using truncate on a date function without any formatting (which I will cover later) will set (or truncate) the datetime to the start (or midnight) of the current day. For example, if I run another query that just selects the truncated sysdate from dual, I get this result.</p> <pre><code>select trunc(sysdate) from dual;</code></pre> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-11.13.18-AM.png" alt=""></p> <p>Now, lets dive into an example.</p> <p><em>Note: For all of the examples in this blog series I am using OBIEE 12.2.1.2.0</em></p> <p><strong>The Scenario</strong></p> <p>In this example, I have been asked to create a report that is going to reside on a products dashboard. It needs to have the same product grouping as the report I used <a href="http://">part one</a> of this series, needs to contain Gross Rev $, Net Rev $ and # of Orders and have a prompt that can select between the first and current day of the month and every day in-between. The person who requested the report wants the prompt to change dynamically with each month and does not want users to be able to select future dates. </p> <p>There are two foreseeable challenges with this report. The first, and probably the most obvious, is how to make the date prompt for the current month and have it change dynamically with each month. The second is how to pass the dates into the report. </p> <p>There is one more challenge that I will have to tackle. There is a gap in the data loads for # of Orders. Data does not update until the 2nd or 3rd of each new month. This wouldn't be a big deal except the person who requested the report wants a summary of the previous months # of Orders to be shown until the data is updated for the current month. </p> <p>Fortunately, by using Repository, System and Presentation Variables, I can accomplish all of the requirements of this report. </p> <p><strong>The Example</strong></p> <p>For this example, I am going to start by creating Repository Variables to use with my date column in order to make the dates dynamic. There are other ways to make dates dynamic using functions within Answers but they are a little bit trickier to use and are less common. I am going to go over some of those functions in part three of this blog series.</p> <p>Repository Variables are created using the Admin Tool. By launching the Admin Tool and opening my RPD in online mode (can also be created offline), I can go to Manage > Variables to start creating my first Repository Variable.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-12.41.18-PM.png" alt=""></p> <p>From the Variable Manager window, I can create a Repository Variable by selecting Action > New > Repository > Variable.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-12.39.30-PM.png" alt=""></p> <p>I am going to start by creating the Repository Variable for the current date. Since this variable will be dynamic, I need to make sure I select the option 'Dynamic' and I am going to give it the name <em>USCurDate</em>. </p> <p>Now I need to create a new init block. I can do this by clicking <em>New...</em> </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-27-at-3.52.34-PM.png" alt=""></p> <p>Once in the Repository Variable Initialization Block screen, I need to give the init block a name, set the schedule for when variable or variables will be refreshed then click <em>Edit Data Source</em> to define the connection pool the init block will use as well as the initialization string (query) the init block will use to populate the Repository Variable. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-27-at-3.54.57-PM.png" alt=""></p> <p>In the data source window, I am going to set my connection pool to one I have created just for my init blocks and then type in the following into the initialization string window:</p> <pre><code>select TRUNC(sysdate) from dual;</code></pre> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-27-at-3.55.35-PM.png" alt=""></p> <p>If I click <em>Test</em>, the query will execute and will return a result.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-12.36.25-PM.png" alt=""></p> <p>Notice how the result is the same as the query I ran using SQL Developer earlier.</p> <p>Now I need to create a Repository Variable for the first day of every month. I am going to use the same method as before and name it USMoBeginDate. The query I am going to use is slightly different from the previous query. I still need to use the <em>TRUNC</em> function but I also need to apply formatting so that it truncates to the start of the month. I am going to enter the following into the initialization string window: </p> <pre><code>select TRUNC(sysdate, 'MM') from dual;</code></pre> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-1.09.42-PM.png" alt=""></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-1.02.37-PM.png" alt=""></p> <p>Some other useful queries I can use are:</p> <p><strong>First Day of the Current Year</strong></p> <pre><code>select TRUNC(sysdate, 'YY') from dual;</code></pre> <p><strong>Last Day of the Previous Year</strong></p> <pre><code>select TRUNC(sysdate, 'YY') -1 from dual;</code></pre> <p><strong>Previous Year Date</strong></p> <pre><code>select TRUNC(ADD_MONTHS(sysdate, -12)) from dual;</code></pre> <p>Now I need to create a Repository Variable for the previous month to use with my # of Orders measure column. Upon inspection, I discover that the column I need to use is called <em>Calendar Year Month</em> and is a <em>VARCHAR</em> or character type. If I go into Answers and pull in the <em>Calendar Year Month</em> column, I can see the format is '<em>YYYYMM</em>'</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-1.30.01-PM.png" alt=""></p> <p>To create the Repository Variable, I am going to use the same method as with the current date and first day of the current month Repository Variables and issue a new query. Because the <em>Calendar Year Month</em> column is a VARCHAR, I need to use the <em>to_char</em> function to change sysdate from a date type to a character type, use some formatting syntax and use some basic arithmetic. The query is as follows:</p> <pre><code>select to_char(to_number(to_char(sysdate, 'YYYY')) * 100 + to_number(to_char(sysdate, 'MM') -1)) from dual;</code></pre> <p>To break down each part of this query, lets start with the year. In order to use the 'YYYY' format I must first cast sysdate to a character (<em>to_char(sysdate, 'YYYY'</em>)). Then I need to cast that result back to and int so that I can multiply by 100. This will give me the result 201500.00. The reason for this is when I add the month number to my <em>yearx100</em>, there will always be a leading 0 for month numbers 1-9. To get the previous month number, I have to first cast sysdate to a character and use the formatting 'MM'. I then have to cast it back to an int and subtract 1 to get the previous month number (<em>to_number(to_char(sysdate, 'MM') -1</em>) then cast the entire statment back to a character type so that it matches the type for the <em>Calendar Year Month</em> column. When I run the query, I get this result.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-2.00.59-PM.png" alt=""></p> <p>Now that I have my three repository variables (USCurDate, USMoBeginDate and Prev_Month) I can start to create the report.</p> <p>Im going to fast forward a little bit to the part of the report creation process where I will use my Repository Variables I created using the Admin Tool. Since I am using virtually the same report as <a href="http://">part one</a> of this blog series, please refer back for how to create custom groups using bins and presentation variables and custom value prompts. </p> <p>Because of the delay in the data load for the # of Orders at the beginning of the month, I can not use a global report filter. Instead, I am going to have to use something called a <em>Filter Expression</em> within each measure column formula. </p> <p><strong>About Filter Expressions</strong></p> <p>Unlike global report filters, column formula level filter expressions are used when you need to specify a particular constraint within the column formula itself. Because the filter is at the column formula level, it is independent of any subsequent column filters.</p> <p><em>Note: When using a column formula filter for a measure, you can not add a global filter of the same data subject on top of it. For example, if using a column level filter for a particular Year and Month, I can not add a global filter for a particular year. The two filters contradict each other and the result will be null</em>.</p> <p>To add a filter in the column formula, go to Edit formula, make sure the column syntax is highlighted and click Filter.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-3.13.32-PM.png" alt=""></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-3.14.02-PM.png" alt=""></p> <p>From here the Insert Filter window will pop up and I can select the attribute column to filter the measure by. Here, I want to use the column Day Date to filter Gross Rev $ by the day.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-3.16.22-PM.png" alt=""></p> <p>I can add a column by double clicking it in the the Subject Areas pane. When a column is added, I will be prompted with a New Filter window and from here, everything is exactly the same process as adding a global report filter. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-3.19.10-PM.png" alt=""></p> <p>Here I need to define the operator as is between since we are dealing with date ranges. I could call my Repository Variables for current_date and first day of the month here but, because the request is for a prompt to select between date ranges, I am going to have to call Presentation Variables and use the prompt to populate the actual values. </p> <p><em>Note: If you are unsure about the functionality of Presentation Variables, see <a href="http://">part one</a> of this blog series</em></p> <p>To add Presentation Variables to the filter expression, click Add More Options and select Presentation Variable from the dropdown. </p> <p><img src="https://www.rittmanmead.com/blog/2017/03/real-world-obiee-demystification-of-variables-pt-1/" alt=""></p> <p>When a Presentation Variable is added to the filter, two new text boxes appear. The Variable Expr box is where you define the variable to be used and the (default) box is used to add a default value. The default value is optional but, when defining a Presentation Variable within a filter, you have to specify a default value in order to get any results. The reason for this is because, when the report is run, the query issued will use the Presentation Variable placeholder that is defined unless a default value is specified. In other words, the default value will always be used unless the Presentation Variable is populated with a value or a list of values.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-3.28.31-PM.png" alt=""></p> <p>Because I want the users to be able to specify a date range, I need to define two Presentation Variables: one for the start date and one for the end date. I can add another place for a Presentation Variable by simply clicking Add More Options again and selecting Presentation Variable.</p> <p>Now I need to add both my start and end date Presentation Variables in the Variable Expr boxes. I’m going to call my start date presentation variable <em>pv_start_dt</em> and my end date presentation variable <em>pv_end_dt</em>. I am also going to specify a default date range from the beginning of the current month (10/01/2015) to yesterday's date (10/15/2015).</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-3.34.16-PM.png" alt=""></p> <p>If I click OK, I will be taken back to the Insert Filter screen where I can see the filter expression previously defined.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-3.34.59-PM.png" alt=""></p> <p>Clicking OK again will return me to Edit Column Formula which shows the column formula with the filter expression defined in the previous steps.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-3.35.10-PM.png" alt=""></p> <p>Now I have to do the exact same thing for the Net Rev $ column. Since the filter expression is identical, I can simply copy and paste the column formula for Gross Rev $ and replace the column name in the expression. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-3.39.24-PM.png" alt=""></p> <p>Now I need to take care of the # of Orders column. This column is tricky because of the gap between the 1st and the 2nd or 3rd of every month. I could use a filter expression that defaults to the previous month by using the previous month repository variable I created in a previous step, but this alone wouldn’t switch over when the data became available.</p> <p>So how can we fulfill the requirement of the report if we don’t know the exact date in which the data will be available? This can be accomplished by using a CASE statement as shown previously in <a href="http://">part one</a> of this series. We can break the Case statement down into two parts or two conditions:</p> <p><strong>1.</strong> When the day for the current month is less than or equal to 2 OR if # of Orders is null, then filter # of Orders by Calendar Year Month using the value of the <em>Prev_Month</em> Repository Variable. </p> <p><strong>2.</strong> When condition one is not true, then filter # of Orders by Day Date between the values of the <em>pv_start_date</em> and the <em>pv_end_date</em> Presentation Variables</p> <p>Putting both conditions together and using the correct syntax for Column Formula results in the following formula:</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-3.51.42-PM.png" alt=""></p> <p>Note that I am using <em>CURRENT_DATE</em> in my column formula. In this case, I am extracting the day number from the current date by using the extract day function (<em>DAY(CURRENT_DATE)</em>). I am going to talk about this in further detail when I talk about using built in functions in Answers to make reports dynamic in part 3 of this series.</p> <p>Now I need to create my dashboard prompt. I am going to start by clicking on New > Dashboard Prompt.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-3.58.29-PM.png" alt=""></p> <p>I need to create two prompts: One for the start date and one for the end date. Because I am using presentation variables as placeholders for the date between values, I have to use a Variable Prompt instead of a Column Prompt. Variable Prompts allow us to define a presentation variable and then define a list of values for the users to select from. </p> <p>To create a Variable Prompt for Start Date, I can click on the new prompt icon and select Variable Prompt.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-4.05.01-PM.png" alt=""></p> <p>There a few things I need to do in order to make this prompt function for the report. First, I have to define the same presentation variable name (<em>pv_start_dt</em>) that I used in the filter expressions for the Gross Rev $, Net Rev $ and # of Orders columns. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-4.07.57-PM.png" alt=""></p> <p>Because this is not a column prompt, I have to manually specify the values I want the user to be able to select from. Rather than typing in each value, I can use the SQL Results option from the Choice List Values dropdown and use a SQL statement to select the exact values that I want.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-4.09.23-PM.png" alt=""></p> <p>This may seem daunting at first but there is a very straightforward way to accomplish this. Rather than manually writing out a SQL query, we can make use of the Advanced Tab within a new report. </p> <p>I’m going to start by clicking New > Analysis and selecting the column that I want values for: Day Date.</p> <p>I need to add a filter to Day Date so that it returns only the values I want to user to select from.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-4.10.58-PM.png" alt=""></p> <p>Now I need to select the operator to be is between and add two Repository Variables that I have set up: one for the first date of the current month and one for the current date of the current month.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-4.32.01-PM.png" alt=""></p> <p>If I go to results, I can see the data returned with the filter I have specified.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-4.32.33-PM.png" alt=""></p> <p>As you can see, the Day Date column only contains the values from the first of the month to the current date (October, 16th 2015 in this example)</p> <p>Now for the good stuff. I can navigate to the Advanced Tab and copy the SQL statement used to generate these values and paste them into the SQL Results text box in my prompt.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-4.34.15-PM.png" alt=""></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-4.38.18-PM.png" alt=""></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-4.41.29-PM.png" alt=""></p> <p>You will notice that within the SQL Statement generated by OBI, <br> there are numbers and s_# between the SELECT and Day Date column, after the Day Date column and there is also an order by clause that uses a number “2”. Without going into too much detail, this what OBI uses to make the query more efficient when retrieving results from the database. In order to allow the values to populate the prompt, these have to be removed in OBIEE 12c and the “ORDER BY” clause has to be rewritten in order to make it work. </p> <p><strong>This</strong></p> <pre><code>SELECT 0 s_0, "Sales - Fact Sales"."Periods"."Day Date" s_1 FROM "Sales - Fact Sales" WHERE ("Periods"."Day Date" BETWEEN VALUEOF("USMoBeginDate") AND VALUEOF("USCurDate")) ORDER BY 2 ASC NULLS LAST FETCH FIRST 65001 ROWS ONLY</code></pre> <p><strong>Changed to this</strong></p> <pre><code>SELECT "Sales - Fact Sales"."Periods"."Day Date" FROM "Sales - Fact Sales" WHERE ("Periods"."Day Date" BETWEEN VALUEOF("USMoBeginDate") AND VALUEOF("USCurDate")) ORDER BY "Periods"."Day Date" ASC FETCH FIRST 65001 ROWS ONLY</code></pre> <p>This can be a bit confusing if you are not very familiar with SQL but just remember: </p> <p>When populating a prompt using an SQL statement in OBIEE 12c, take out any number and anything that begins with “s<em>” between the SELECT and first column and anything that begins with “s</em>” after any subsequent columns and make sure the “ORDER BY” clause contains the actual column name of the column you want to order by. </p> <p><em>Note: If you do not require any values to be in order, you can omit the “ORDER BY” clause all together</em>.</p> <p>If I expand Options in the Edit Prompt window, I can add a default selection or a default value that the prompt will start with. I can use the USMoBeginDate here as well so that the prompt always starts with the first date of every month as the start date.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-4.48.46-PM.png" alt=""></p> <p><em>Note: You will notice that under Options in the Edit Prompt window there is a Variable Data Type option with a dropdown selector. This can be used if the data type needs to be specified to something other than the default which is ‘text’ or character type. If you are getting an error when running the report that says “Selected value does not match datatype. Expected [this value] but got [this value]” you need to change the Variable Data Type to the datatype of the column you are prompting on. In this example, we are prompting a date datatype so therefore it needs to be set to date</em>.</p> <p>If I click OK, I can check the values in the display window by clicking the dropdown for the Start Date prompt I just created.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/Screen-Shot-2017-03-01-at-9.30.08-AM.png" alt=""></p> <p>The blue checkmark indicates the value that is selected which, because the first date of every month was set by using the USMoBeginDate Repository Variable as the default value, defaults to the first date of the current month (October, 1st 2015) in this example. </p> <p>Now I need to create another Variable Prompt for the End Date. The SQL statement used for Start Date can be reused for the values as we want the exact same values to be available for selection. I am going to specify the presentation variable to be named pv<em>end</em>dt, and the default value to be the USCurDate Repository Variable so that the End Date prompt always defaults to the current date.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-4.53.31-PM.png" alt=""></p> <p>Now all that’s left to do is put the prompt and report on the Dashboard. Here is the result.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-4.55.02-PM.png" alt=""></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-4.55.19-PM.png" alt=""></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-28-at-4.55.39-PM.png" alt=""></p> <p>So that concludes part 2 of Demystification of Variables. Please feel free to ask questions or leave me a comment! In part 3, I am going to talk about using built in front end functions and presentation variables to make reports dynamic for any series of time. Until next time.</p> Matthew Walding abbfd7f4-021f-4763-8fa0-dbe4144fa644 Tue Mar 21 2017 10:00:00 GMT-0400 (EDT) Kscope17 Preview: Your Destination Awaits http://www.odtug.com/p/bl/et/blogaid=685&source=1 Kscope12, my very first Kscope and the one that shares this year's location, was a superbly unique event. In last year's ODTUG Cinco de Mayo #tbt Twitter party ("tbt" = "ThrowBack Thursday" for those of you who don't use Twitter), pictures from Kscope12 kept surfacing attached to fond memories... ODTUG http://www.odtug.com/p/bl/et/blogaid=685&source=1 Mon Mar 20 2017 11:09:55 GMT-0400 (EDT) March ODTUG News http://www.odtug.com/p/bl/et/blogaid=687&source=1 ODTUG celebrated its 20th birthday! The ODTUG News will keep you up to date on ODTUG Kscope17 updates, events, and sponsorship opportunities. Read more to learn about Meetups and events in your area, and mark your calendars for our upcoming March and April webinars. ODTUG http://www.odtug.com/p/bl/et/blogaid=687&source=1 Mon Mar 20 2017 11:04:27 GMT-0400 (EDT) A Performance Analytics Application Case Study: Challenges and Successes http://www.rittmanmead.com/blog/2017/03/a-performance-analytics-application-case-study-challenges-and-successes/ <p>The Performance Analytics application is a collection of open source technologies that aids users in: identifying performance bottlenecks, identifying causes for slow report execution, discovering areas for performance optimization, and gathering meaningful insights into the health of an OBIEE environment.</p> <p>This post focuses on lessons learned after a successful Performance Analytics application installation, where within one day of being operational it enabled us to identify and isolate a long-standing memory issue. Here's how.</p> <p><img src="https://www.rittmanmead.com/blog/content/images/2016/05/0784pad_ani_04.gif" width="95%" alt="OBIEE Performance Analytics Dashboards"></p> <h1 id="overview">Overview</h1> <p>Rittman Mead recently undertook an engagement with the remit to:</p> <ul> <li>Carry out a health check on the current state of an OBIEE platform, architecture, and development process</li> <li>Install the Rittman Mead Performance Analytics application, enabling rapid and accurate diagnostics of OBIEE issues</li> </ul> <p>The client was on OBIEE 11g, having previously upgraded from 10g. OBIEE Production environment was a three-node cluster running the latest version of the 11g release. It served around 150 users daily, of a registered user base of around 1000.</p> <p>The client had a long-standing issue with memory alerts on the master node of OBIEE cluster, but no evident architectural, hardware capacity, or software configuration issues were found after completing the health check.</p> <h1 id="challengesandsuccesses">Challenges and successes</h1> <h2 id="gatherallrelevantdata">Gather all relevant data</h2> <p>Performance Analytics gathers data from a variety of sources in order to provide a full stack view of the OBIEE environment.</p> <ul> <li><p><strong>Active Session History (ASH)</strong> - The Active Session History data is read from the v$ACTIVE_SESSION_HISTORY system database view. Access to this data allows Performance Analytics users to have an understanding of the performance and state of the database at a given point it time as it provides information such as the SQL operation being performed, which application is executing the query, whether the query is actively being performed or is waiting for service, what state of execution the query is in, and many other useful statistics.</p></li> <li><p><strong>Operating System Metrics</strong> - Unix-based Operating Systems contain several commands used to gather information about the performance or status of the server such as vmstat, iostat, netstat, top and df. Performance Analytics utilizes the output of these commands to display the current status of the OS at a given point in time.</p></li> <li><p><strong>Usage Tracking</strong> - The Oracle BI Server supports the collection of usage tracking data. When usage tracking is enabled, the Oracle BI Server collects usage tracking data for each query, and it writes statistics to a usage tracking log file or inserts them directly into a database table. Access to this data allows Performance Analytics users to have an understanding of the performance of the BI Server and specific reports in the OBIEE environment at any given point in time.</p></li> <li><p><strong>OBIEE metrics</strong> - OBIEE has the capability to expose internal performance data through the Dynamic Monitoring Service (DMS). The data exposed contains information such as Connection Pool statistics, JVM statistics, the number of active threads, and much more. Access to this data allows Performance Analytics to record the current status of many of the OBIEE components and intricacies found within the tool.</p></li> </ul> <p>Performance Analytics was deployed using Docker in a couple of days, requiring absolutely no software installation on any machine other than the monitoring server. All configuration settings are held in one file, and it was sufficient to add connection details of each server to it in order to gather all aforementioned data.</p> <h2 id="accuratelydiagnoseissues">Accurately diagnose issues</h2> <p>By combining operating system metrics (CPU, memory, etc.) with internal OBIEE metrics and those from the database, Performance Analytics gives a "single pane of glass" view on the behaviour of the whole stack. This enables correlations in behaviour to be easily identified, and issues drilled into using the analysis capabilities of the tool.</p> <p>Within a day of being installed, Performance Analytics enabled the client to accurately diagnose a long-standing issue with memory alerts on OBIEE master node. The cause was traced to the export to Excel of a large dataset by a single user.</p> <h2 id="workloadplanning">Workload Planning</h2> <p>Performance Analytics allows to capture system status and workload over time, so you can see how the system is responding to peak loads in real-time.</p> <p>With Performance Analytics the client is now able to estimate maximum workload the current architecture can support before starting to see issues and whether it is going to cope with the next years workload.</p> <h1 id="conclusion">Conclusion</h1> <blockquote> <p>Performance Analytics just paid for itself.</p> </blockquote> <p>Performance Analytics collects all relevant data and makes it accessible from one central location, allowing users to investigate performance inquiries promptly and simply. Instead of forcing users to dig through database records or a linux server manually, they can access all of the same data through a set of dashboards engineered to facilitate discovery from the collected data.</p> <p>If you’d like to find out more about the Performance Analytics service offered by Rittman Mead, please <a href="mailto:info+fvpa@rittmanmead.com">get in touch</a>.</p> Federico Venturin 838e85a9-b202-43f3-be36-6c94e899326a Mon Mar 20 2017 11:00:00 GMT-0400 (EDT) Oracle Analytics Cloud Release - Blog Hop Takeaways http://www.odtug.com/p/bl/et/blogaid=686&source=1 If you haven’t heard already, Oracle Analytics Cloud (OAC) is officially released! This includes the Essbase Cloud (EssCS), Business Intelligence Cloud (BICS), and Data Visualization Cloud (DVCS). Find out more here! ODTUG http://www.odtug.com/p/bl/et/blogaid=686&source=1 Fri Mar 17 2017 14:34:06 GMT-0400 (EDT) EssCS Command Line Scripts https://realtrigeek.com/2017/03/17/esscs-command-line-scripts/ <p>Short and sweet post&#8230;a follow up will come later with more details!</p> <p>If you have played around with Essbase Cloud Service (EssCS) at all, you may have noticed a couple items on the Utilities tab. Specifically the &#8220;Export Utility&#8221; and the &#8220;Command Line Tool&#8221;.</p> <p><img data-attachment-id="1508" data-permalink="https://realtrigeek.com/2017/03/17/esscs-command-line-scripts/1-8/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/110.png?w=840" data-orig-size="1715,373" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="1" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/110.png?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/110.png?w=840?w=840" class=" size-full wp-image-1508 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/110.png?w=840" alt="1" srcset="https://epmqueen.files.wordpress.com/2017/03/110.png?w=840 840w, https://epmqueen.files.wordpress.com/2017/03/110.png?w=1680 1680w, https://epmqueen.files.wordpress.com/2017/03/110.png?w=150 150w, https://epmqueen.files.wordpress.com/2017/03/110.png?w=300 300w, https://epmqueen.files.wordpress.com/2017/03/110.png?w=768 768w, https://epmqueen.files.wordpress.com/2017/03/110.png?w=1024 1024w" sizes="(max-width: 840px) 100vw, 840px" /></p> <p>I download these to see how they worked and hope to save you the time it took me to figure the scripts out!</p> <p><span style="text-decoration:underline;">Export Utility</span> &#8211; export an Essbase outline to an Excel-formatted book that can be uploaded to EssCS.</p> <p>When you download the Export Utility, it will download a zipped file named &#8220;dbxtool.zip&#8221;. I unzipped this to my C:\ directory and went exploring. The first place I stopped was the readme.txt to get some clarification on what to do to export the outline.</p> <p><img data-attachment-id="1518" data-permalink="https://realtrigeek.com/2017/03/17/esscs-command-line-scripts/2-10/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/23.png?w=840" data-orig-size="1010,108" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="2" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/23.png?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/23.png?w=840?w=840" class=" size-full wp-image-1518 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/23.png?w=840" alt="2" srcset="https://epmqueen.files.wordpress.com/2017/03/23.png?w=840 840w, https://epmqueen.files.wordpress.com/2017/03/23.png?w=150 150w, https://epmqueen.files.wordpress.com/2017/03/23.png?w=300 300w, https://epmqueen.files.wordpress.com/2017/03/23.png?w=768 768w, https://epmqueen.files.wordpress.com/2017/03/23.png 1010w" sizes="(max-width: 840px) 100vw, 840px" /></p> <p>Well, that doesn&#8217;t help. And the Help guide didn&#8217;t help with this, either.</p> <p>So, I decided to open the export.bat in Notepad++ in the folder C:\dbxtool\dbxtool\bin</p> <p><img data-attachment-id="1523" data-permalink="https://realtrigeek.com/2017/03/17/esscs-command-line-scripts/3-9/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/31.png?w=840" data-orig-size="1914,589" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="3" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/31.png?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/31.png?w=840?w=840" class=" size-full wp-image-1523 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/31.png?w=840" alt="3" srcset="https://epmqueen.files.wordpress.com/2017/03/31.png?w=840 840w, https://epmqueen.files.wordpress.com/2017/03/31.png?w=1677 1677w, https://epmqueen.files.wordpress.com/2017/03/31.png?w=150 150w, https://epmqueen.files.wordpress.com/2017/03/31.png?w=300 300w, https://epmqueen.files.wordpress.com/2017/03/31.png?w=768 768w, https://epmqueen.files.wordpress.com/2017/03/31.png?w=1024 1024w" sizes="(max-width: 840px) 100vw, 840px" /></p> <p>I see that it&#8217;s not a GUI, but, rather, and command line interface. I&#8217;ll try to open it via the command line (Run as Administrator).</p> <p>When I try to run &#8220;export.bat&#8221;, I am hit with my missing parameters. Progress!</p> <p><img data-attachment-id="1527" data-permalink="https://realtrigeek.com/2017/03/17/esscs-command-line-scripts/4-9/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/41.png?w=840" data-orig-size="979,514" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="4" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/41.png?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/41.png?w=840?w=840" class=" size-full wp-image-1527 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/41.png?w=840" alt="4" srcset="https://epmqueen.files.wordpress.com/2017/03/41.png?w=840 840w, https://epmqueen.files.wordpress.com/2017/03/41.png?w=150 150w, https://epmqueen.files.wordpress.com/2017/03/41.png?w=300 300w, https://epmqueen.files.wordpress.com/2017/03/41.png?w=768 768w, https://epmqueen.files.wordpress.com/2017/03/41.png 979w" sizes="(max-width: 840px) 100vw, 840px" /></p> <p>So, if I am to run this export script successfully, it should look like the following:</p> <p><img data-attachment-id="1534" data-permalink="https://realtrigeek.com/2017/03/17/esscs-command-line-scripts/5-10/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/52.png?w=840" data-orig-size="979,103" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="5" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/52.png?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/52.png?w=840?w=840" class=" size-full wp-image-1534 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/52.png?w=840" alt="5" srcset="https://epmqueen.files.wordpress.com/2017/03/52.png?w=840 840w, https://epmqueen.files.wordpress.com/2017/03/52.png?w=150 150w, https://epmqueen.files.wordpress.com/2017/03/52.png?w=300 300w, https://epmqueen.files.wordpress.com/2017/03/52.png?w=768 768w, https://epmqueen.files.wordpress.com/2017/03/52.png 979w" sizes="(max-width: 840px) 100vw, 840px" /></p> <p>export -server {servername}:1423 -application {appname} -cube {databasename} -data -user {username} -password {password} -path {exportpath}</p> <p>Note that &#8220;-data&#8221; will export all the data in the database and is NOT required!</p> <p>Because port 32776 is not open on my server, this will fail. &#8230;Which is why a follow up will come as soon as the port is open!</p> <p><img data-attachment-id="1540" data-permalink="https://realtrigeek.com/2017/03/17/esscs-command-line-scripts/6-9/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/61.png?w=840" data-orig-size="979,212" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="6" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/61.png?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/61.png?w=840?w=840" class=" size-full wp-image-1540 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/61.png?w=840" alt="6" srcset="https://epmqueen.files.wordpress.com/2017/03/61.png?w=840 840w, https://epmqueen.files.wordpress.com/2017/03/61.png?w=150 150w, https://epmqueen.files.wordpress.com/2017/03/61.png?w=300 300w, https://epmqueen.files.wordpress.com/2017/03/61.png?w=768 768w, https://epmqueen.files.wordpress.com/2017/03/61.png 979w" sizes="(max-width: 840px) 100vw, 840px" /></p> <p>Now you know how to use the Export Utility!</p> <p><span style="text-decoration:underline;">Command Line Tool</span> &#8211; a way to interact with EssCS cubes via the command line.</p> <p>Unlike the Export Utility, the Command Line Tool (CLI) had a readme.txt that was helpful.</p> <p><img data-attachment-id="1548" data-permalink="https://realtrigeek.com/2017/03/17/esscs-command-line-scripts/7-8/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/71.png?w=840" data-orig-size="1440,512" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="7" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/71.png?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/71.png?w=840?w=840" class=" size-full wp-image-1548 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/71.png?w=840" alt="7" srcset="https://epmqueen.files.wordpress.com/2017/03/71.png?w=840 840w, https://epmqueen.files.wordpress.com/2017/03/71.png?w=150 150w, https://epmqueen.files.wordpress.com/2017/03/71.png?w=300 300w, https://epmqueen.files.wordpress.com/2017/03/71.png?w=768 768w, https://epmqueen.files.wordpress.com/2017/03/71.png?w=1024 1024w, https://epmqueen.files.wordpress.com/2017/03/71.png 1440w" sizes="(max-width: 840px) 100vw, 840px" /></p> <p>The very (!) first thing you need to do is redirect your JAVA_HOME environment variable to jdk1.8 (you may need to download it first!). For another piece of software I use, I am required to use 1.7, so I needed to reset the JAVA_HOME from 1.7 to 1.8. And note it is JDK, not JRE! I made this mistake, please don&#8217;t you make it either!</p> <p>I was able to run this the same way I ran the Export Utility, via the command line as an administrator. Since the readme.txt was helpful, I got started on this tool right away. Again, I just wanted to see how it worked versus using it for real purposes (well, I guess logging in is real&#8230;). I can trust the readme.txt!</p> <p><img data-attachment-id="1553" data-permalink="https://realtrigeek.com/2017/03/17/esscs-command-line-scripts/8-8/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/81.png?w=840" data-orig-size="979,514" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="8" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/81.png?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/81.png?w=840?w=840" class=" size-full wp-image-1553 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/81.png?w=840" alt="8" srcset="https://epmqueen.files.wordpress.com/2017/03/81.png?w=840 840w, https://epmqueen.files.wordpress.com/2017/03/81.png?w=150 150w, https://epmqueen.files.wordpress.com/2017/03/81.png?w=300 300w, https://epmqueen.files.wordpress.com/2017/03/81.png?w=768 768w, https://epmqueen.files.wordpress.com/2017/03/81.png 979w" sizes="(max-width: 840px) 100vw, 840px" /></p> <p>From here you can do many things such as export/import an LCM file, build dimensions, load data, execute scripts&#8230;many things. Have a look!</p> <p>&nbsp;</p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/epmqueen.wordpress.com/1504/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/epmqueen.wordpress.com/1504/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=realtrigeek.com&#038;blog=70089387&#038;post=1504&#038;subd=epmqueen&#038;ref=&#038;feed=1" width="1" height="1" /> Sarah Craynon Zumbrum http://realtrigeek.com/?p=1504 Fri Mar 17 2017 08:30:05 GMT-0400 (EDT) Essbase/EssCS as a Data Source in Oracle Data Visualization https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization/ <p><a href="https://cloud.oracle.com/en_US/paas" target="_blank">Oracle Analytics Cloud (OAC)</a> released today! There are many new and updated features to <a href="https://cloud.oracle.com/en_US/business_intelligence" target="_blank">Business Intelligence Cloud Service</a> and <a href="https://cloud.oracle.com/en_US/data-visualization" target="_blank">Data Visualization</a> as well as a new cloud service – <a href="https://cloud.oracle.com/en_US/essbase" target="_blank">Essbase Cloud Service</a> (EssCS)! There are quite a few people I have joined with today to help release OAC via a &#8220;blog hop&#8221; about the new service.</p> <p><em>If you want to learn more about OAC, check out the blog hop participant posts below! What is a blog hop? A blog hop is a group of bloggers who all get together to blog on a particular topic. We share each other&#8217;s blog posts in an attempt to share a lot of great information in one place. Enjoy!</em></p> <ul> <li><a href="https://womaninepm.com/2017/03/17/oac-series-finally-released">Opal Alapat</a>, interRel Consulting</li> <li><a href="http://redpillanalytics.com/introducing-oracle-analytics-cloud/">Stewart Bryson</a>, RedPill Analytics</li> <li><a href="http://integrationmadesimple.blogspot.com/2017/03/oac-metadata-management.html">Brian Dandeneau</a>, interRel Consulting</li> <li><a href="http://www.cubecoder.com/essbase-cloud-for-the-on-prem-crowd/">Tim German</a>, Qubix</li> <li><a href="http://camerons-blog-for-essbase-hackers.blogspot.com/2017/03/head-in-essbase-cloud-no-1-blessed-event.html">Cameron Lackpour</a>, ARC EPM Consulting</li> <li><a href="http://bimobilelabs.com/post/158496839700/OACMobileOptions">Matt Milella</a>, Oracle</li> <li><a href="http://glennschwartzbergs-essbase-blog.blogspot.com/2017/03/essbase-cloud-service-is-it-here-or.html">Glenn Schwartzberg</a>, interRel Consulting</li> <li><a href="https://epmsxsw.com/2017/03/17/you-down-with-oac-yeah-you-know-me">Summer Watson</a>, interRel Consulting</li> <li><a href="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization">Sarah Zumbrum</a>, Oracle</li> </ul> <p>Onto my part of the OAC blog hop release&#8230;</p> <p>My portion consists of establishing and using EssCS/Essbase as a data source in Oracle Data Visualization (DV). Note that the screenshots for DV look the same in the cloud as on Data Visualization Desktop. I’m using the cloud as my example today because it’s new!</p> <p>When you first log into OAC, you will be brought to the homepage. From here, you can go many places, but we are going to focus on creating a new Data Source then create visualizations on Essbase data sources.</p> <p><img data-attachment-id="1438" data-permalink="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization/1-7/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/1.png?w=840" data-orig-size="1920,1080" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="1" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/1.png?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/1.png?w=840?w=840" class=" size-full wp-image-1438 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/1.png?w=840" alt="1" srcset="https://epmqueen.files.wordpress.com/2017/03/1.png?w=840 840w, https://epmqueen.files.wordpress.com/2017/03/1.png?w=1680 1680w, https://epmqueen.files.wordpress.com/2017/03/1.png?w=150 150w, https://epmqueen.files.wordpress.com/2017/03/1.png?w=300 300w, https://epmqueen.files.wordpress.com/2017/03/1.png?w=768 768w, https://epmqueen.files.wordpress.com/2017/03/1.png?w=1024 1024w" sizes="(max-width: 840px) 100vw, 840px" /></p> <p>To create EssCS (or Essbase) as a Data Source, click the “Data Source” icon.</p> <p><img data-attachment-id="1439" data-permalink="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization/2-9/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/2.png?w=840" data-orig-size="517,121" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="2" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/2.png?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/2.png?w=840?w=517" class=" size-full wp-image-1439 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/2.png?w=840" alt="2" srcset="https://epmqueen.files.wordpress.com/2017/03/2.png 517w, https://epmqueen.files.wordpress.com/2017/03/2.png?w=150 150w, https://epmqueen.files.wordpress.com/2017/03/2.png?w=300 300w" sizes="(max-width: 517px) 100vw, 517px" /></p> <p>You will see all data sources already established. These range from BI Subject Areas, to Excel Files, Database connections, Oracle Applications connections, Connections, and Data Flows.</p> <p>Click on “Connections”.</p> <p>When you do this, you will be shown a filter of the data sources that are connections.</p> <p><img data-attachment-id="1440" data-permalink="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization/3-8/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/3.png?w=840" data-orig-size="291,617" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="3" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/3.png?w=840?w=141" data-large-file="https://epmqueen.files.wordpress.com/2017/03/3.png?w=840?w=291" class=" size-full wp-image-1440 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/3.png?w=840" alt="3" srcset="https://epmqueen.files.wordpress.com/2017/03/3.png 291w, https://epmqueen.files.wordpress.com/2017/03/3.png?w=71 71w" sizes="(max-width: 291px) 100vw, 291px" /></p> <p>To create a new connection, click “Connection” in the bottom left-hand side of the screen.</p> <p><img data-attachment-id="1441" data-permalink="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization/4-8/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/4.png?w=840" data-orig-size="922,841" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="4" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/4.png?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/4.png?w=840?w=840" class=" size-full wp-image-1441 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/4.png?w=840" alt="4" srcset="https://epmqueen.files.wordpress.com/2017/03/4.png?w=840 840w, https://epmqueen.files.wordpress.com/2017/03/4.png?w=150 150w, https://epmqueen.files.wordpress.com/2017/03/4.png?w=300 300w, https://epmqueen.files.wordpress.com/2017/03/4.png?w=768 768w, https://epmqueen.files.wordpress.com/2017/03/4.png 922w" sizes="(max-width: 840px) 100vw, 840px" /></p> <p>Choose “Oracle Essbase (Beta)” as the connection type.</p> <p>Note: Although it shows the connection type as beta, Oracle is working to make this connection fully supported very soon!</p> <p><img data-attachment-id="1442" data-permalink="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization/5-8/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/5.png?w=840" data-orig-size="704,493" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="5" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/5.png?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/5.png?w=840?w=704" class=" size-full wp-image-1442 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/5.png?w=840" alt="5" srcset="https://epmqueen.files.wordpress.com/2017/03/5.png 704w, https://epmqueen.files.wordpress.com/2017/03/5.png?w=150 150w, https://epmqueen.files.wordpress.com/2017/03/5.png?w=300 300w" sizes="(max-width: 704px) 100vw, 704px" /></p> <p>Give your Essbase connection the following details:<br /> Name: Whatever you would like<br /> DSN: {server}:1423 if on-premises; {ipaddress/domain}:1423 if cloud<br /> Username/Password: self-explanatory<br /> Authentication: Choose if you want to use the same login info each time, or if you want the users to provide their own credentials.</p> <p>Why is this important (and really cool)? Say if you create a dashboard but only want certain departments to see their own data, but you don’t want to make 100 dashboards, you can utilize the row-based security in Essbase, Business Intelligence, the databases, etc to do the filtering for you. You end up making/maintaining one dashboard, not 100!</p> <p>For the sake of demonstration, I chose “Always use this username and password”.</p> <p><img data-attachment-id="1443" data-permalink="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization/6-8/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/6.png?w=840" data-orig-size="705,494" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="6" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/6.png?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/6.png?w=840?w=705" class=" size-full wp-image-1443 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/6.png?w=840" alt="6" srcset="https://epmqueen.files.wordpress.com/2017/03/6.png 705w, https://epmqueen.files.wordpress.com/2017/03/6.png?w=150 150w, https://epmqueen.files.wordpress.com/2017/03/6.png?w=300 300w" sizes="(max-width: 705px) 100vw, 705px" /></p> <p>After you click “Save”, you will get a visual confirmation that the connection has been added with the green box at the top of the screen and by seeing the connection now in the list.</p> <p><img data-attachment-id="1444" data-permalink="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization/7-7/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/7.png?w=840" data-orig-size="969,422" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="7" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/7.png?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/7.png?w=840?w=840" class=" size-full wp-image-1444 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/7.png?w=840" alt="7" srcset="https://epmqueen.files.wordpress.com/2017/03/7.png?w=840 840w, https://epmqueen.files.wordpress.com/2017/03/7.png?w=150 150w, https://epmqueen.files.wordpress.com/2017/03/7.png?w=300 300w, https://epmqueen.files.wordpress.com/2017/03/7.png?w=768 768w, https://epmqueen.files.wordpress.com/2017/03/7.png 969w" sizes="(max-width: 840px) 100vw, 840px" /></p> <p>To create a data source off this new connection, when you hover over the connection name, you will see vertical ellipsis show. Click “Create New Data Source”.</p> <p><img data-attachment-id="1445" data-permalink="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization/8-7/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/8.png?w=840" data-orig-size="786,392" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="8" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/8.png?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/8.png?w=840?w=786" class=" size-full wp-image-1445 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/8.png?w=840" alt="8" srcset="https://epmqueen.files.wordpress.com/2017/03/8.png 786w, https://epmqueen.files.wordpress.com/2017/03/8.png?w=150 150w, https://epmqueen.files.wordpress.com/2017/03/8.png?w=300 300w, https://epmqueen.files.wordpress.com/2017/03/8.png?w=768 768w" sizes="(max-width: 786px) 100vw, 786px" /></p> <p>You will be shown all of the Essbase applications and databases available for you to connect to in DV.</p> <p><img data-attachment-id="1446" data-permalink="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization/9-6/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/9.png?w=840" data-orig-size="890,282" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="9" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/9.png?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/9.png?w=840?w=840" class=" size-full wp-image-1446 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/9.png?w=840" alt="9" srcset="https://epmqueen.files.wordpress.com/2017/03/9.png?w=840 840w, https://epmqueen.files.wordpress.com/2017/03/9.png?w=150 150w, https://epmqueen.files.wordpress.com/2017/03/9.png?w=300 300w, https://epmqueen.files.wordpress.com/2017/03/9.png?w=768 768w, https://epmqueen.files.wordpress.com/2017/03/9.png 890w" sizes="(max-width: 840px) 100vw, 840px" /></p> <p>I chose “Federal.Budget” for my example. Once the database is chosen, it will show in your “Databases” list.</p> <p><img data-attachment-id="1447" data-permalink="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization/10-5/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/10.png?w=840" data-orig-size="807,371" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="10" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/10.png?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/10.png?w=840?w=807" class=" size-full wp-image-1447 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/10.png?w=840" alt="10" srcset="https://epmqueen.files.wordpress.com/2017/03/10.png 807w, https://epmqueen.files.wordpress.com/2017/03/10.png?w=150 150w, https://epmqueen.files.wordpress.com/2017/03/10.png?w=300 300w, https://epmqueen.files.wordpress.com/2017/03/10.png?w=768 768w" sizes="(max-width: 807px) 100vw, 807px" /></p> <p>From here, you can choose to create a Project (in DV) or Analysis (that can be used in BI). Choose Project and you are ready to go!</p> <p><img data-attachment-id="1448" data-permalink="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization/11-4/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/11.png?w=840" data-orig-size="337,293" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="11" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/11.png?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/11.png?w=840?w=337" class=" size-full wp-image-1448 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/11.png?w=840" alt="11" srcset="https://epmqueen.files.wordpress.com/2017/03/11.png 337w, https://epmqueen.files.wordpress.com/2017/03/11.png?w=150 150w, https://epmqueen.files.wordpress.com/2017/03/11.png?w=300 300w" sizes="(max-width: 337px) 100vw, 337px" /></p> <p>To show different ideas on data options, I’ve changed the Essbase database I’m connecting to for this blog post. In DV, if I click on the first icon on the left side of the screen (the data sources tab), I can right-click on my data source name and choose different options for that data source. I’m going to example “Inspect”.</p> <p><img data-attachment-id="1449" data-permalink="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization/12-4/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/12.png?w=840" data-orig-size="287,245" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="12" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/12.png?w=840?w=287" data-large-file="https://epmqueen.files.wordpress.com/2017/03/12.png?w=840?w=287" class=" size-full wp-image-1449 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/12.png?w=840" alt="12" srcset="https://epmqueen.files.wordpress.com/2017/03/12.png 287w, https://epmqueen.files.wordpress.com/2017/03/12.png?w=150 150w" sizes="(max-width: 287px) 100vw, 287px" /></p> <p>On the “Inspect” tab, I see the details of the connections…</p> <p><img data-attachment-id="1450" data-permalink="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization/13-4/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/13.png?w=840" data-orig-size="777,490" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="13" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/13.png?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/13.png?w=840?w=777" class=" size-full wp-image-1450 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/13.png?w=840" alt="13" srcset="https://epmqueen.files.wordpress.com/2017/03/13.png 777w, https://epmqueen.files.wordpress.com/2017/03/13.png?w=150 150w, https://epmqueen.files.wordpress.com/2017/03/13.png?w=300 300w, https://epmqueen.files.wordpress.com/2017/03/13.png?w=768 768w" sizes="(max-width: 777px) 100vw, 777px" /></p> <p>…As well as the permissions I can give the data source.</p> <p><img data-attachment-id="1451" data-permalink="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization/14-4/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/14.png?w=840" data-orig-size="779,488" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="14" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/14.png?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/14.png?w=840?w=779" class=" size-full wp-image-1451 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/14.png?w=840" alt="14" srcset="https://epmqueen.files.wordpress.com/2017/03/14.png 779w, https://epmqueen.files.wordpress.com/2017/03/14.png?w=150 150w, https://epmqueen.files.wordpress.com/2017/03/14.png?w=300 300w, https://epmqueen.files.wordpress.com/2017/03/14.png?w=768 768w" sizes="(max-width: 779px) 100vw, 779px" /></p> <p>In the second tab on the left, we have our data elements (columns) that we can use in our visualizations.</p> <p>Notice the pound sign (not a hashtag, you millennials) and the A. The pound sign signifies that the data element is a numerical value. The A represents an attribute. Note that there is also a “clock” that signifies a date and/or time data element.</p> <p><img data-attachment-id="1452" data-permalink="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization/15-4/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/15.png?w=840" data-orig-size="290,370" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="15" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/15.png?w=840?w=235" data-large-file="https://epmqueen.files.wordpress.com/2017/03/15.png?w=840?w=290" class=" size-full wp-image-1452 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/15.png?w=840" alt="15" srcset="https://epmqueen.files.wordpress.com/2017/03/15.png 290w, https://epmqueen.files.wordpress.com/2017/03/15.png?w=118 118w" sizes="(max-width: 290px) 100vw, 290px" /></p> <p>The third option in the list is where you can apply Advanced Analytics, if you would like. You can drag and drop these onto a canvas or right-click the option and choose “Add to visualization”. Simple enough!</p> <p><img data-attachment-id="1453" data-permalink="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization/16-4/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/16.png?w=840" data-orig-size="316,240" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="16" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/16.png?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/16.png?w=840?w=316" class=" size-full wp-image-1453 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/16.png?w=840" alt="16" srcset="https://epmqueen.files.wordpress.com/2017/03/16.png 316w, https://epmqueen.files.wordpress.com/2017/03/16.png?w=150 150w, https://epmqueen.files.wordpress.com/2017/03/16.png?w=300 300w" sizes="(max-width: 316px) 100vw, 316px" /></p> <p>Now we are in the fun place – the canvas. This is where the visualizations occur. To correspond to the numbers in the screenshot below:</p> <ol> <li>The blue box around a visualization is the one that is actively being built or modified.</li> <li>This visualization is a Pivot table. …This should look very familiar to Essbase users as it is how we are used to seeing data in Excel and Hyperion Financial Reports. You can change the visualization by clicking the down arrow next to the chosen visualization.</li> <li>As I mentioned before, you have visual cues to the data elemnts and the type of data they are stored as. DV helps you build visualizations by showing you where a numeric and attribute (or date/time) data element can be used in a visualization.</li> <li>The filter highlighted here is for a visualization filter. The filter will only apply to the selected visualization.</li> <li>You can have multiple tabs in a project. This project has three tabs with visualizations.</li> </ol> <p><img data-attachment-id="1454" data-permalink="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization/17-3/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/17.png?w=840" data-orig-size="1917,973" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="17" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/17.png?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/17.png?w=840?w=840" class=" size-full wp-image-1454 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/17.png?w=840" alt="17" srcset="https://epmqueen.files.wordpress.com/2017/03/17.png?w=840 840w, https://epmqueen.files.wordpress.com/2017/03/17.png?w=1680 1680w, https://epmqueen.files.wordpress.com/2017/03/17.png?w=150 150w, https://epmqueen.files.wordpress.com/2017/03/17.png?w=300 300w, https://epmqueen.files.wordpress.com/2017/03/17.png?w=768 768w, https://epmqueen.files.wordpress.com/2017/03/17.png?w=1024 1024w" sizes="(max-width: 840px) 100vw, 840px" /></p> <p>A picture of the second tab to show you are not limited to pivot tables for Essbase data!</p> <p><img data-attachment-id="1455" data-permalink="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization/18-3/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/18.png?w=840" data-orig-size="1917,977" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="18" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/18.png?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/18.png?w=840?w=840" class=" size-full wp-image-1455 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/18.png?w=840" alt="18" srcset="https://epmqueen.files.wordpress.com/2017/03/18.png?w=840 840w, https://epmqueen.files.wordpress.com/2017/03/18.png?w=1680 1680w, https://epmqueen.files.wordpress.com/2017/03/18.png?w=150 150w, https://epmqueen.files.wordpress.com/2017/03/18.png?w=300 300w, https://epmqueen.files.wordpress.com/2017/03/18.png?w=768 768w, https://epmqueen.files.wordpress.com/2017/03/18.png?w=1024 1024w" sizes="(max-width: 840px) 100vw, 840px" /></p> <p>I’ve changed the data source again (to Education_Salary)…this time to show you what a dimension with multiple generations looks like in the data elements pane. Also, there are some fun visualizations we can do with this data set.</p> <p>To correspond to the numbers in the following screenshot:</p> <ol> <li>Location dimension, 3 generations</li> <li>Filters applied to the entire project, not just a visualization.</li> </ol> <p><img data-attachment-id="1456" data-permalink="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization/19-3/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/19.png?w=840" data-orig-size="1912,943" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="19" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/19.png?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/19.png?w=840?w=840" class=" size-full wp-image-1456 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/19.png?w=840" alt="19" srcset="https://epmqueen.files.wordpress.com/2017/03/19.png?w=840 840w, https://epmqueen.files.wordpress.com/2017/03/19.png?w=1680 1680w, https://epmqueen.files.wordpress.com/2017/03/19.png?w=150 150w, https://epmqueen.files.wordpress.com/2017/03/19.png?w=300 300w, https://epmqueen.files.wordpress.com/2017/03/19.png?w=768 768w, https://epmqueen.files.wordpress.com/2017/03/19.png?w=1024 1024w" sizes="(max-width: 840px) 100vw, 840px" /></p> <p>I have the option to drill to the next level of Essbase in DV. As an example, I have chosen all data points over a certain number (by clicking and dragging a rectangle around the values I want to see deeper) and right-clicked to show the shot the below.</p> <p><img data-attachment-id="1457" data-permalink="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization/20-3/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/20.png?w=840" data-orig-size="312,414" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="20" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/20.png?w=840?w=226" data-large-file="https://epmqueen.files.wordpress.com/2017/03/20.png?w=840?w=312" class=" size-full wp-image-1457 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/20.png?w=840" alt="20" srcset="https://epmqueen.files.wordpress.com/2017/03/20.png 312w, https://epmqueen.files.wordpress.com/2017/03/20.png?w=113 113w, https://epmqueen.files.wordpress.com/2017/03/20.png?w=226 226w" sizes="(max-width: 312px) 100vw, 312px" /></p> <p>If I choose “Drill”, DV will show the hierarchy to select a dimension and generation to drill up or down into. For demo purposes, I’m choosing to go from Gen3, Location to Gen4, Location.</p> <p><img data-attachment-id="1458" data-permalink="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization/21-3/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/21.png?w=840" data-orig-size="381,530" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="21" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/21.png?w=840?w=216" data-large-file="https://epmqueen.files.wordpress.com/2017/03/21.png?w=840?w=381" class=" size-full wp-image-1458 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/21.png?w=840" alt="21" srcset="https://epmqueen.files.wordpress.com/2017/03/21.png 381w, https://epmqueen.files.wordpress.com/2017/03/21.png?w=108 108w, https://epmqueen.files.wordpress.com/2017/03/21.png?w=216 216w" sizes="(max-width: 381px) 100vw, 381px" /></p> <p>Once I choose Gen4, Location, my canvas will refresh with the new criteria. To follow the numbering in the screenshot below:</p> <ol> <li>I have significantly fewer data points. Now, only the 4<sup>th</sup> generation members of Location for the 3<sup>rd</sup> generation members I highlighted previously.</li> <li>Notice that my Category item has changed from Gen3, Location to Gen4, Location.</li> <li>The 3<sup>rd</sup> generation members of Location I filtered on in the previous step are now in the project filters area.</li> </ol> <p><img data-attachment-id="1459" data-permalink="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization/22-3/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/22.png?w=840" data-orig-size="1652,943" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="22" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/22.png?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/22.png?w=840?w=840" class=" size-full wp-image-1459 aligncenter" src="https://epmqueen.files.wordpress.com/2017/03/22.png?w=840" alt="22" srcset="https://epmqueen.files.wordpress.com/2017/03/22.png?w=840 840w, https://epmqueen.files.wordpress.com/2017/03/22.png?w=150 150w, https://epmqueen.files.wordpress.com/2017/03/22.png?w=300 300w, https://epmqueen.files.wordpress.com/2017/03/22.png?w=768 768w, https://epmqueen.files.wordpress.com/2017/03/22.png?w=1024 1024w, https://epmqueen.files.wordpress.com/2017/03/22.png 1652w" sizes="(max-width: 840px) 100vw, 840px" /></p> <p>Finally, I have put together a video to show you how building a project in DV is done with Essbase data.</p> <div id="v-ZrFlUYuN-1" class="video-player" style="width:840px;height:426px"> <embed id="v-ZrFlUYuN-1-video" src="https://v0.wordpress.com/player.swf?v=1.04&amp;guid=ZrFlUYuN&amp;isDynamicSeeking=true" type="application/x-shockwave-flash" width="840" height="426" title="Essbase_DV" wmode="direct" seamlesstabbing="true" allowfullscreen="true" allowscriptaccess="always" overstretch="true"></embed></div> <p>On a final note, you can access a trial cloud instance of OAC by going to <a href="http://cloud.oracle.com">http://cloud.oracle.com</a> and requesting a 30 day trial. It is under the PaaS portion of the webpage.</p> <p>Also, you can download Data Visualization Desktop from this <a href="http://www.oracle.com/technetwork/middleware/oracle-data-visualization/downloads/oracle-data-visualization-desktop-2938957.html">link</a>. You are not required to request a trial instance as it operates like an app on your phone, except on your computer. You are free to try it out for 30 days!</p> <p>Stay tuned as I plan to blog quite a bit over the next few weeks about OAC!</p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/epmqueen.wordpress.com/1433/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/epmqueen.wordpress.com/1433/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=realtrigeek.com&#038;blog=70089387&#038;post=1433&#038;subd=epmqueen&#038;ref=&#038;feed=1" width="1" height="1" /><div><a href="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization/"><img alt="Essbase_DV" src="https://videos.files.wordpress.com/ZrFlUYuN/essbase_dv_std.original.jpg" width="160" height="120" /></a></div> Sarah Craynon Zumbrum http://realtrigeek.com/?p=1433 Fri Mar 17 2017 08:00:29 GMT-0400 (EDT) A Funny Thing Happened on the Way to the Cloud… http://redpillanalytics.com/introducing-oracle-analytics-cloud/ <p><img width="300" height="199" src="https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/ng-30950.jpg?fit=300%2C199" class="attachment-medium size-medium wp-post-image" alt="" srcset="https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/ng-30950.jpg?w=4288 4288w, https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/ng-30950.jpg?resize=300%2C199 300w, https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/ng-30950.jpg?resize=768%2C510 768w, https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/ng-30950.jpg?resize=1024%2C680 1024w, https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/ng-30950.jpg?w=2340 2340w, https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/ng-30950.jpg?w=3510 3510w" sizes="(max-width: 300px) 100vw, 300px" data-attachment-id="4695" data-permalink="http://redpillanalytics.com/introducing-oracle-analytics-cloud/ng-30950/" data-orig-file="https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/ng-30950.jpg?fit=4288%2C2848" data-orig-size="4288,2848" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="ng-30950" data-image-description="" data-medium-file="https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/ng-30950.jpg?fit=300%2C199" data-large-file="https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/ng-30950.jpg?fit=1024%2C680" /></p><p><a href="https://cloud.oracle.com/analytics-cloud">Oracle Analytics Cloud (OAC)</a> is generally available (GA) today, and I&#8217;m excited to be included in this OAC blog hop welcome wagon. So I&#8217;m slumming it with a bunch of Essbase professionals, as you can see from the list of contributing authors below. It&#8217;s fascinating to see just how stoked the Essbase community is for this new service, and you&#8217;ll understand why by reading all the other posts linked below. So here&#8217;s the boilerplate content that I&#8217;m contractually obligated to include:</p> <p>&nbsp;</p> <div class="cols-wrapper cols-2 one3-two3"> <div class="col"> <p><i id="yui_3_16_0_ym19_1_1489713317132_7156">If you want to learn more about OAC, check out the blog hop participant posts below! </i><i id="yui_3_16_0_ym19_1_1489713317132_7156">What is a blog hop? A blog hop is a group of bloggers who all get together to blog on a particular topic. We share each other&#8217;s blog posts in an attempt to share a lot of great information in one place. Enjoy!</i></p> </div> <div class="col nomargin"> <ul> <li id="yui_3_16_0_ym19_1_1489713317132_6510"><span id="yui_3_16_0_ym19_1_1489713317132_6511"><a id="yui_3_16_0_ym19_1_1489713317132_6512" href="https://womaninepm.com/2017/03/17/oac-series-finally-released">Opal Alapat</a>, interRel Consulting<br id="yui_3_16_0_ym19_1_1489713317132_6513" /></span></li> <li id="yui_3_16_0_ym19_1_1489713317132_6518"><span id="yui_3_16_0_ym19_1_1489713317132_6519"><a id="yui_3_16_0_ym19_1_1489713317132_6520" href="http://redpillanalytics.com/introducing-oracle-analytics-cloud/">Stewart Bryson</a>, Red Pill Analytics</span></li> <li id="yui_3_16_0_ym19_1_1489713317132_6518"><span id="yui_3_16_0_ym19_1_1489713317132_7511"><a id="yui_3_16_0_ym19_1_1489713317132_7512" href="http://integrationmadesimple.blogspot.com/2017/03/oac-metadata-management.html">Brian Dandeneau</a>, interRel Consulting</span></li> <li id="yui_3_16_0_ym19_1_1489713317132_6522"><span id="yui_3_16_0_ym19_1_1489713317132_6523"><a id="yui_3_16_0_ym19_1_1489713317132_6524" href="http://www.cubecoder.com/essbase-cloud-for-the-on-prem-crowd/">Tim German</a>, Qubix<br id="yui_3_16_0_ym19_1_1489713317132_6525" /></span></li> <li id="yui_3_16_0_ym19_1_1489713317132_6526"><span id="yui_3_16_0_ym19_1_1489713317132_6527"><a id="yui_3_16_0_ym19_1_1489713317132_6528" href="http://camerons-blog-for-essbase-hackers.blogspot.com/2017/03/head-in-essbase-cloud-no-1-blessed-event.html">Cameron Lackpour</a>, ARC EPM Consulting<br id="yui_3_16_0_ym19_1_1489713317132_6529" /></span></li> <li id="yui_3_16_0_ym19_1_1489713317132_6530"><a id="yui_3_16_0_ym19_1_1489713317132_6531" href="http://bimobilelabs.com/post/158496839700/OACMobileOptions">Matt Milella</a>, Oracle</li> <li id="yui_3_16_0_ym19_1_1489713317132_6533"><a id="yui_3_16_0_ym19_1_1489713317132_6534" href="http://glennschwartzbergs-essbase-blog.blogspot.com/2017/03/essbase-cloud-service-is-it-here-or.html">Glenn Schwartzberg</a>, interRel Consulting</li> <li id="yui_3_16_0_ym19_1_1489713317132_6536"><span id="yui_3_16_0_ym19_1_1489713317132_6537"><a id="yui_3_16_0_ym19_1_1489713317132_6538" href="https://epmsxsw.com/2017/03/17/you-down-with-oac-yeah-you-know-me">Summer Watson</a>, interRel Consulting<br id="yui_3_16_0_ym19_1_1489713317132_6539" /></span></li> <li id="yui_3_16_0_ym19_1_1489713317132_6608"><span id="yui_3_16_0_ym19_1_1489713317132_6540"><a id="yui_3_16_0_ym19_1_1489713317132_6541" href="https://realtrigeek.com/2017/03/17/essbase-as-a-data-source-in-oracle-data-visualization">Sarah Zumbrum</a>, Oracle</span></li> </ul> </div> </div> <div id="yiv3945440321"> <div id="yui_3_16_0_ym19_1_1489713317132_6169"> <div id="yui_3_16_0_ym19_1_1489713317132_6168"> <h1>Is This Different?</h1> </div> </div> </div> <p>Some of you are probably confused by a new Analytics Cloud service from Oracle because we already have the <a href="https://cloud.oracle.com/business_intelligence">BI Cloud Service</a> (BICS). Well&#8230; a funny thing happened on the way to the Cloud.</p> <p>Full disclosure here: I&#8217;m an Oracle ACE Director, and am privy to certain product roadmap details before their public release, not just about Oracle BI and DI products, but all Oracle products. And though what I&#8217;m about to tell you is tempered with fact, I&#8217;m going to muddle the conversation a bit with some opinion about how we got to where we are.</p> <h1>Dogfooding</h1> <div id="attachment_4701" style="width: 1034px" class="wp-caption aligncenter"><img data-attachment-id="4701" data-permalink="http://redpillanalytics.com/introducing-oracle-analytics-cloud/obiee-12c-and-the-leap-forward-in-lifecycle-management-026/" data-orig-file="https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/OBIEE-12c-and-the-Leap-Forward-in-Lifecycle-Management.026.jpeg?fit=1280%2C720" data-orig-size="1280,720" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="For the first time ever, Oracle had to run their own products" data-image-description="" data-medium-file="https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/OBIEE-12c-and-the-Leap-Forward-in-Lifecycle-Management.026.jpeg?fit=300%2C169" data-large-file="https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/OBIEE-12c-and-the-Leap-Forward-in-Lifecycle-Management.026.jpeg?fit=1024%2C576" class="wp-image-4701 size-large" src="https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/OBIEE-12c-and-the-Leap-Forward-in-Lifecycle-Management.026.jpeg?resize=1024%2C576" alt="" srcset="https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/OBIEE-12c-and-the-Leap-Forward-in-Lifecycle-Management.026.jpeg?resize=1024%2C576 1024w, https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/OBIEE-12c-and-the-Leap-Forward-in-Lifecycle-Management.026.jpeg?resize=300%2C169 300w, https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/OBIEE-12c-and-the-Leap-Forward-in-Lifecycle-Management.026.jpeg?resize=768%2C432 768w, https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/OBIEE-12c-and-the-Leap-Forward-in-Lifecycle-Management.026.jpeg?w=1280 1280w" sizes="(max-width: 1024px) 100vw, 1024px" data-recalc-dims="1" /><p class="wp-caption-text">Oracle had to run their own products in the Cloud</p></div> <p>&nbsp;</p> <p>Back in September of 2014, Oracle announced the Business Intelligence Cloud Service, and Product Management learned straight away that OBIEE 11g, which served as the initial code base for BI Cloud Service, was, well&#8230; challenging. Sure, when it was married to a single, static server&#8211;or even a group of servers when clustered&#8211;it was predictable, if not completely over-engineered. I used to joke with <a href="https://medium.com/mark-rittman">Mark Rittman</a> in the early days that we would avoid restarting OBIEE at almost any cost because it was effectively a coin toss whether it would come back up. There were several aspects of the stack that ran counter to Cloud architecture, including the Oracle Instance, OPMN, the BISystemUser, and those wonderful security GUIDS. So Oracle rolled up their sleeves and went to work, simplifying the BICS architecture, producing fantastic features such as the BAR File (still Snapshots in BICS), the Service Instance, and of course Oracle Data Visualization.</p> <p>During this time, development of the on-premises product Oracle Business Intelligence 12c was underway. The momentum behind simplified architecture and rapid provisioning continued, and the maiden release of OBIEE 12c was rock solid, with an improved upgrade experience coupled with the <a href="http://www.oracle.com/technetwork/middleware/bi/downloads/bi-bvt-download-3587672.html">Baseline Validation Tool</a> (BVT) that meant analytics bliss for all of Oracle&#8217;s on-premises customers.</p> <h1>Oracle Analytics Cloud&#8230; I&#8217;m Getting to That</h1> <p>While the impressive features of OBIEE 12c are rooted in the previous Cloud offering, including Service Instances and Data Visualization, BICS today is still very much OBIEE 11g. You can think of it as a weird sort of hybrid of the basic 11g architecture with a bunch of cool things from 12c bolted on. So what is Oracle Analytics Cloud? It&#8217;s a brand new analytics Cloud service built from the ground up using OBIEE 12c, providing the wider breadth of capabilities we expect from Oracle&#8217;s on-premises products, including the latest capabilities from Data Visualization, and some impressive Essbase features as well (see several of the linked blog posts above for more on Essbase in the Cloud). The pre-release version of the product I&#8217;m using to write this blog has a version number of 12.2.2.0.0 and change&#8230; we&#8217;ll see if that matches when we get our hands on the real thing.</p> <h1>Data Visualization</h1> <p>The first thing we notice right away with Oracle Analytics Cloud is the bleeding-edge version of Oracle Data Visualization. Previously, to see this functionality from DV, we would have to download Data Visualization Desktop (DVD), or maybe just cut out the middle-person and watch the incredible <a href="http://redpillanalytics.com/dataviz-daily/">Data Viz Daily</a> from guru <a href="https://twitter.com/kevin_mcginley">Kevin McGinley</a>. OAC provides access to all the modern data sources that DVD hooked us on&#8211;like Amazon EMR, MapR, MongoDB and Informix (that last one is there to make sure you are paying attention)&#8211;but we also have Data Flows, and the incredibly useful Summarization screen.</p> <p><img data-attachment-id="4711" data-permalink="http://redpillanalytics.com/introducing-oracle-analytics-cloud/screen-shot-2017-03-17-at-2-17-12-am/" data-orig-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-17-at-2.17.12-AM.png?fit=2417%2C1863" data-orig-size="2417,1863" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screen Shot 2017-03-17 at 2.17.12 AM" data-image-description="" data-medium-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-17-at-2.17.12-AM.png?fit=300%2C231" data-large-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-17-at-2.17.12-AM.png?fit=1024%2C789" class="aligncenter wp-image-4711 size-large" src="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-17-at-2.17.12-AM.png?resize=1024%2C789" alt="Data Viz Summary" srcset="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-17-at-2.17.12-AM.png?resize=1024%2C789 1024w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-17-at-2.17.12-AM.png?resize=300%2C231 300w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-17-at-2.17.12-AM.png?resize=768%2C592 768w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-17-at-2.17.12-AM.png?w=2340 2340w" sizes="(max-width: 1024px) 100vw, 1024px" data-recalc-dims="1" /></p> <h1>Metadata</h1> <p>Conceptually, the Semantic Model has lost its luster in the eyes of many. There&#8217;s still a need for metadata, but we&#8217;ve seen the severity of that need register all across the spectrum in recent years. While the lightweight modeling available in Data Visualization satisfies the simplest of requirements, it&#8217;s not long before we run out of runway and need more capabilities. BICS gave us two options for surfacing metadata: the &#8220;thin modeler,&#8221; a browser-based solution providing enhanced capabilities from what&#8217;s available alone in Data Visualization, and the full-on Business Model and Mapping layer, which we could only get by developing our repository offline in the Admin Tool, and uploading to BICS.</p> <p>Oracle Analytics Cloud gives us these same choices. Perhaps my biggest surprise when working with the pre-release version was the existence of the thin modeler; not because it doesn&#8217;t make sense, but my expectation was the initial release would be more &#8220;OBIEE 12c&#8221; than &#8220;BICS.&#8221; One of the first things I plan to investigate when we provision OAC proper is whether the <a href="http://redpillanalytics.com/groovy-web-services-and-obiee-12c/">Lifecycle REST API</a> exists and whether we can use <strong>data-model.(cmd|sh)</strong> to deploy repositories.</p> <div id="attachment_4731" style="width: 1034px" class="wp-caption aligncenter"><img data-attachment-id="4731" data-permalink="http://redpillanalytics.com/introducing-oracle-analytics-cloud/screen-shot-2017-03-17-at-2-41-26-am/" data-orig-file="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-17-at-2.41.26-AM.png?fit=2285%2C1269" data-orig-size="2285,1269" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="The &#8220;Thin Modeler&#8221;" data-image-description="" data-medium-file="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-17-at-2.41.26-AM.png?fit=300%2C167" data-large-file="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-17-at-2.41.26-AM.png?fit=1024%2C569" class="wp-image-4731 size-large" src="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-17-at-2.41.26-AM.png?resize=1024%2C569" alt="" srcset="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-17-at-2.41.26-AM.png?resize=1024%2C569 1024w, https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-17-at-2.41.26-AM.png?resize=300%2C167 300w, https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-17-at-2.41.26-AM.png?resize=768%2C427 768w" sizes="(max-width: 1024px) 100vw, 1024px" data-recalc-dims="1" /><p class="wp-caption-text">The &#8220;thin modeler&#8221; is still around. Whoa&#8230; heavy.</p></div> <p>&nbsp;</p> <h1>Conclusion</h1> <p>The pre-release version we&#8217;ve had access to is far from the full-blown product. I couldn&#8217;t get to any of the provisioning screens, and the provisioning of services whether by screen or API represents significant ROI with Cloud deployments. I also didn&#8217;t have access to the backend of the service, so I&#8217;m not yet clear on what development workflows will look like, or how we might structure promotions from Dev to Test to Prod. The BAR file is the future, but it&#8217;s still quirky in OBIEE 12c, and we&#8217;ll need to see whether 12.2.2 provides relief from the quirks. Keep an eye out on this blog, and the blogs of all the other participants in the coming weeks and months for a more wholistic treatment of the future of Oracle analytics.</p> Stewart Bryson http://redpillanalytics.com/?p=4691 Fri Mar 17 2017 05:27:30 GMT-0400 (EDT) Supporting Font Encoders on 11g and 12c https://blogs.oracle.com/xmlpublisher/entry/supporting_font_encoders_on_11g <p>We had a couple of requests for some help this past week with customers' custom font encoders. With 11g/12c BIP its not straightforward to embed your code with the BIP code. In fact; its really simple but it took me a while and some trial and error to get the encoder classes to the right spot and in the right format so that BIP could 'see' and use them.</p> <p>In 11g/12c the BIP application is exploded out under the servers below the DOMAIN_HOME, in my 11.1.1.7.x install thats ./oracle/BI/user_projects/domains/bifoundation_domain/servers/AdminServer/tmp/_WL_user/bipublisher_11.1.1/6uc731</p> <p>Under the last directory (which will be different for you) will be a lib directory. Thats where your encoder classes need to sit wrapped in a jar file. Its not the best place to have them as upgrades to the code line may not preserve them but its the only place I found where the classes get loaded that BIP can access the encoder. There are other more standard places under the WLS server but BIP can not access the class and the encoder is not reached.</p> <p>Just to lay out some of the things I have found out during this investigation:</p> <p>1. When you compile your class make sure the target java version is appropriate. For the 11.1.1.7.x codeline the version needs to be 1.6. For 12g, its 1.8. If you dont do this, you'll get errors when calling the class.</p> <p>2. You need to wrap your class up in a jar file. If you use JDeveloper, you can create a deployment profile that will build the jar for you. Its then a case of copying it into the appropriate directory.</p> <p>3. Make sure your RTF barcode register field command matches the 'package' line in your class. In my class I have:</p> <pre>package <span style="color: rgb(0, 3, 255);">xx.bip.fonts</span>;</pre> <p>So my template command is:</p> <pre>&nbsp;&lt;?register-barcode-vendor:'<span style="color: rgb(0, 3, 255);">xx.bip.fonts</span>.BarcodeUtil';'xxBarVendor'?&gt;</pre> <p>make sure they match.</p> <p>4. In the encode command in the template. Make sure the encoding routine you want to use case matches the one in your encoding class.<br />In my class:</p> <p> </p> <pre>ENCODERS.put("pdf417", mUtility.getClass().getMethod("<span style="color: rgb(0, 3, 255);">pdf417</span>", arrayOfClass));</pre> <p>In my RTF template:</p> <pre>&lt;?format-barcode:TRANSACTION_NUMBER;'<span style="color: rgb(0, 3, 255);">pdf417</span>';'xxBarVendor'?&gt;</pre> <p>5. When you are testing the RTF template on the server. Forget the barcode font for now and use a clear text font. That way you can make sure the encoder is being called. Once you are happy. Just update the template with the barcode font you need. <br /></p> <p>6. When JDeveloper creates the jar file it will create the directory structure that matches your package path in the jar.</p> <p>With all of the steps followed above. You are now ready to deploy the jar file into the server. Depending on how you have configured your server it is going to influence the location of the jar file. On my server, I have a simple install with just an Admin server. You may have multiple managed servers. The jar file will need to reside in all locations for the BIP server to find it.</p> <p>On my 11g server, I copied the jar file to:</p> <p>user_projects/domains/bifoundation_domain/servers/AdminServer/tmp/_WL_user/bipublisher_11.1.1/6uc731/lib</p> <p>On my 12c server:</p> <p>user_projects/domains/bifoundation_domain/servers/bi_server1/tmp/_WL_user/bipublisher_11.1.1/f45tyd/lib</p> <p>Once copied, you need to bounce the WLS server to get the class loaded. You will then be able to see the encoder at work in the output.</p> <p> Make a post upgrade note for yourself and others to ensure, that after a patch application. You check that the encoder jar is still present in the above directories. It'll save some head scratching later :0)</p> <p>Here are my files from testing the solution on 11g.7.x and 12c </p> <p> </p> <ul> <li> My JDeveloper project - <a href="https://blogs.oracle.com/xmlpublisher/resource/BIPFonts.zip">BIPFonts.zip</a> </li> <li> My jar file - <a href="https://blogs.oracle.com/xmlpublisher/resource/bipfontsupport.zip">bipfontsupport.zip</a> </li> </ul> <p>Update: we have had a couple of customers get through this now and they have helpfully noted a couple of points that helped them out.</p> <p>1.&nbsp; When moving from 10g to 11g or 12c. On compiling&nbsp; the custom class For example, from 10G to 11G, the location of XDOBarcodeEncoder changes from oracle.apps.xdo.template.rtf.util to <a href="http://oracle.xdo.template.rtf.util">oracle.xdo.template.rtf.util.</a>&nbsp; so you will need to update your class to reflect the new import location.<br />2. A reference to &quot;<a href="https://docs.oracle.com/cd/E28280_01/bi.1111/e22259/title.htm" target="_blank">Oracle® Fusion Middleware Developer's Guide for Oracle Business Intelligence Publisher 11g Release 1</a> (11.1.1) E22259-04 <br />&nbsp;&nbsp;&nbsp; Section 7.13, &quot;Advanced Barcode Formatting&quot; It provides an example of source code for a custom class.<br />and for 12c - <a href="http://docs.oracle.com/middleware/12212/bip/BIPRD/GUID-A229808F-D2F6-458E-8E52-9E7FA156FF0E.htm#BIPRD2354" target="_blank">Fusion Middleware Report Designer's Guide for Oracle Business Intelligence Publisher</a><br /></p> Tim Dexter-Oracle https://blogs.oracle.com/xmlpublisher/entry/supporting_font_encoders_on_11g Wed Mar 15 2017 17:55:32 GMT-0400 (EDT) ODTUG Turns 20 http://www.odtug.com/p/bl/et/blogaid=684&source=1 ODTUG Turns 20On March 13, 2017, ODTUG celebrated its 20th birthday! Yes, there’s been a lot of changes over the years, but one thing remains the same: ODTUG’s commitment to keeping you on the cutting-edge of the constantly changing Oracle technology landscape. Check out these highlights: ODTUG http://www.odtug.com/p/bl/et/blogaid=684&source=1 Wed Mar 15 2017 09:32:08 GMT-0400 (EDT) Scripts to use Agents in OBIEE 12c: mass enabling and execution from a page https://gianniceresa.com/2017/03/scripts-to-use-agents-in-obiee-12c-mass-enabling-and-execution-from-a-page/ <p>Few days ago I wrote about <a href="https://gianniceresa.com/2017/03/obiee-12c-agents-enable-them-by-code/" target="_blank">Agents in OBIEE 12c</a> and how it was possible to enable them by script, automating that part of the process which was still manual.<br /> This time I&#8217;m going to write about 2 examples of how I used my findings about Agents, providing the code as download so you can use it in just few seconds.</p> <h3>Two use cases as example</h3> <p>Today I&#8217;m going to cover two possible needs with Agents, one mainly for upgrades or code promotion between environments and the second to provide a functionality to the consumers of your OBIEE dashboards and analysis.</p> <ul> <li>Execute an agent from a dashboard page / analysis</li> <li>Mass enabling in one step of Agents</li> </ul> <p><em>(Code is provided, feel free to look at it and adapt or use it as you want)</em></p> <blockquote><p>All the tests and analysis have been done on OBIEE 12.2.1.2.0.<br /> The libraries are probably the same for the previous OBIEE 12c releases and will also work, with some little adjustments for OBIEE 11g (11.1.1.7, 11.1.1.9) as the main javascript libraries are the same.</p> <p>Keep in mind jQuery wasn&#8217;t there in OBIEE 11g, so that&#8217;s the main change required.</p></blockquote> <h3>Mass enabling of Agents in one step</h3> <p>In a running prod OBIEE you can easily have tens or hundreds of Agents: nothing bad with this, they provide functionalities for the consumers. But what happen when you upgrade your old PROD OBIEE 11g to OBIEE 12c? What happen to the Agents?</p> <p>Well &#8230; the Agents end up on the new system but &#8230; all disabled ! Now have fun going through the full catalog, finding out which Agents must be enabled and enable them again one by one, by hand.<br /> Not funny at all without forgetting the risk of missing some and have your consumers complaining your upgrade is actually a regression.</p> <p>Stop fearing your next upgrade, you can enable all your Agents with few clicks from a single page.</p> <div id="attachment_390" style="width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_manage_agents_page.png"><img class="size-large wp-image-390" src="https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_manage_agents_page-1024x501.png" alt="" width="1024" height="501" srcset="https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_manage_agents_page-1024x501.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_manage_agents_page-300x147.png 300w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_manage_agents_page-768x376.png 768w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_manage_agents_page-1080x528.png 1080w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_manage_agents_page.png 1259w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">Mass enabling Agents from an OBIEE dashboard page</p></div> <p>As seen in <a href="https://gianniceresa.com/2017/03/obiee-12c-agents-enable-them-by-code/" target="_blank">previous</a> post the OBIEE front-end catalog page uses a lot of javascript to interact with Agents, to enable them. So I put together some javascript code to use these OBIEE libraries to make my (and your) life easier.</p> <p><strong><a href="https://gianniceresa.com/wp-content/uploads/2017/03/Manage-Agents.zip" target="_blank">Download the OBIEE catalog archive with the dashboard and code</a></strong></p> <p>The process to deploy and use this dashboard page is really simple:</p> <ol> <li>In your OBIEE instance go in the Catalog and create a new empty folder (to avoid issues in case you have a dashboard with the same exact name of the one in the file already). Can be your personal folder or the shared folder, works in both places, the path doesn&#8217;t matter.</li> <li><a href="https://gianniceresa.com/wp-content/uploads/2017/03/Manage-Agents.zip" target="_blank">Download the file</a> (a catalog archive) and unarchive (first unzip, then OBIEE unarchive) inside the newly create folder. <div id="attachment_396" style="width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_unarchive_file.png"><img class="wp-image-396 size-large" src="https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_unarchive_file-1024x787.png" alt="" width="1024" height="787" srcset="https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_unarchive_file-1024x787.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_unarchive_file-300x230.png 300w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_unarchive_file-768x590.png 768w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_unarchive_file-1080x830.png 1080w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_unarchive_file.png 1259w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">In a empty folder (to avoid issues) unarchive the file</p></div> <p>&nbsp;</li> <li>Open the imported dashboard named &#8220;Manage Agents&#8221; <div id="attachment_395" style="width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_open_imported_dashboard.png"><img class="size-large wp-image-395" src="https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_open_imported_dashboard-1024x480.png" alt="" width="1024" height="480" srcset="https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_open_imported_dashboard-1024x480.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_open_imported_dashboard-300x141.png 300w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_open_imported_dashboard-768x360.png 768w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_open_imported_dashboard-1080x506.png 1080w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_open_imported_dashboard.png 1259w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">Open the imported dashboard to see the page managing Agents</p></div> <p>&nbsp;</li> <li>When the page open, it searches the Agents in the catalog and display a list of them (can take some seconds if you have lot of them) <p><div id="attachment_392" style="width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_mass_enabling_page.png"><img class="size-large wp-image-392" src="https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_mass_enabling_page-1024x500.png" alt="" width="1024" height="500" srcset="https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_mass_enabling_page-1024x500.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_mass_enabling_page-300x147.png 300w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_mass_enabling_page-768x375.png 768w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_mass_enabling_page-1080x528.png 1080w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_mass_enabling_page.png 1259w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">A list of all the Agents found in the catalog.</p></div></li> <li>Select the Agents you want to enable (or all of them using the &#8220;check all&#8221; link) and click the button. If you are sure confirm. <p><div id="attachment_391" style="width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_enabling_process.png"><img class="size-large wp-image-391" src="https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_enabling_process-1024x500.png" alt="" width="1024" height="500" srcset="https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_enabling_process-1024x500.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_enabling_process-300x147.png 300w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_enabling_process-768x375.png 768w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_enabling_process-1080x528.png 1080w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_enabling_process.png 1259w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">Select Agents from the list (or all with the &#8220;check all&#8221; link), click the &#8220;Enable selected agents&#8221; button and if you are sure confirm.</p></div></li> <li>The javascript OBIEE libraries are doing the work now, the logs show you what&#8217;s happening in the background. Once done the list of Agents is reloaded with the new status (if enabled the checkbox isn&#8217;t active anymore). <p><div id="attachment_393" style="width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_result_logs.png"><img class="size-large wp-image-393" src="https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_result_logs-1024x500.png" alt="" width="1024" height="500" srcset="https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_result_logs-1024x500.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_result_logs-300x147.png 300w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_result_logs-768x375.png 768w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_result_logs-1080x528.png 1080w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_result_logs.png 1259w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">While running the logs are added Agent by Agent and once done the list is reloaded (with the new status for Agents)</p></div></li> </ol> <p>Done ! You can now enable lot of Agents at once.</p> <p>If the page doesn&#8217;t work or take too long to load the list of Agents have a look at your browser console, it gives some output faster than the log box on screen.</p> <div id="attachment_394" style="width: 310px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_slow_loading_console_message.png"><img class="wp-image-394 size-medium" src="https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_slow_loading_console_message-300x177.png" alt="" width="300" height="177" srcset="https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_slow_loading_console_message-300x177.png 300w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_slow_loading_console_message-768x454.png 768w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_slow_loading_console_message-1024x605.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_slow_loading_console_message-1080x638.png 1080w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_slow_loading_console_message.png 1259w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">Loading the list of Agents can take some time (10-15 seconds for 104 Agents). The console log give you an output of what&#8217;s going on while waiting.</p></div> <h4>How does it work?</h4> <p>The page is a normal dashboard page with &#8220;Text&#8221; elements containing some javascript and HTML.</p> <div id="attachment_400" style="width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_page_structure.png"><img class="size-large wp-image-400" src="https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_page_structure-1024x887.png" alt="" width="1024" height="887" srcset="https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_page_structure-1024x887.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_page_structure-300x260.png 300w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_page_structure-768x666.png 768w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_page_structure-1080x936.png 1080w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_page_structure.png 1259w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">Only some javascript and HTML</p></div> <p>It uses the embedded jQuery in OBIEE 12c to manage everything: load the required files, actions on checkboxes and button, output to screen.<br /> Completely uses the OBIEE javascript libraries, so it does exactly what the Catalog does, nothing else. There are just 2 methods which are overwritten as they can&#8217;t work outside the Catalog (to handle the result and update available actions on an Agent).</p> <p>Feel free to take the code and change it as you want, you can easily add a disable action too. Something you will maybe want to do is to customize the search of Agents in the catalog by defining a specific path and pattern for names.</p><pre class="crayon-plain-tag">$.post('/analytics/saw.dll?CatalogTreeModel', {action: "search", path: "/", mask: "*", recurse: "t", sig: "coibot1", _scid: obips_scid}, function(data){</pre><p>You can adjust the value of &#8220;path&#8221; and &#8220;mask&#8221; as you want, even add them on screen as text field for a more interactive experience.</p> <p>All my tests and development have been done on a OBIEE 12.2.1.2.0 but the catalog file must be fine for other 12c versions too. For 11g you will have to adapt things as jQuery isn&#8217;t there by default even if the OBIEE javascript functions are probably (tested a bit) 95-100% identical.<br /> I have enabled 102 Agents at once using this script: the page become unresponsive at the beginning when things are running but just leave it there, few minutes later all the Agents were enabled!</p> <blockquote><p><strong>Important note: permissions &amp; privileges</strong></p> <p>As this script does exactly what happen when you click one by one in the catalog the same limitations apply. If your users don&#8217;t have the required permissions on the catalog to access the Agents or to enable them this script will not bypass these limitations. It uses the privileges of your current session, so it&#8217;s advised to use it with an admin-like account.</p></blockquote> <h3>Execute an Agent from a dashboard page or an analysis</h3> <p>Sometimes you want to allow your consumers to execute an Agent, run it immediately, from a dashboard page or an analysis. For example if you have somebody in charge of validation of some data/analysis before to send it out to a wider audience.</p> <p>The approval can be done visually using a dashboard or an analysis, and then to send out the data/analysis you can use an Agent setup without schedule and containing the full list of people, so you find it in the Catalog and click on &#8220;Run&#8221; directly.</p> <p>Wouldn&#8217;t it be better if you could have a button directly on the validation dashboard page?</p> <div id="attachment_402" style="width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_run_from_dashboard.png"><img class="size-large wp-image-402" src="https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_run_from_dashboard-1024x367.png" alt="" width="1024" height="367" srcset="https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_run_from_dashboard-1024x367.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_run_from_dashboard-300x108.png 300w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_run_from_dashboard-768x276.png 768w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_run_from_dashboard-1080x388.png 1080w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_run_from_dashboard.png 1346w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">Clicking a button on the dashboard page execute the Agent.</p></div> <p>Good news again: doable with a really small piece of code.</p> <p>All you need is a text object with the required code inside.</p><pre class="crayon-plain-tag">&lt;script&gt; $( document ).ready(function() { // find the path to be used to load OBI javascript files jqueryPath = $("script[src*='jquery']").first().attr('src'); var loadPath = jqueryPath.substring(0, jqueryPath.split('/', 3).join('/').length); // load the required scripts $.when( $.getScript(loadPath+'/delivers/obide.ServerRequests.js'), $.getScript(loadPath+'/deliversShared/obids.AjaxRequest.js') ).done(function(){ // when loading is done enable the button $('#runAgent').prop('disabled', false); // when the button is clicked =&gt; execute the agent $('#runAgent').click(function(){ // create required base objects var a = saw.catalogaction; var ibotHandler = new a.IbotsActionHandler(); // set agent path ibotHandler.tItemInfo = {'path': '/shared/Example agents/Test Agent 01'}; // this is optional but avoid a javascript error after execution (load info about the agent) ibotHandler.retrieveIBotInfo(); // execute the agent ibotHandler.runIBot(ibotHandler.tItemInfo.path); }); }); }); &lt;/script&gt; &lt;p&gt;If you want to execute the Agent /shared/Example agents/Test Agent 01 click the button:&lt;/p&gt; &lt;button id="runAgent" disabled="disabled"&gt;Run Agent&lt;/button&gt;</pre><p>In this code the path to the Agent is hardcoded, you can definitely change it or make it smarter (a generic event handler reading the path from an attribute of the button HTML tag). Can be executed by a link or anything else as long as it can be triggered in a way or another.</p> <div id="attachment_403" style="width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_run_from_dashboard_like_catalog.png"><img class="size-large wp-image-403" src="https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_run_from_dashboard_like_catalog-1024x534.png" alt="" width="1024" height="534" srcset="https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_run_from_dashboard_like_catalog-1024x534.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_run_from_dashboard_like_catalog-300x156.png 300w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_run_from_dashboard_like_catalog-768x401.png 768w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_run_from_dashboard_like_catalog-1080x563.png 1080w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_script_run_from_dashboard_like_catalog.png 1346w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">The execution window popup just like in Catalog.</p></div> <div id="attachment_404" style="width: 1008px" class="wp-caption aligncenter"><img class="size-full wp-image-404" src="https://gianniceresa.com/wp-content/uploads/2017/03/agents_scripts_execute_from_dashboard.gif" alt="" width="998" height="612" /><p class="wp-caption-text">A full example of the script in action.</p></div> <blockquote><p><strong>Important note: permissions &amp; privileges</strong></p> <p>As this script does exactly what happen when you click &#8220;Run&#8221; in the Catalog the same limitations apply. If your users don&#8217;t have the required permissions on the catalog to access the Agent or to run it, this script will not bypass these limitations. It uses the privileges of your current session.</p></blockquote> <h3>Final word</h3> <p>As you saw in the above examples a lot is doable. OBIEE is a web application which means you can easily hack pieces and reuses its own libraries for your needs.</p> <p>If you want to see the details of other actions available on Agents find the actionhandlerimpl.js file on your OBIEE instance (you will find the same file few times) and look inside. If you check the saw.catalogaction.IbotsActionHandler.prototype.handleAction function you see all the actions available in the Catalog for Agents and the same file has details on actions on other kind of objects.</p> <p><strong>Do not abuse it!</strong> If you end up recoding half of the UI you maybe chose the wrong tool for the job.</p> <p>If it doesn&#8217;t work &#8230; that&#8217;s life: look at the code, analyse what happen, compare with the actual OBIEE native javascript, debug by adding logging and breakpoints.</p> <p>Feel free to post a comment if you have issues using the code in 12.2.1.0.0 or 12.2.1.1.0, I can easily have a look at those versions, for 11g it&#8217;s a bit more difficult as I don&#8217;t have environments easily accessible.</p> <p>The post <a rel="nofollow" href="https://gianniceresa.com/2017/03/scripts-to-use-agents-in-obiee-12c-mass-enabling-and-execution-from-a-page/">Scripts to use Agents in OBIEE 12c: mass enabling and execution from a page</a> appeared first on <a rel="nofollow" href="https://gianniceresa.com">Gianni&#039;s world: things crossing my mind</a>.</p> Gianni Ceresa https://gianniceresa.com/?p=386 Wed Mar 15 2017 07:10:34 GMT-0400 (EDT) Overview of Google Data Studio (Ep 048) http://www.youtube.com/watch?v=Q8p-gpy-CCw Red Pill Analytics yt:video:Q8p-gpy-CCw Tue Mar 14 2017 12:15:15 GMT-0400 (EDT) Presentations from OUGN17 http://www.oralytics.com/2017/03/presentations-from-ougn17.html Here are the presentations I gave at OUG Norway last week. These are also available on SlideShare <iframe src="//www.slideshare.net/slideshow/embed_code/key/GYR1ZSI4UyMP2m" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> <div style="margin-bottom:5px"> <strong> <a href="//www.slideshare.net/BrendanTierney/sql-the-one-language-to-rule-all-your-data" title="SQL: The one language to rule all your data" target="_blank">SQL: The one language to rule all your data</a> </strong> from <strong><a target="_blank" href="//www.slideshare.net/BrendanTierney">Brendan Tierney</a></strong> </div> <br> <iframe src="//www.slideshare.net/slideshow/embed_code/key/3CUimELHe0Np0X" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> <div style="margin-bottom:5px"> <strong> <a href="//www.slideshare.net/BrendanTierney/predictive-analytics-mining-gold-and-creating-valuable-product" title="Predictive analytics: Mining gold and creating valuable product" target="_blank">Predictive analytics: Mining gold and creating valuable product</a> </strong> from <strong><a target="_blank" href="//www.slideshare.net/BrendanTierney">Brendan Tierney</a></strong> </div> Brendan Tierney tag:blogger.com,1999:blog-4669933501315263808.post-199072421658021372 Mon Mar 13 2017 18:22:00 GMT-0400 (EDT) OBIEE 12c Agents: enable them by code ! https://gianniceresa.com/2017/03/obiee-12c-agents-enable-them-by-code/ <p>Agents in OBIEE 12c and 11g, known as iBots back in OBIEE 10g, are a component of the BI platform providing few interesting things like pushing data to users instead of requiring users to connect and get it themselves, have alerts based on data to inform users about something and few more. They are one of the many kind of elements you find in the OBIEE catalog.<br /> Being part of the catalog means they are one of the elements you have to manage when upgrading to a different version of OBIEE or, more frequently, when promoting code/features between environments: from DEV to TEST and finally to PROD for example.</p> <blockquote><p><strong>What are Agents?</strong></p> <p>Agents enable you to automate your business processes.<br /> You can use agents to provide event-driven alerting, scheduled content publishing, and conditional event-driven action execution.<br /> <em>(<a href="http://docs.oracle.com/middleware/12211/biee/BIEUG/GUID-2419AD39-ECAF-41B0-B28A-C5EABDB371CF.htm" target="_blank">FMW User&#8217;s Guide for OBIEE 12c</a>)</em></p></blockquote> <p>Till here nothing special: archive your catalog (or branch of catalog) from system A and unarchive on system B: done!<br /> Well &#8230; not really &#8230;<br /> The objects end up on system B, your Agents will be there, sure, but they will always be disabled, so inactive, even if they were enabled and running on the source system.</p> <p>This is currently an issue as you have to remember which Agents must be enabled and do it by hand on the target system, making automated code deployment only partial waiting for somebody to enable Agents again.</p> <p>And what about migrations? For example, moving from OBIEE 11g to OBIEE 12c? You maybe migrate a catalog with tens or hundreds of Agents all over the catalog which must be enabled again &#8230; by hand! Not what we can call a nice and interesting activity and not the safest way to do a migration.</p> <h3>No need to enable them by hand anymore !</h3> <p>I&#8217;m glad to tell you that you don&#8217;t have to do it by hand anymore and the process enabling Agents can perfectly be scripted!</p> <p>How? That&#8217;s for the bottom of the post, first let&#8217;s have a look at what an Agent is in OBIEE, what pieces of information are stored where.</p> <h3>Creating an Agent</h3> <p>To create an Agent is a really simple activity: in the &#8220;New&#8221; menu of the OBIEE web interface Agents are under the <em>Actionable Intelligence</em> label (by the way, if you don&#8217;t have a Foundation license but by component, make sure you are allowed to use deliveries). In the &#8220;Schedule&#8221; step is where the details about when the Agent must be executed are defined, if you uncheck the &#8220;Enabled&#8221; checkbox the Agent will not be executed, even if I define a schedule, for example every 10 minutes all the time, the Agent will not be run at all. That&#8217;s the status all the Agents are when migrated or promoted to a different environment.</p> <div id="attachment_371" style="width: 310px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/03/agents_create_a_new_agent.png"><img class="size-medium wp-image-371" src="https://gianniceresa.com/wp-content/uploads/2017/03/agents_create_a_new_agent-300x142.png" alt="" width="300" height="142" srcset="https://gianniceresa.com/wp-content/uploads/2017/03/agents_create_a_new_agent-300x142.png 300w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_create_a_new_agent-768x364.png 768w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_create_a_new_agent-1024x485.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_create_a_new_agent-1080x512.png 1080w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">In the &#8220;New&#8221; menu select &#8220;Agent&#8221;</p></div> <div id="attachment_372" style="width: 310px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/03/agents_create_not_enabled.png"><img class="size-medium wp-image-372" src="https://gianniceresa.com/wp-content/uploads/2017/03/agents_create_not_enabled-300x99.png" alt="" width="300" height="99" srcset="https://gianniceresa.com/wp-content/uploads/2017/03/agents_create_not_enabled-300x99.png 300w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_create_not_enabled-768x252.png 768w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_create_not_enabled-1024x337.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_create_not_enabled-1080x355.png 1080w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">Do not enable it directly, first define all the settings.</p></div> <div id="attachment_373" style="width: 310px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/03/agents_create_save_agent.png"><img class="size-medium wp-image-373" src="https://gianniceresa.com/wp-content/uploads/2017/03/agents_create_save_agent-300x102.png" alt="" width="300" height="102" srcset="https://gianniceresa.com/wp-content/uploads/2017/03/agents_create_save_agent-300x102.png 300w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_create_save_agent-768x261.png 768w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_create_save_agent-1024x348.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_create_save_agent-1080x368.png 1080w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">Save the Agent, it is still not enabled at this point.</p></div> <h3>Where the Agent is stored?</h3> <p>There are two places where information about Agents are stored.<br /> The main place is the catalog itself, as any other object, the XML describing the Agent is created in a file (with a corresponding .atr file).</p> <p>This is the content of that file for a sample Agent I just created:</p><pre class="crayon-plain-tag">&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;saw:ibot xmlns:saw="com.siebel.analytics.web/report/v1.1" xmlns:cond="com.oracle.bi/conditions/v1" xmlns:sawx="com.siebel.analytics.web/expression/v1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1" priority="normal" jobID="6"&gt; &lt;saw:schedule disabled="true"&gt; &lt;saw:start startImmediately="false" repeatMinuteInterval="10" endTime="23:59:00" date="2017-03-12" time="01:00:00" /&gt; &lt;saw:recurrence runOnce="false"&gt; &lt;saw:daily dayInterval="1" /&gt; &lt;/saw:recurrence&gt; &lt;/saw:schedule&gt; &lt;saw:dataVisibility type="runAsUser" runAs="weblogic" runAsGuid="weblogic" /&gt; &lt;cond:condition /&gt; &lt;saw:choose&gt; &lt;saw:when condition="true"&gt; &lt;saw:deliveryContent disposition="deviceDefault"&gt; &lt;saw:reportRef path="/shared/Agents/Sample analysis for agent" /&gt; &lt;saw:headline&gt; &lt;saw:caption&gt; &lt;saw:text&gt;Test Agent 01&lt;/saw:text&gt; &lt;/saw:caption&gt; &lt;/saw:headline&gt; &lt;/saw:deliveryContent&gt; &lt;saw:postActions /&gt; &lt;/saw:when&gt; &lt;saw:otherwise&gt; &lt;saw:postActions /&gt; &lt;/saw:otherwise&gt; &lt;/saw:choose&gt; &lt;saw:deliveryDestinations&gt; &lt;saw:destination category="dashboard" /&gt; &lt;/saw:deliveryDestinations&gt; &lt;saw:recipients specificRecipients="true" subscribers="false" customize="false"&gt; &lt;saw:specificRecipients&gt; &lt;saw:user name="weblogic" guid="weblogic" /&gt; &lt;/saw:specificRecipients&gt; &lt;saw:subscribers /&gt; &lt;/saw:recipients&gt; &lt;saw:emailRecipients /&gt; &lt;/saw:ibot&gt;</pre><p>Another place where you find information about the Agents is the database, the BIPLATFORM schema created by the RCU when OBIEE has been configured.<br /> There are few tables for Agents there, the main one is S_NQ_JOB which is the one defining the ID assigned to each Agent (the JOB_ID column) registered by the Scheduler (one of the components of OBIEE).</p> <div id="attachment_362" style="width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/03/agents_s_nq_job_table.png"><img class="size-large wp-image-362" src="https://gianniceresa.com/wp-content/uploads/2017/03/agents_s_nq_job_table-1024x241.png" alt="" width="1024" height="241" srcset="https://gianniceresa.com/wp-content/uploads/2017/03/agents_s_nq_job_table-1024x241.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_s_nq_job_table-300x71.png 300w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_s_nq_job_table-768x181.png 768w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_s_nq_job_table-1080x254.png 1080w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_s_nq_job_table.png 1416w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">Entries for the Agents in the S_NQ_JOB table</p></div> <p>If you look well, between the XML and the database table there is a link: the XML contains the ID which has been assigned to the Agent in the S_NQ_JOB table. The &#8220;driver&#8221; isn&#8217;t the XML but the database as we will see later in case of conflicting IDs.</p> <div id="attachment_363" style="width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/03/agents_xml_highlight_jobid.png"><img class="size-large wp-image-363" src="https://gianniceresa.com/wp-content/uploads/2017/03/agents_xml_highlight_jobid-1024x130.png" alt="" width="1024" height="130" srcset="https://gianniceresa.com/wp-content/uploads/2017/03/agents_xml_highlight_jobid-1024x130.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_xml_highlight_jobid-300x38.png 300w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_xml_highlight_jobid-768x97.png 768w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_xml_highlight_jobid-1080x137.png 1080w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_xml_highlight_jobid.png 1191w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">The jobID attribute of the saw:ibot node contains the ID assigned in the database</p></div> <h3>How to enable an Agent?</h3> <p>Once your Agent exists you can of course edit it again and check the &#8220;Enabled&#8221; checkbox and save, but there is a simpler way. In the catalog clicking on the &#8220;More&#8221; link just underneath the Agent itself a list of actions is displayed and if the Agent isn&#8217;t already enabled the last option will be &#8220;Enable Schedule&#8221; (if the Agent is already enabled you will have the link to disable it).</p> <div id="attachment_364" style="width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/03/agents_catalog_actions.png"><img class="size-large wp-image-364" src="https://gianniceresa.com/wp-content/uploads/2017/03/agents_catalog_actions-1024x691.png" alt="" width="1024" height="691" srcset="https://gianniceresa.com/wp-content/uploads/2017/03/agents_catalog_actions-1024x691.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_catalog_actions-300x202.png 300w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_catalog_actions-768x518.png 768w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_catalog_actions-1080x729.png 1080w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_catalog_actions.png 1110w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">The &#8220;enable&#8221; link is available in the catalog</p></div> <h3>How to enable Agents by a script in an automated way?</h3> <p>As I&#8217;m not aware of a simple webservice to enable the Agents (didn&#8217;t search for it in detail as few other people who needed it said it wasn&#8217;t there, so I trusted them) the solution must be behind the &#8220;Enable Schedule&#8221; link in the catalog.</p> <p>All I have to do is to find that piece of code, easy &#8230;</p><pre class="crayon-plain-tag">saw.catalogaction.IbotsActionHandler.prototype.enableIBotSchedule = function(l) { saw.header.showBusyIndicator(true); var d = saw.getLastPathPart(l); var p = saw.getFolder(l); var h = obide.ServerRequests.retrieveIBotInfo(l, true); var k = XUIGetElementText(obips.XMLDOM.selectSingleNode(h, "IBotInfo/SchedulerRegistered")) == "1"; var a = obips.XMLDOM.selectSingleNode(h, "//saw:ibot", saw.delivers.namespaceMap); var r = false; if (!k) { a.removeAttribute("jobID"); if (p) { var b = '&lt;?xml version="1.0" encoding="UTF-8"?&gt;' + obips.XMLDOM.getXMLString(a); r = (this.tItemInfo.extendedAttributes &amp;&amp; this.tItemInfo.extendedAttributes.recipient); saw.catalog.getCatalogManager().writeXML(saw.catalog.ItemCategory.IBOT, b, l) } } var e = obips.XMLDOM.createXMLDomFromString('&lt;saw:ibotUI xmlns:saw="com.siebel.analytics.web/report/v1.1"/&gt;'); var n = obips.XMLDOM.selectSingleNode(e, "saw:ibotUI", saw.delivers.namespaceMap); XUIAppendChild(n, a); var t = obips.XMLDOM.selectSingleNode(a, "saw:schedule", saw.delivers.namespaceMap); var o = obips.XMLDOM.selectSingleNode(t, "saw:start", saw.delivers.namespaceMap); var s = null; if (o) { s = XUIGetAttributeString(o, "date") } if (s &amp;&amp; s != "") { t.removeAttribute("disabled") } else { XUISetAttributeBool(t, "disabled", true) } var f = XUIInsertNewElement(n, saw.xml.kSawNamespace, "ibotSaveInfo", 1); var m = XUIForceSingleNode(f, saw.xml.kSawNamespace, "saveMode"); XUISetElementText(m, "save"); var q = XUIForceSingleNode(f, saw.xml.kSawNamespace, "name"); XUISetElementText(q, d); var i = XUIForceSingleNode(f, saw.xml.kSawNamespace, "oldName"); XUISetElementText(i, d); var g = XUIForceSingleNode(f, saw.xml.kSawNamespace, "path"); XUISetElementText(g, p); var c = XUIForceSingleNode(f, saw.xml.kSawNamespace, "oldPath"); XUISetElementText(c, p); var j = obide.ServerRequests.saveIBot(obips.XMLDOM.getXMLString(e), false); saw.delivers.handleSaveResult(j); this.updateDetails(r); saw.header.showBusyIndicator(false) };</pre><p>Let me introduce you saw.catalogaction.IbotsActionHandler.prototype.enableIBotSchedule, the enableIBotSchedule method of the saw.catalogaction.IbotsActionHandler javascript object. That&#8217;s a custom object Oracle developed (there are many many others, a lot more) to manage all the interactions with the catalog in the webpage.</p> <p>This piece of code is, all in all, quite readable even without knowing what does call it, what&#8217;s the context and what there is around. A single parameter, by the code I would guess it can be an object or a reference to the Agent, actually the &#8221; <i>l </i>&#8221; parameter is just the path of the Agent, so something like <em>/shared/Example agents/Test Agent 01</em> for the example Agent I created above.</p> <p>If you look in your browser&#8217;s Developer tools extension what happen when you click the enable link the javascript code makes even more sense.</p> <div id="attachment_365" style="width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/03/agents_catalog_ajax_calls.png"><img class="size-large wp-image-365" src="https://gianniceresa.com/wp-content/uploads/2017/03/agents_catalog_ajax_calls-1024x661.png" alt="" width="1024" height="661" srcset="https://gianniceresa.com/wp-content/uploads/2017/03/agents_catalog_ajax_calls-1024x661.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_catalog_ajax_calls-300x194.png 300w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_catalog_ajax_calls-768x496.png 768w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_catalog_ajax_calls-1080x697.png 1080w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_catalog_ajax_calls.png 1236w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">When clicking on &#8220;Enable Schedule&#8221; there are 2 ajax calls.</p></div> <p>Looking at the URLs it&#8217;s easy to match these 2 ajax calls with the javascript code: row 5 and 42 in the above snippet.</p> <p>To make it easier to understand the rest of the javascript function, this is the result of the first call to <em>saw.dll?RetrieveIBotInfo</em> :</p><pre class="crayon-plain-tag">&lt;IBotInfo&gt; &lt;SchedulerRegistered&gt;1&lt;/SchedulerRegistered&gt; &lt;Subscribed&gt;false&lt;/Subscribed&gt; &lt;DirectRecipient&gt;true&lt;/DirectRecipient&gt; &lt;CanSubscribe&gt;false&lt;/CanSubscribe&gt; &lt;CanCustomize&gt;false&lt;/CanCustomize&gt; &lt;Name&gt;Test Agent 01&lt;/Name&gt; &lt;Description&gt;This is a just a test agent&lt;/Description&gt; &lt;Author&gt;weblogic&lt;/Author&gt; &lt;CreatedOn&gt;3/12/2017 5:28:49 PM (Server OS Time Zone)&lt;/CreatedOn&gt; &lt;LastModified&gt;3/12/2017 5:28:50 PM (Server OS Time Zone)&lt;/LastModified&gt; &lt;LastRun&gt;&lt;/LastRun&gt; &lt;NextRun&gt;&lt;/NextRun&gt; &lt;AgentXML&gt; &lt;saw:ibot xmlns:saw="com.siebel.analytics.web/report/v1.1" xmlns:cond="com.oracle.bi/conditions/v1" xmlns:sawx="com.siebel.analytics.web/expression/v1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1" priority="normal" jobID="6"&gt; &lt;saw:schedule disabled="true"&gt; &lt;saw:start startImmediately="false" repeatMinuteInterval="10" endTime="23:59:00" date="2017-03-12" time="01:00:00" /&gt; &lt;saw:recurrence runOnce="false"&gt; &lt;saw:daily dayInterval="1" /&gt; &lt;/saw:recurrence&gt; &lt;/saw:schedule&gt; &lt;saw:dataVisibility type="runAsUser" runAs="weblogic" runAsGuid="weblogic" /&gt; &lt;cond:condition /&gt; &lt;saw:choose&gt; &lt;saw:when condition="true"&gt; &lt;saw:deliveryContent disposition="deviceDefault"&gt; &lt;saw:reportRef path="/shared/Agents/Sample analysis for agent" /&gt; &lt;saw:headline&gt; &lt;saw:caption&gt; &lt;saw:text&gt;Test Agent 01&lt;/saw:text&gt; &lt;/saw:caption&gt; &lt;/saw:headline&gt; &lt;/saw:deliveryContent&gt; &lt;saw:postActions /&gt; &lt;/saw:when&gt; &lt;saw:otherwise&gt; &lt;saw:postActions /&gt; &lt;/saw:otherwise&gt; &lt;/saw:choose&gt; &lt;saw:deliveryDestinations&gt; &lt;saw:destination category="dashboard" /&gt; &lt;/saw:deliveryDestinations&gt; &lt;saw:recipients specificRecipients="true" subscribers="false" customize="false"&gt; &lt;saw:specificRecipients&gt; &lt;saw:user name="weblogic" guid="weblogic" /&gt; &lt;/saw:specificRecipients&gt; &lt;saw:subscribers /&gt; &lt;/saw:recipients&gt; &lt;saw:emailRecipients /&gt; &lt;/saw:ibot&gt; &lt;/AgentXML&gt; &lt;/IBotInfo&gt;</pre><p>The key element is at row 2: <em>&lt;SchedulerRegistered&gt;1&lt;/SchedulerRegistered&gt;</em><br /> It means the Agent is already registered in the Scheduler, the database entries are there and are fine !<br /> If the Agent wasn&#8217;t found in the database (in case of a migration for example) or there would be an issue the value would have been 0.</p> <p>Based on this XML the rest of the javascript code make sense too as it&#8217;s a lot of XML manipulations: if the Agent is already registered in the Scheduler and there is a date for the schedule the code remove the <em>disabled=&#8221;true&#8221;</em> attribute from the <em>saw:schedule</em> node and then save the new Agent code.</p> <p>This is actually the same as if you open the Agent to edit it, check the &#8220;Enabled&#8221; checkbox and finally save the Agent, same thing, same process, same logic.</p> <p>You now have all the pieces to script and automate these steps if you want, simple standard HTTP calls sending and receiving pieces of XML (almost XML in reality, there is a kind of prefix you have to remove to make it really XML).</p> <p>You can use the scripting language of your choice and after simulating a login to have a session ID with the required privileges you can execute the same logic and same HTTP calls.</p> <h3>Job ID collision: how is that managed?</h3> <p>Based on what I just wrote you can imagine you could easily have a Job ID collision when promoting code between environments.</p> <p>For example, if you have 5 Agents in total in DEV and PROD and you add a new one while developing in DEV. This new Agent will have the ID = 6.<br /> In the meantime in PROD a new Agent is created for a special need only in PROD (if you allow that or not it&#8217;s a different thing, processes are all different). In PROD the ID = 6 is assigned to this new Agent.</p> <p>What happen when you promote your development till PROD? You will have 2 Agents with ID = 6: one will be the one promoted by your development release, the other the one created only in PROD.</p> <div id="attachment_367" style="width: 430px" class="wp-caption aligncenter"><img class="size-full wp-image-367" src="https://gianniceresa.com/wp-content/uploads/2017/03/agents_panic.jpg" alt="" width="420" height="279" srcset="https://gianniceresa.com/wp-content/uploads/2017/03/agents_panic.jpg 420w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_panic-300x199.jpg 300w" sizes="(max-width: 420px) 100vw, 420px" /><p class="wp-caption-text">Job ID collision? Panic! 2 Agents but same Job ID</p></div> <p>No need to panic, OBIEE is smart!</p> <p>The collision is detected, the system will see there is a second Agent with the Job ID = 6 but the path is different when compared with the one stored in the S_NQ_JOB_PARAM database table. It will discard the JobID = 6 and will create a new one when saving and enabling the Agent.</p> <div id="attachment_368" style="width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/03/agents_jobid_collision_detected.png"><img class="size-large wp-image-368" src="https://gianniceresa.com/wp-content/uploads/2017/03/agents_jobid_collision_detected-1024x301.png" alt="" width="1024" height="301" srcset="https://gianniceresa.com/wp-content/uploads/2017/03/agents_jobid_collision_detected-1024x301.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_jobid_collision_detected-300x88.png 300w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_jobid_collision_detected-768x226.png 768w, https://gianniceresa.com/wp-content/uploads/2017/03/agents_jobid_collision_detected-1080x318.png 1080w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">The metadata of the Agent mismatch with the attributes saved in the database</p></div> <p>You can test this case by simply copy/paste an existing Agent to a new path in the catalog or with a different name.</p> <h3>To resume</h3> <p>Agents are stored in the catalog but also in the database once they are registered with the Scheduler (enabled or disabled doesn&#8217;t matter at this point).<br /> This means that when deploying Agents in a new environment <strong>you do not have to care about the content of the S_NQ_JOB and S_NQ_JOB_PARAM</strong> database tables, OBIEE will manage that for you. It&#8217;s actually <strong>better to not write inside these tables by hand</strong> trying to migrate content.</p> <blockquote><p><strong>Just to be sure you didn&#8217;t miss it&#8230;</strong></p> <p>Don&#8217;t copy the content of S_NQ_JOB and S_NQ_JOB_PARAM around between environments during code promotion or upgrades. Let OBIEE create these entries.<br /> If needed, you can then copy the content of the log table, but first map the old Job IDs to the new ones.</p></blockquote> <p>No need to worry about conflicting Job ID in case you allow your users to create Agents directly in PROD and so ending up with the same ID of the Agents you deploy when releasing new features. OBIEE will detect the conflict thanks to the database and reassign IDs as needed.</p> <p>Finally, and most important: you can script and automate the steps to enable Agents by replicating the simple javascript function logic: retrieve the Agent XML details, manipulate them a bit to remove the &#8220;disabled&#8221; attribute and save the Agent again.</p> <p>Do you want a super simple way to do this in one step from OBIEE itself? Stay tuned, in few days I will post a Dashboard page containing all the code to select all the Agents you want to enable at once and with a single click they will be enabled, using the OBIEE javascript libraries (so it&#8217;s like if you will do it by hand in the catalog one by one). All you have to do is to unarchive it somewhere in your catalog.<br /> Do you need to be able to execute an agent by clicking a button or link in an analysis or dashboard? Same as above: stay tuned and in few days a sample code will be posted.</p> <p>The post <a rel="nofollow" href="https://gianniceresa.com/2017/03/obiee-12c-agents-enable-them-by-code/">OBIEE 12c Agents: enable them by code !</a> appeared first on <a rel="nofollow" href="https://gianniceresa.com">Gianni&#039;s world: things crossing my mind</a>.</p> Gianni Ceresa https://gianniceresa.com/?p=357 Mon Mar 13 2017 06:36:42 GMT-0400 (EDT) Property Graph in Oracle 12.2 http://www.rittmanmead.com/blog/2017/03/property-graph-in-oracle-12-2/ <p>The latest release of Oracle (12.2) includes support for Property Graph, previously available only as part of the Big Data Spatial and Graph tool. Unlike the latter, in which data is held in a NoSQL store (Oracle NoSQL, or Apache HBase), it is now possible to use the Oracle Database itself for holding graph definitions and analysing them. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/Cursor_and_Analysing_the_Panama_Papers_with_Oracle_Big_Data_Spatial_and_Graph_key.png" style="width: 600px;"></p> <p>Here we'll see this in action, using the same dataset as I've <a href="https://community.oracle.com/docs/DOC-1006400">previously used</a> - the "Panama Papers".</p> <p>My starting point is the <a href="http://www.oracle.com/technetwork/community/developer-vm/">Oracle Developer Day VM</a>, which at under 8GB is a tenth of the size of the beast that is the <a href="http://www.oracle.com/technetwork/database/bigdata-appliance/oracle-bigdatalite-2104726.html">BigDataLite VM</a>. BDL is great for exploring the vast Big Data ecosystem, both within and external to the Oracle world. However the Developer Day VM serves our needs perfectly here, having been recently updated for the 12.2 release of Oracle. You can also use DB 12.2 in Oracle Cloud, as well as the <a href="https://github.com/oracle/">Docker image</a>.</p> <h2 id="preparedatabaseforpropertygraph">Prepare Database for Property Graph</h2> <p><em>The steps below are based on Zhe Wu's blog "<a href="https://blogs.oracle.com/oraclespatial/entry/graph_database_says_hello_from2">Graph Database Says Hello from the Cloud (Part III)</a>", modified slightly for the differing SIDs etc on Developer Day VM.</em></p> <p>First, set the Oracle environment by running from a bash prompt</p> <pre><code>. oraenv </code></pre> <p>When prompted for SID enter <code>orcl12c</code>:</p> <pre><code class="language-bash">[oracle@vbgeneric ~]$ . oraenv ORACLE_SID = [oracle] ? orcl12c ORACLE_BASE environment variable is not being set since this information is not available for the current user ID oracle. You can set ORACLE_BASE manually if it is required. Resetting ORACLE_BASE to its previous value or ORACLE_HOME The Oracle base has been set to /u01/app/oracle/product/12.2/db_1 [oracle@vbgeneric ~]$ </code></pre> <p>Now launch SQL*Plus:</p> <pre><code>sqlplus sys/oracle@localhost:1521/orcl12c as sysdba </code></pre> <p>and from the SQL*Plus prompt create a tablespace in which the Property Graph data will be stored:</p> <pre><code class="language-sql">alter session set container=orcl; create bigfile tablespace pgts datafile '?/dbs/pgts.dat' size 512M reuse autoextend on next 512M maxsize 10G EXTENT MANAGEMENT LOCAL segment space management auto; </code></pre> <p>Now you need to do a bit of work to update the database to hold larger string sizes, following the following steps.</p> <p>In SQL*Plus:</p> <pre><code>ALTER SESSION SET CONTAINER=CDB$ROOT; ALTER SYSTEM SET max_string_size=extended SCOPE=SPFILE; shutdown immediate; startup upgrade; ALTER PLUGGABLE DATABASE ALL OPEN UPGRADE; EXIT; </code></pre> <p>Then from the bash shell:</p> <pre><code>cd $ORACLE_HOME/rdbms/admin mkdir /u01/utl32k_cdb_pdbs_output mkdir /u01/utlrp_cdb_pdbs_output $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -u SYS -d $ORACLE_HOME/rdbms/admin -l '/u01/utl32k_cdb_pdbs_output' -b utl32k_cdb_pdbs_output utl32k.sql </code></pre> <p>When prompted, enter SYS password (<code>oracle</code>)</p> <p>After a short time you should get output:</p> <pre><code>catcon.pl: completed successfully </code></pre> <p>Now back into SQL*Plus: </p> <pre><code>sqlplus sys/oracle@localhost:1521/orcl12c as sysdba </code></pre> <p>and restart the database instances:</p> <pre><code>shutdown immediate; startup; ALTER PLUGGABLE DATABASE ALL OPEN READ WRITE; exit </code></pre> <p>Run a second script from the bash shell:</p> <pre><code>$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -u SYS -d $ORACLE_HOME/rdbms/admin -l '/u01/utlrp_cdb_pdbs_output' -b utlrp_cdb_pdbs_output utlrp.sql </code></pre> <p>Again, enter SYS password (<code>oracle</code>) when prompted. This step then takes a while (c.15 minutes) to run, so be patient. Eventually it should finish and you'll see:</p> <pre><code>catcon.pl: completed successfully </code></pre> <p>Now to validate that the change has worked. Fire up SQL*Plus:</p> <pre><code>sqlplus sys/oracle@localhost:1521/orcl12c as sysdba </code></pre> <p>And check the value for <code>max_string</code>, which should be <code>EXTENDED</code>:</p> <pre><code>alter session set container=orcl; SQL&gt; show parameters max_string; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ max_string_size string EXTENDED </code></pre> <h2 id="loadpropertygraphdatafromoracleflatfileformat">Load Property Graph data from Oracle Flat File format</h2> <p>Now we can get going with our Property Graph. We're going to use <strong>Gremlin</strong>, a groovy-based interpretter, for interacting with PG. As of Oracle 12.2, it ships with the product itself. Launch it from bash:</p> <pre><code>cd $ORACLE_HOME/md/property_graph/dal/groovy sh gremlin-opg-rdbms.sh -------------------------------- Mar 08, 2017 8:52:22 AM java.util.prefs.FileSystemPreferences$1 run INFO: Created user preferences directory. opg-oracledb&gt; </code></pre> <p>First off, let's create the Property Graph object in Oracle itself. Under the covers, this will set up the necessary database objects that will store the data.</p> <pre><code>cfg = GraphConfigBuilder.\ forPropertyGraphRdbms().\ setJdbcUrl("jdbc:oracle:thin:@127.0.0.1:1521/ORCL").\ setUsername("scott").\ setPassword("oracle").\ setName("panama").\ setMaxNumConnections(8).\ build(); opg = OraclePropertyGraph.getInstance(cfg); </code></pre> <p>You can also do this with the PL/SQL command <code>exec opg_apis.create_pg('panama', 4, 8, 'PGTS');</code>. Either way, the effect is the same; a set of tables created in the owner's schema:</p> <pre><code class="language-sql">SQL&gt; select table_name from user_tables; TABLE_NAME ------------------------------------------ PANAMAGE$ PANAMAGT$ PANAMAVT$ PANAMAIT$ PANAMASS$ </code></pre> <p>Now let's load the data. I'm using the Oracle Flat File format here, having converted it from the original CSV format <a href="https://gist.github.com/rmoff/17025830c81e60d6446e34a37273f705">using R</a>. For more details of why and how, see my <a href="https://community.oracle.com/docs/DOC-1006400">article here</a>.</p> <p>From the Gremlin prompt, run:</p> <pre><code>// opg.clearRepository(); // start from scratch opgdl=OraclePropertyGraphDataLoader.getInstance(); efile="/home/oracle/panama_edges.ope" vfile="/home/oracle/panama_nodes.opv" opgdl.loadData(opg, vfile, efile, 1, 10000, true, null); </code></pre> <p>This will take a few minutes. Once it's completed you'll get <code>null</code> response, but can verify the data has successfully loaded using the opg.Count* functions:</p> <pre><code>opg-oracledb&gt; opgdl.loadData(opg, vfile, efile, 1, 10000, true, null); ==&gt;null opg-oracledb&gt; opg.countEdges() ==&gt;1265690 opg-oracledb&gt; opg.countVertices() ==&gt;838295 </code></pre> <p>We can inspect the data in Oracle itself too. Here I'm using SQLcl, which is available by default on the Developer Day VM. Using the <code>...VT$</code> table we can query the number of distinct properties the nodes (verticies) in the graph:</p> <pre><code class="language-sql">SQL&gt; select distinct k from panamaVT$; K ---------------------------- Entity incorporation.date Entity company.type Entity note ID Officer icij.id Countries Type Entity status Country Source ID Country Codes Entity struck.off.date Entity address Name Entity jurisdiction Entity jurisdiction.description Entity dorm.date 17 rows selected. </code></pre> <p>Inspect the edges:</p> <pre><code class="language-sql">[oracle@vbgeneric ~]$ sql scott/oracle@localhost:1521/orcl SQL&gt; select p.* from PANAMAGE$ p where rownum&lt;5; EID SVID DVID EL K T V VN VT SL VTS VTE FE ---------- ---------- ---------- ---------------- ---- ---- ---- ---- ---- ---- ---- ---- ---- 6 6 205862 officer_of 11 11 228601 officer_of 30 36 216748 officer_of 34 39 216487 officer_of SQL&gt; </code></pre> <p>You can also natively execute some of the Property Graph algorithms from PL/SQL itself. Here is how to run the <a href="https://docs.oracle.com/database/122/SPGDG/OPG_APIS-reference.htm#SPGDG-GUID-A5F629F8-D086-4E7F-8ECF-6094982E7A05">PageRank algorithm</a>, which can be used to identify the most significant nodes in a graph, assigning them each a score (the "page rank" value):</p> <pre><code>set serveroutput on DECLARE wt_pr varchar2(2000); -- name of the table to hold PR value of the current iteration wt_npr varchar2(2000); -- name of the table to hold PR value for the next iteration wt3 varchar2(2000); wt4 varchar2(2000); wt5 varchar2(2000); n_vertices number; BEGIN wt_pr := 'panamaPR'; opg_apis.pr_prep('panamaGE$', wt_pr, wt_npr, wt3, wt4, null); dbms_output.put_line('Working table names ' || wt_pr || ', wt_npr ' || wt_npr || ', wt3 ' || wt3 || ', wt4 '|| wt4); opg_apis.pr('panamaGE$', 0.85, 10, 0.01, 4, wt_pr, wt_npr, wt3, wt4, 'SYSAUX', null, n_vertices) ; END; / </code></pre> <p>When run this creates a new table with the PageRank score for each vertex in the graph, which can then be queried as any other table:</p> <pre><code class="language-sql">SQL&gt; select * from panamaPR 2 order by PR desc 3* fetch first 5 rows only; NODE PR C ---------- ---------- ---------- 236724 8851.73652 0 288469 904.227685 0 264051 667.422717 0 285729 562.561604 0 237076 499.739316 0 </code></pre> <p>On its own, this is not so much use; but joined to the vertices table, we can now find out, within our graph, the top ranked vertices:</p> <pre><code>SQL&gt; select pr.pr, v.k,v.V from panamaPR pr inner join PANAMAVT$ V on pr.NODE = v.vid where v.K = 'Name' order by PR desc fetch first 5 rows only; PR K V ---------- ---------- --------------- 8851.73652 Name Portcullis TrustNet Chambers P.O. Box 3444 Road Town- Tortola British Virgin Isl 904.227685 Name Unitrust Corporate Services Ltd. John Humphries House- Room 304 4-10 Stockwell Stre 667.422717 Name Company Kit Limited Unit A- 6/F Shun On Comm Bldg. 112-114 Des Voeux Road C.- Hong 562.561604 Name Sealight Incorporations Limited Room 1201- Connaught Commercial Building 185 Wanc 499.739316 Name David Chong &amp; Co. Office B1- 7/F. Loyong Court 212-220 Lockhart Road Wanchai Hong K SQL&gt; </code></pre> <p>Since our vertices in this graph have properties, including "Type", we can also analyse it by that - the following shows the top ranked vertices that are Officers:</p> <pre><code class="language-sql">SQL&gt; select V.vid, pr.pr from panamaPR pr inner join PANAMAVT$ V on pr.NODE = v.vid where v.K = 'Type' and v.V = 'Officer' order by PR desc fetch first 5 rows only; VID PR ---------- ---------- 12171184 1.99938104 12030645 1.56722346 12169701 1.55754873 12143648 1.46977361 12220783 1.39846834 </code></pre> <p>which we can then put in a subquery to show the details for these nodes:</p> <pre><code class="language-sql">with OfficerPR as (select V.vid, pr.pr from panamaPR pr inner join PANAMAVT$ V on pr.NODE = v.vid where v.K = 'Type' and v.V = 'Officer' order by PR desc fetch first 5 rows only) select pr2.pr,v2.k,v2.v from OfficerPR pr2 inner join panamaVT$ v2 on pr2.vid = v2.vid where v2.k in ('Name','Countries'); </code></pre> <pre><code> PR K V ---------- ---------- ----------------------- 1.99938104 Countries Guernsey 1.99938104 Name Cannon Asset Management Limited re G006 1.56722346 Countries Gibraltar 1.56722346 Name NORTH ATLANTIC TRUST COMPANY LTD. AS TRUSTEE THE DAWN TRUST 1.55754873 Countries Guernsey 1.55754873 Name Cannon Asset Management Limited re J006 1.46977361 Countries Portugal 1.46977361 Name B-49-MARQUIS-CONSULTADORIA E SERVICOS (SOCIEDADE UNIPESSOAL) LDA 1.39846834 Countries Cyprus 1.39846834 Name SCIVIAS TRUST MANAGEMENT LTD 10 rows selected. </code></pre> <p>But here we get into the limitations of SQL - already this is starting to look like a bit of a complex query to maintain. This is where <a href="http://pgql-lang.org/spec/1.0/">PGQL</a> comes in, as it enables to express the above request much more eloquently. The key thing with PGQL is that it understands the concept of a 'node', which removes the need for the convoluted sub-select that I had to do above to first identify the top-ranked nodes that had a given property (<code>Type = Officer</code>), and then for those identified nodes show information about them (<code>Name</code> and <code>Countries</code>). The above SQL could be expressed in PGQL simply as:</p> <pre><code>SELECT n.pr, n.name, n.countries WHERE (n WITH Type =~ 'Officer') ORDER BY n.pr limit 5 </code></pre> <p>At the moment Property Graph in the Oracle DB doesn't support PGQL - but I'd expect to see it in the future.</p> <h2 id="jupyternotebooks">Jupyter Notebooks</h2> <p>As well as working with the Property Graph in SQL and Gremlin, we can use the Python API. This is shipped with Oracle 12.2. I'd strongly recommend using it through a Notebook, and this provides an excellent environment in which to prototype code and explore the results. Here I'll use Jupyter, but Apache Zeppelin is also very good.</p> <p>First let's install Anaconda Python, which includes Jupyter Notebooks:</p> <pre><code>wget https://repo.continuum.io/archive/Anaconda2-4.3.0-Linux-x86_64.sh bash Anaconda2-4.3.0-Linux-x86_64.sh </code></pre> <p>In the install options I use the default path (<code>/home/oracle</code>) as the location, and keep the default (<code>no</code>)</p> <p>Launch Jupyter, telling it to listen on any NIC (not just localhost). If you installed anaconda in a different path from the default you'll need to amend the <code>/home/oracle/</code> bit of the path.</p> <pre><code>/home/oracle/anaconda2/bin/jupyter notebook --ip 0.0.0.0 </code></pre> <p>If you ran the above command from the terminal window within the VM, you'll get Firefox pop up with the following:</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/oddvm_jupyter01.png" alt=""></p> <p>If you're using the VM headless you'll now want to fire up your own web browser and go to <code>http://&lt;ip&gt;:8888</code> use the token given in the startup log of Jupyter to login.</p> <p>Either way, you should now have a functioning Jupyter notebook environment.</p> <p>Now let's install the Property Graph support into the Python &amp; Jupyter environment. First, make sure you've got the right Python set, by confirming with <code>which</code> it's the anaconda version you installed, and when you run <code>python</code> you see <code>Anaconda</code> in the version details:</p> <pre><code>[oracle@vbgeneric ~]$ export PATH=/home/oracle/anaconda2/bin:$PATH [oracle@vbgeneric ~]$ which python ~/anaconda2/bin/python [oracle@vbgeneric ~]$ python -V Python 2.7.13 :: Anaconda 4.3.0 (64-bit) [oracle@vbgeneric ~]$ </code></pre> <p>Then run the following</p> <pre><code class="language-bash">cd $ORACLE_HOME/md/property_graph/pyopg touch README python ./setup.py install </code></pre> <p><em>without the <code>README</code> being created, the install fails with <code>IOError: [Errno 2] No such file or directory: './README'</code></em></p> <p>You need to be connected to the internet for this as it downloads dependencies as needed. After a few screenfuls of warnings that appear OK to ignore, the installation should be succesful:</p> <pre><code>[...] creating /u01/userhome/oracle/anaconda2/lib/python2.7/site-packages/JPype1-0.6.2-py2.7-linux-x86_64.egg Extracting JPype1-0.6.2-py2.7-linux-x86_64.egg to /u01/userhome/oracle/anaconda2/lib/python2.7/site-packages Adding JPype1 0.6.2 to easy-install.pth file Installed /u01/userhome/oracle/anaconda2/lib/python2.7/site-packages/JPype1-0.6.2-py2.7-linux-x86_64.egg Finished processing dependencies for pyopg==1.0 </code></pre> <p>Now you can use the Python interface to property graph (<code>pyopg</code>) from within Jupyter, as seen below. I've put the notebook on <a href="https://gist.github.com/rmoff/6637de06efe30f1ec230a088c2cf3969">gist.github.com</a> meaning that you can download it from there and run it yourself in Jupyter.</p> <script src="https://gist.github.com/rmoff/6637de06efe30f1ec230a088c2cf3969.js"></script> Robin Moffatt 15f00b58-9c1a-4fb8-8d9d-eeebcb412bef Fri Mar 10 2017 12:00:00 GMT-0500 (EST) Oracle 12c Release 2 (12.2.0.1.0) Grid Infrastructure Upgrade http://gavinsoorma.com/2017/03/oracle-12c-release-2-12-2-0-1-0-grid-infrastructure-upgrade/ <p>I recently performed an upgrade of an Oracle 12c Release 1 (12.1.0.2) Grid Infrastructure environment hosted on a RAC Virtual Box environment on my laptop to the latest release 12c Release 2 12.2.0.1.0 version.</p> <p>Here are some points to be noted related to the upgrade process:</p> <ul> <ul> <li>The Grid Infrastructure 12c Release 2 (12.2) software is now available as a <strong>single image file for direct download and installation</strong>. This greatly simplifies and enables a much quicker installation of the Grid Infrastructure software.</li> </ul> </ul> <p>&nbsp;</p> <ul> <ul> <li>We just have to extract the image file <strong>linuxx64_12201_grid_home.zip</strong> into an empty directory where we want the Grid home to be located.</li> </ul> </ul> <p>&nbsp;</p> <ul> <ul> <li>Once the software has been extracted we have to run the <strong>gridSetup.sh</strong> script which will launch the installer where we can perform both an initial install as well as an upgrade.</li> </ul> </ul> <p>&nbsp;</p> <ul> <ul> <li>We need to have about <strong>33 GB of free disk space in the ASM disk groups</strong> for the upgrade process.</li> </ul> </ul> <p>&nbsp;</p> <ul> <ul> <li>The mount point which hosts the Grid Infrastructure home needs to have at least <strong>12 GB of free disk space</strong>.</li> </ul> </ul> <p>&nbsp;</p> <ul> <ul> <li>It is now<strong> mandatory to store the Oracle Clusterware files like the Cluster Registry (OCR) and Voting Disks on ASM</strong> and we cannot locate these files now on any kind of other shared storage system.</li> </ul> </ul> <p>&nbsp;</p> <ul> <ul> <li>We have to install a <strong>mandatory patch 21255373</strong> to the Grid Infrastructure software home.  We will see that in this case a number of prerequisite checks have failed related to memory (now needs <strong>8 GB minimum RAM</strong> on each node ) as well as other checks related to swap size, NTP and resolv.conf &#8211; since this is test Virtual Box environment we can ignore those and continue with the upgrade &#8211; however we cannot ignore the mandatory patch 21255373 which needs to be applied to the existing 12.1.0.2 Grid Infrastructure home.</li> </ul> </ul> <p>&nbsp;</p> <ul> <ul> <li>In order to install the patch, we have to also download the opatch patch 6880880 for Oracle 12.2.0.1.0 (opatch 12.2.0.1.8).</li> </ul> </ul> <p>&nbsp;</p> <ul> <ul> <li>When we run opatchauto to apply the patch 21255373, we get an error <strong><span class="skimlinks-unlinked">java.text.ParseException</span>: Unparseable date</strong>.  This is because time zone TZ entry AWST (Australian Western Standard Time)  is added into $ORACLE_HOME/inventory/ContentsXML/<span class="skimlinks-unlinked">comps.xml and the opatch is using $ORACLE_HOME/jdk/jre, which is version 1.6. Java 1.6 is not able read the TZ entry AWST. We can ignore the error and continue with  the patch application &#8211; but after the patch has been applied, <strong>we have to change all the occurrences of string &#8220;AWST&#8221; in the comps.xml file to &#8220;WST&#8221;</strong> &#8211; otherwise even though we have applied the patch, the command opatch lsinventory will not show that the patch has been applied until the date format string in the comps.xml is changed as mentioned earlier.</span><strong><br /> </strong></li> </ul> </ul> <p>&nbsp;</p> <ul> <ul> <li>Upgrade failed at 46% in the phase Execute Root Scripts. Ran the command <strong>crsctl stop crs -f</strong> as root on each node and clicked on the Retry button and the upgrade then continued without any error</li> </ul> </ul> <p>&nbsp;</p> <ul> <ul> <li>At the end of the upgrade, the Cluster Verification Utility fails because it checks for NTP configuration appropriate for an Oracle RAC environment. NTP is not configured on this Virtual Box environment so we can ignore the error</li> </ul> </ul> <p>&nbsp;</p> <p>&nbsp;</p> <p>Here are some screen shots captured while the 12c Release 2 Grid Infrastructure upgrade was in progress&#8230;..</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi1.jpg" rel="attachment wp-att-7431"><img class="aligncenter size-full wp-image-7431" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi1.jpg" alt="gi1" width="606" height="476" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi1-300x236.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi1.jpg 606w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi1-300x236@2x.jpg 600w" sizes="(max-width: 606px) 100vw, 606px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi2.jpg" rel="attachment wp-att-7432"><img class="aligncenter size-full wp-image-7432" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi2.jpg" alt="gi2" width="554" height="419" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi2-300x227.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi2.jpg 554w" sizes="(max-width: 554px) 100vw, 554px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi3.jpg" rel="attachment wp-att-7433"><img class="aligncenter size-full wp-image-7433" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi3.jpg" alt="gi3" width="798" height="597" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi3-300x224.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi3-768x575.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi3-627x470.jpg 627w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi3.jpg 798w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi3-300x224@2x.jpg 600w" sizes="(max-width: 798px) 100vw, 798px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi4.jpg" rel="attachment wp-att-7434"><img class="aligncenter size-full wp-image-7434" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi4.jpg" alt="gi4" width="804" height="598" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi4-300x223.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi4-768x571.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi4.jpg 804w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi4-300x223@2x.jpg 600w" sizes="(max-width: 804px) 100vw, 804px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi5.jpg" rel="attachment wp-att-7435"><img class="aligncenter size-full wp-image-7435" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi5.jpg" alt="gi5" width="798" height="598" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi5-300x225.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi5-768x576.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi5-627x470.jpg 627w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi5.jpg 798w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi5-300x225@2x.jpg 600w" sizes="(max-width: 798px) 100vw, 798px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi6.jpg" rel="attachment wp-att-7436"><img class="aligncenter size-full wp-image-7436" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi6.jpg" alt="gi6" width="800" height="599" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi6-300x225.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi6-768x575.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi6-627x470.jpg 627w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi6.jpg 800w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi6-300x225@2x.jpg 600w" sizes="(max-width: 800px) 100vw, 800px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi7.jpg" rel="attachment wp-att-7437"><img class="aligncenter size-full wp-image-7437" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi7.jpg" alt="gi7" width="802" height="600" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi7-300x224.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi7-768x575.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi7-627x470.jpg 627w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi7.jpg 802w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi7-300x224@2x.jpg 600w" sizes="(max-width: 802px) 100vw, 802px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi8.jpg" rel="attachment wp-att-7438"><img class="aligncenter size-full wp-image-7438" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi8.jpg" alt="gi8" width="797" height="600" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi8-300x226.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi8-768x578.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi8.jpg 797w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi8-300x226@2x.jpg 600w" sizes="(max-width: 797px) 100vw, 797px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi9.jpg" rel="attachment wp-att-7439"><img class="aligncenter wp-image-7439" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi9.jpg" alt="gi9" width="987" height="327" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi9-300x99.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi9-768x254.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi9-1024x339.jpg 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi9.jpg 1322w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi9-300x99@2x.jpg 600w" sizes="(max-width: 987px) 100vw, 987px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi10.jpg" rel="attachment wp-att-7440"><img class="aligncenter size-full wp-image-7440" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi10.jpg" alt="gi10" width="953" height="524" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi10-300x165.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi10-768x422.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi10.jpg 953w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi10-300x165@2x.jpg 600w" sizes="(max-width: 953px) 100vw, 953px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi11.jpg" rel="attachment wp-att-7441"><img class="aligncenter size-full wp-image-7441" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi11.jpg" alt="gi11" width="802" height="602" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi11-300x225.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi11-768x576.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi11-627x470.jpg 627w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi11.jpg 802w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi11-300x225@2x.jpg 600w" sizes="(max-width: 802px) 100vw, 802px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi12.jpg" rel="attachment wp-att-7442"><img class="aligncenter size-full wp-image-7442" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi12.jpg" alt="gi12" width="804" height="601" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi12-300x224.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi12-768x574.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi12.jpg 804w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi12-300x224@2x.jpg 600w" sizes="(max-width: 804px) 100vw, 804px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi13.jpg" rel="attachment wp-att-7443"><img class="aligncenter size-full wp-image-7443" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi13.jpg" alt="gi13" width="799" height="597" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi13-300x224.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi13-768x574.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi13.jpg 799w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi13-300x224@2x.jpg 600w" sizes="(max-width: 799px) 100vw, 799px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi14.jpg" rel="attachment wp-att-7444"><img class="aligncenter size-full wp-image-7444" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi14.jpg" alt="gi14" width="800" height="604" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi14-300x227.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi14-768x580.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi14.jpg 800w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi14-300x227@2x.jpg 600w" sizes="(max-width: 800px) 100vw, 800px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi15.jpg" rel="attachment wp-att-7445"><img class="aligncenter size-full wp-image-7445" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi15.jpg" alt="gi15" width="801" height="600" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi15-300x225.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi15-768x575.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi15-627x470.jpg 627w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi15.jpg 801w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi15-300x225@2x.jpg 600w" sizes="(max-width: 801px) 100vw, 801px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi16.jpg" rel="attachment wp-att-7446"><img class="aligncenter size-full wp-image-7446" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi16.jpg" alt="gi16" width="800" height="598" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi16-300x224.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi16-768x574.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi16.jpg 800w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi16-300x224@2x.jpg 600w" sizes="(max-width: 800px) 100vw, 800px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi17.jpg" rel="attachment wp-att-7447"><img class="aligncenter size-full wp-image-7447" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi17.jpg" alt="gi17" width="801" height="599" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi17-300x224.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi17-768x574.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi17-627x470.jpg 627w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi17.jpg 801w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi17-300x224@2x.jpg 600w" sizes="(max-width: 801px) 100vw, 801px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi18.jpg" rel="attachment wp-att-7448"><img class="aligncenter size-full wp-image-7448" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi18.jpg" alt="gi18" width="800" height="602" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi18-300x226.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi18-768x578.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi18.jpg 800w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi18-300x226@2x.jpg 600w" sizes="(max-width: 800px) 100vw, 800px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi19.jpg" rel="attachment wp-att-7449"><img class="aligncenter size-full wp-image-7449" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi19.jpg" alt="gi19" width="1042" height="362" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi19-300x104.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi19-768x267.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi19-1024x356.jpg 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi19.jpg 1042w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi19-300x104@2x.jpg 600w" sizes="(max-width: 1042px) 100vw, 1042px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>Note:</p> <p>Change all occurrences of &#8220;AWST&#8221; to &#8220;WST&#8221; in comps.xml file</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi22.jpg" rel="attachment wp-att-7450"><img class="aligncenter size-full wp-image-7450" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi22.jpg" alt="gi22" width="649" height="157" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi22-300x73.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi22.jpg 649w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi22-300x73@2x.jpg 600w" sizes="(max-width: 649px) 100vw, 649px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>Now opatch lsinventory command will show that the patch 21255373 has been applied.</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi23.jpg" rel="attachment wp-att-7451"><img class="aligncenter size-full wp-image-7451" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi23.jpg" alt="gi23" width="640" height="176" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi23-300x83.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi23.jpg 640w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi23-300x83@2x.jpg 600w" sizes="(max-width: 640px) 100vw, 640px" /></a> <a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi24.jpg" rel="attachment wp-att-7452"><img class="aligncenter size-full wp-image-7452" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi24.jpg" alt="gi24" width="613" height="244" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi24-300x119.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi24.jpg 613w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi24-300x119@2x.jpg 600w" sizes="(max-width: 613px) 100vw, 613px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi25.jpg" rel="attachment wp-att-7453"><img class="aligncenter size-full wp-image-7453" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi25.jpg" alt="gi25" width="806" height="600" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi25-300x223.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi25-768x572.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi25.jpg 806w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi25-300x223@2x.jpg 600w" sizes="(max-width: 806px) 100vw, 806px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi26.jpg" rel="attachment wp-att-7454"><img class="aligncenter size-full wp-image-7454" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi26.jpg" alt="gi26" width="802" height="604" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi26-300x226.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi26-768x578.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi26.jpg 802w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi26-300x226@2x.jpg 600w" sizes="(max-width: 802px) 100vw, 802px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi27.jpg" rel="attachment wp-att-7455"><img class="aligncenter size-full wp-image-7455" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi27.jpg" alt="gi27" width="801" height="598" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi27-300x224.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi27-768x573.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi27.jpg 801w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi27-300x224@2x.jpg 600w" sizes="(max-width: 801px) 100vw, 801px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi28.jpg" rel="attachment wp-att-7456"><img class="aligncenter size-full wp-image-7456" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi28.jpg" alt="gi28" width="804" height="599" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi28-300x224.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi28-768x572.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi28.jpg 804w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi28-300x224@2x.jpg 600w" sizes="(max-width: 804px) 100vw, 804px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi29.jpg" rel="attachment wp-att-7457"><img class="aligncenter size-full wp-image-7457" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi29.jpg" alt="gi29" width="805" height="602" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi29-300x224.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi29-768x574.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi29-627x470.jpg 627w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi29.jpg 805w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi29-300x224@2x.jpg 600w" sizes="(max-width: 805px) 100vw, 805px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi30.jpg" rel="attachment wp-att-7458"><img class="aligncenter size-full wp-image-7458" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi30.jpg" alt="gi30" width="799" height="601" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi30-300x226.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi30-768x578.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi30.jpg 799w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi30-300x226@2x.jpg 600w" sizes="(max-width: 799px) 100vw, 799px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi31.jpg" rel="attachment wp-att-7459"><img class="aligncenter size-full wp-image-7459" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi31.jpg" alt="gi31" width="794" height="595" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi31-300x225.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi31-768x576.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi31-627x470.jpg 627w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi31.jpg 794w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi31-300x225@2x.jpg 600w" sizes="(max-width: 794px) 100vw, 794px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi32.jpg" rel="attachment wp-att-7460"><img class="aligncenter size-full wp-image-7460" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi32.jpg" alt="gi32" width="804" height="599" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi32-300x224.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi32-768x572.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi32.jpg 804w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi32-300x224@2x.jpg 600w" sizes="(max-width: 804px) 100vw, 804px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi33.jpg" rel="attachment wp-att-7461"><img class="aligncenter size-full wp-image-7461" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi33.jpg" alt="gi33" width="792" height="593" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi33-300x225.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi33-768x575.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi33-627x470.jpg 627w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi33.jpg 792w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi33-300x225@2x.jpg 600w" sizes="(max-width: 792px) 100vw, 792px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi34.jpg" rel="attachment wp-att-7462"><img class="aligncenter size-full wp-image-7462" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi34.jpg" alt="gi34" width="802" height="600" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi34-300x224.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi34-768x575.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi34-627x470.jpg 627w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi34.jpg 802w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi34-300x224@2x.jpg 600w" sizes="(max-width: 802px) 100vw, 802px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi35.jpg" rel="attachment wp-att-7463"><img class="aligncenter size-full wp-image-7463" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi35.jpg" alt="gi35" width="796" height="597" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi35-300x225.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi35-768x576.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi35-627x470.jpg 627w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi35.jpg 796w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi35-300x225@2x.jpg 600w" sizes="(max-width: 796px) 100vw, 796px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi36.jpg" rel="attachment wp-att-7464"><img class="aligncenter size-full wp-image-7464" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi36.jpg" alt="gi36" width="795" height="599" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi36-300x226.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi36-768x579.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi36.jpg 795w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi36-300x226@2x.jpg 600w" sizes="(max-width: 795px) 100vw, 795px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi37.jpg" rel="attachment wp-att-7465"><img class="aligncenter size-full wp-image-7465" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi37.jpg" alt="gi37" width="770" height="310" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi37-300x121.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi37-768x309.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi37.jpg 770w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi37-300x121@2x.jpg 600w" sizes="(max-width: 770px) 100vw, 770px" /></a></p> Gavin Soorma http://gavinsoorma.com/?p=7466 Fri Mar 10 2017 08:51:52 GMT-0500 (EST) Help! My Data Visualization Desktop Maps Stopped Working! https://realtrigeek.com/2017/03/10/help-my-data-visualization-desktop-maps-stopped-working/ <p>Twice in the past 2 days, I have had coworkers reach out because their maps in Oracle Data Visualization Desktop stopped rendering. When they switched the visualization away from a map, a visualization would show. Likewise, when they exported a project (.dva) and sent it to a coworker for testing, it worked for the recipient. What we found was that both people ran a Disk Cleanup on their machine recently. It seems that Disk Cleanup deletes some necessary files (presumably from a temp directory) for map rendering for DVD. If this has happened to you, here are the steps to fix DVD and maps:</p> <ol> <li>First see if you can export the project (.dva), delete the project from DVD, then reimport into DVD. If it works, then you are good to go! If not,&#8230;</li> <li>Make sure you export each of your projects that you want to save.</li> <li>Uninstall DVD.</li> <li>Delete the following folder from your machine: C:\Users\{username}\AppData\Local\DVDesktop (yes, the whole folder!)</li> <li>Reinstall DVD (reinstall Advanced Analytics if desired)</li> <li>Import your projects.</li> </ol> <p>You should be good to go!</p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/epmqueen.wordpress.com/1409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/epmqueen.wordpress.com/1409/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=realtrigeek.com&#038;blog=70089387&#038;post=1409&#038;subd=epmqueen&#038;ref=&#038;feed=1" width="1" height="1" /> Sarah Craynon Zumbrum http://realtrigeek.com/?p=1409 Fri Mar 10 2017 08:51:15 GMT-0500 (EST) Happy 20th Birthday ODTUG http://www.odtug.com/p/bl/et/blogaid=680&source=1 On March 13, 2017, ODTUG celebrates its 20th birthday! 20 years of evolving technology and ODTUG is still the user group that keeps you on the cutting-edge of the constantly changing Oracle technology landscape. In honor of ODTUG’s birthday you can save $200 off your ODTUG Kscope17 registration. ODTUG http://www.odtug.com/p/bl/et/blogaid=680&source=1 Thu Mar 09 2017 11:22:59 GMT-0500 (EST) Accelerating Your ODI Implementation, Rittman Mead Style http://www.rittmanmead.com/blog/2017/03/accelerating-your-odi-implementation-rittmanmead-style/ <h2 id="introduction">Introduction</h2> <p>Over the years, at Rittman Mead, we've built up quite a collection of tooling for ODI. We have accelerators, scripts, reports, templates and even entire frameworks at our disposal for when the right use case arises. Many of these tools exploit the power of the excellent ODI SDK to automate tasks that would otherwise be a chore to perform manually. Tasks like, topology creation, model automation, code migration and variable creation. </p> <p>In this blog post, I'm going to give you a demo of our latest addition, <strong>a tool that allows you to programmatically create ODI mappings</strong>. ( and a few other tricks )</p> <p>So you may be thinking <strong><em>isn't that already possible using the ODI SDK ?</em></strong> and you'd be right, it most definitely is. There are many examples out there that show you how it's done, but they all have one thing in common, they create a fairly simple mapping, with, relatively speaking, quite a lot of code and are only useful for creating the said mapping.</p> <p>And herein lies the obvious question, <strong>Why <em>would</em> you create a mapping using the ODI SDK, when it's quicker to use ODI Studio ?</strong></p> <p>And the obvious answer is...you wouldn't, unless, you were trying to <strong>automate the creation of multiple mappings using metadata</strong>. </p> <p>This is a reasonable approach using the raw ODI SDK, the typical use case being the automation of your source to stage mappings. These mappings tend to be simple 1 to 1 mappings, the low hanging fruit of automation if you like. The problem arises though, when you want to <strong>automate the creation of a <em>variety</em> of more complex mappings</strong>, you run the risk of spending more time writing the automation code, than you would actually save due to the automation itself. The point of diminishing return can creep up pretty quickly.</p> <p>The principle, however, is sound. Automate as much as possible by leveraging metadata and free up your ODI Developers to tackle the more complex stuff. <br> <br> </p> <h2 id="allaboardtherittmanmeadmetadatatrain">All Aboard the Rittman Mead Metadata Train !</h2> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/mdtrain.png" alt=""></p> <p>What would be really nice is something more succinct, more elegant, something that allows us to create <strong><em>any mapping</em></strong>, with minimal code and fuss.</p> <p>Something that will allow us to further accelerate...</p> <ul> <li><strong>Migrating to ODI from other ETL products</strong></li> <li><strong>Greenfield ODI Projects</strong></li> <li><strong>Day to Day ODI Development work</strong></li> </ul> <p>..all powered by juicy <strong>metadata</strong>.</p> <p>These were the design goals for our latest tool. To meet these goals, we created a mini-mapping-language on top of the ODI SDK. This mini-mapping-language abstracts away the SDK's complexities, while, at the same time, retaining its inherent power. We call this mini mapping language <strong>OdiDsl</strong> ( Oracle Data Integrator Domain Specific Language ) catchy heh?! <br> <br> </p> <h2 id="odidsl">OdiDsl</h2> <p><strong>OdiDsl</strong> is written in Groovy and looks something like this...</p> <pre><code>/* * OdiDsl to create a SCD2 dimension load mapping. */ mapping.drop('MY_PROJECT', 'DEMO_FOLDER', 'EMPLOYEE_DIM_LOAD') mapping.create('MY_PROJECT', 'DEMO_FOLDER', 'EMPLOYEE_DIM_LOAD') .datastores([ [name: "HR.EMPLOYEES"], [name: "HR.DEPARTMENTS"], [name: "HR.JOBS"], [name: "PERF.D_EMPLOYEE", integration_type: "SCD"], ]) .select("EMPLOYEES") .filter('NAME_FILTER', [filter_condition: "EMPLOYEES.FIRST_NAME LIKE 'D%'" ]) .join('EMP_DEPT', ['DEPARTMENTS'], [join_condition: "EMPLOYEES.DEPARTMENT_ID = DEPARTMENTS.DEPARTMENT_ID" ]) .join('DEPT_JOBS', ['JOBS'], [join_condition: "EMPLOYEES.JOB_ID = JOBS.JOB_ID" ]) .connect("D_EMPLOYEE", [ [ attr: "employee_id", key_indicator: true ], [ attr: "eff_from_date", expression: "sysdate", execute_on_hint: "TARGET"], [ attr: "eff_to_date", expression: "sysdate", execute_on_hint: "TARGET"], [ attr: "current_flag", expression: 1, execute_on_hint: "TARGET"], [ attr: "surr_key", expression: ":RM_PROJECT.D_EMPLOYEE_SEQ_NEXTVAL", execute_on_hint: "TARGET"], ]) .commit() .validate() </code></pre> <p>The above code will create the following, fully functional, mapping in ODI 12c (sorry 11g).</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/mapping.png" alt=""></p> <p>It should be <em>fairly</em> easy to eyeball the code and reconcile it with the above mapping image. We can see that we are specifying our datastores, selecting the <code>EMPLOYEES</code> datastore, adding a filter, a couple of joins and then connecting to our target. <strong>OdiDsl</strong> has been designed in such a way that it mimics the <strong>flow based style</strong> of ODI 12c's mappings by chaining components onto one another. <br> <br> </p> <h2 id="creatingamappingusingodidsl">Creating a Mapping Using OdiDsl</h2> <p>Let's walk through the above code, starting with just the datastores, adding the rest as we go along...</p> <h3 id="datastores">Datastores</h3> <p>We start by creating the mapping with <code>mapping.create( &lt;project&gt;, &lt;folder&gt;, &lt;mapping name&gt;)</code>. We then chain the <code>.datastores()</code>, <code>.commit()</code> and <code>.validate()</code> methods onto it using the "dot" notation. The <code>.datastores()</code> method is the only method you can chain directly onto <code>mapping.create()</code> as it's a requirement to add some datastores before you start building up the mapping. The <code>.commit()</code> method persists the mapping in the repository and the <code>.validate()</code> method calls ODI's validation routine on the mapping to check if all is ok.</p> <pre><code>/* * OdiDsl to create a mapping with 4 datastores. */ mapping.drop('MY_PROJECT', 'DEMO_FOLDER', 'EMPLOYEE_DIM_LOAD') mapping.create('MY_PROJECT', 'DEMO_FOLDER', 'EMPLOYEE_DIM_LOAD') .datastores([ [name: "HR.EMPLOYEES"], [name: "HR.DEPARTMENTS"], [name: "HR.JOBS"], [name: "PERF.D_EMPLOYEE", integration_type: "SCD"], ]) .commit() .validate() </code></pre> <p>When we execute this code it returns the following to the console. You can see that the mapping has been dropped/created and that ODI has some validation warnings for us.</p> <pre><code>Connecting to the repository... mapping EMPLOYEE_DIM_LOAD dropped mapping EMPLOYEE_DIM_LOAD created Validation Results ------------------ WARNING: Mapping component EMPLOYEES has no input or output connections. WARNING: Mapping component DEPARTMENTS has no input or output connections. WARNING: Mapping component JOBS has no input or output connections. WARNING: Mapping component D_EMPLOYEE has no input or output connections. </code></pre> <p>And here is the mapping in ODI - well, it's a start at least...</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/datastores.png" alt=""></p> <h3 id="startingtheflowwithafilter">Starting the Flow with a Filter</h3> <p>Before we can start building up the rest of the mapping we need to select a starting datastore to chain off, you've got to start somewhere right? For that, we call <code>.select("EMPLOYEES")</code>, which is a bit like clicking and selecting the component in ODI Studio. The <code>.filter()</code> method is then chained onto it, passing in the filter name and some configuration, in this case, the actual filter condition.</p> <pre><code>/* * OdiDsl to create a mapping with 4 datastores and a filter. */ mapping.drop('MY_PROJECT', 'DEMO_FOLDER', 'EMPLOYEE_DIM_LOAD') mapping.create('MY_PROJECT', 'DEMO_FOLDER', 'EMPLOYEE_DIM_LOAD') .datastores([ [name: "HR.EMPLOYEES"], [name: "HR.DEPARTMENTS"], [name: "HR.JOBS"], [name: "PERF.D_EMPLOYEE", integration_type: "SCD"], ]) .select("EMPLOYEES") .filter('NAME_FILTER', [filter_condition: "EMPLOYEES.FIRST_NAME LIKE 'D%'" ]) .commit() .validate() </code></pre> <p>We now have an error in the validation results. This is expected as our filter doesn't connect to anything downstream yet. </p> <pre><code>Connecting to the repository... mapping EMPLOYEE_DIM_LOAD dropped mapping EMPLOYEE_DIM_LOAD created Validation Results ------------------ WARNING: Mapping component DEPARTMENTS has no input or output connections. WARNING: Mapping component JOBS has no input or output connections. WARNING: Mapping component D_EMPLOYEE has no input or output connections. ERROR: Mapping component NAME_FILTER must have a connection for output connector point OUTPUT1. </code></pre> <p>And here's the mapping, as you can see the filter is connected to the EMPLOYEES datastore output connector. <br> <img src="http://www.rittmanmead.com/blog/content/images/2017/03/datastores_filter.png" alt=""></p> <h3 id="addingajoin">Adding a Join</h3> <p>Next we'll create the join between the filter and the <code>DEPARTMENTS</code> table. To do this we can just chain a <code>.join()</code> onto the <code>.filter()</code> method and pass in some arguments to specify the join name, what it joins to and the join condition itself. </p> <pre><code>/* * OdiDsl to create a mapping with 4 datastores a filter and a join. */ mapping.drop('MY_PROJECT', 'DEMO_FOLDER', 'EMPLOYEE_DIM_LOAD') mapping.create('MY_PROJECT', 'DEMO_FOLDER', 'EMPLOYEE_DIM_LOAD') .datastores([ [name: "HR.EMPLOYEES"], [name: "HR.DEPARTMENTS"], [name: "HR.JOBS"], [name: "PERF.D_EMPLOYEE", integration_type: "SCD"], ]) .select("EMPLOYEES") .filter('NAME_FILTER', [filter_condition: "EMPLOYEES.FIRST_NAME LIKE 'D%'" ]) .join('EMP_DEPT', ['DEPARTMENTS'], [join_condition: "EMPLOYEES.DEPARTMENT_ID = DEPARTMENTS.DEPARTMENT_ID" ]) .commit() .validate() </code></pre> <p> Only 2 validation warnings and no errors this time... </p> <pre><code>Connecting to the repository... mapping EMPLOYEE_DIM_LOAD dropped mapping EMPLOYEE_DIM_LOAD created Validation Results ------------------ WARNING: Mapping component JOBS has no input or output connections. WARNING: Mapping component D_EMPLOYEE has no input or output connections. </code></pre> <p>We now have a join named <code>EMP_DEPT</code> joining <code>DEPARTMENTS</code> and the filter, <code>NAME_FILTER</code>, together. <br> <img src="http://www.rittmanmead.com/blog/content/images/2017/03/datastores_filter_join.png" alt=""></p> <h3 id="addinganotherjoin">Adding another Join</h3> <p>We'll now do the same for the final join. </p> <pre><code>/* * OdiDsl to create a mapping with 4 datastores, a filter and 2 joins. */ mapping.drop('MY_PROJECT', 'DEMO_FOLDER', 'EMPLOYEE_DIM_LOAD') mapping.create('MY_PROJECT', 'DEMO_FOLDER', 'EMPLOYEE_DIM_LOAD') .datastores([ [name: "HR.EMPLOYEES"], [name: "HR.DEPARTMENTS"], [name: "HR.JOBS"], [name: "PERF.D_EMPLOYEE", integration_type: "SCD"], ]) .select("EMPLOYEES") .filter('NAME_FILTER', [filter_condition: "EMPLOYEES.FIRST_NAME LIKE 'D%'" ]) .join('EMP_DEPT', ['DEPARTMENTS'], [join_condition: "EMPLOYEES.DEPARTMENT_ID = DEPARTMENTS.DEPARTMENT_ID" ]) .join('DEPT_JOBS', ['JOBS'], [join_condition: "EMPLOYEES.JOB_ID = JOBS.JOB_ID" ]) .commit() .validate() </code></pre> <p> looking better all the time... </p> <pre><code>Connecting to the repository... mapping EMPLOYEE_DIM_LOAD dropped mapping EMPLOYEE_DIM_LOAD created Validation Results ------------------ WARNING: Mapping component D_EMPLOYEE has no input or output connections. </code></pre> <p>And we now have a join named <code>DEPT_JOBS</code> joining <code>JOBS</code> and the join, <code>EMP_DEPT</code>, to each other. <br> <img src="http://www.rittmanmead.com/blog/content/images/2017/03/datastores_filter_join_join.png" alt=""></p> <h3 id="connectingtothetarget">Connecting to the target</h3> <p>The final step is to connect the <code>DEPT_JOBS</code> join to our target datastore, <code>D_EMPLOYEE</code>. For this we can use the <code>.connect()</code> method. This method is used to map upstream attributes to a datastore. When you perform this action in ODI Studio, you'll be prompted with the attribute matching dialog, with options to auto-map the attributes.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/attribute_mapping.png" alt=""></p> <p><strong>OdiDsl</strong> will, by default, auto-map all attributes that are not explicitly mapped in the <code>.connect()</code> method. In our completed code example below we are explicitly mapping several attributes to support SCD2 functionality, auto-map takes care of the rest.</p> <pre><code>/* * OdiDsl to create a SCD2 dimension load mapping */ mapping.drop('MY_PROJECT', 'DEMO_FOLDER', 'EMPLOYEE_DIM_LOAD') mapping.create('MY_PROJECT', 'DEMO_FOLDER', 'EMPLOYEE_DIM_LOAD') .datastores([ [name: "HR.EMPLOYEES"], [name: "HR.DEPARTMENTS"], [name: "HR.JOBS"], [name: "PERF.D_EMPLOYEE", integration_type: "SCD"], ]) .select("EMPLOYEES") .filter('NAME_FILTER', [filter_condition: "EMPLOYEES.FIRST_NAME LIKE 'D%'" ]) .join('EMP_DEPT', ['DEPARTMENTS'], [join_condition: "EMPLOYEES.DEPARTMENT_ID = DEPARTMENTS.DEPARTMENT_ID" ]) .join('DEPT_JOBS', ['JOBS'], [join_condition: "EMPLOYEES.JOB_ID = JOBS.JOB_ID" ]) .connect("D_EMPLOYEE", [ [ attr: "employee_id", key_indicator: true ], [ attr: "eff_from_date", expression: "sysdate", execute_on_hint: "TARGET"], [ attr: "eff_to_date", expression: "sysdate", execute_on_hint: "TARGET"], [ attr: "current_flag", expression: 1, execute_on_hint: "TARGET"], [ attr: "surr_key", expression: ":RM_PROJECT.D_EMPLOYEE_SEQ_NEXTVAL", execute_on_hint: "TARGET"], ]) .commit() .validate() </code></pre> <p> Nice, all validated this time. </p> <pre><code>Connecting to the repository... mapping EMPLOYEE_DIM_LOAD dropped mapping EMPLOYEE_DIM_LOAD created Validation Successful </code></pre> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/mapping.png" alt=""> <br> </p> <h2 id="whataboutupdates">What about Updates ?</h2> <p>Yes. We can also <strong><em>update an existing mapping</em></strong> using <code>mapping.update(&lt;project&gt;, &lt;folder&gt;, &lt;mapping name&gt;)</code>. This is useful when you need to make changes to multiple mappings or when you can't drop and recreate a mapping due to a dependency. The approach is the same, we start by selecting a component with <code>.select()</code> and then chain a method onto it, in this case, <code>.config()</code>. </p> <pre><code>mapping.update('MYPROJECT', 'DEMO', "EMPLOYEE_DIM_LOAD") .select('DEPT_JOBS') .config([join_type: "LEFT_OUTER"]) </code></pre> <p><br> </p> <h2 id="whichpropertiescanichangeforeachcomponent">Which Properties Can I Change for each Component ?</h2> <p>Probably more than you'll ever need to, <strong>OdiDsl</strong> mirrors the properties that are available in ODI Studio via the SDK. <br> <br> </p> <h2 id="canwegenerateodidslcodefromanexistingmapping">Can We Generate OdiDsl Code From an Existing Mapping ?</h2> <p>Yes, we can do that too, with <code>.reverse()</code>. This will allow you to mirror the process.</p> <p>Let's take this, hand built, fictional and completely <code>CRAZY_MAPPING</code> as an example. (fictional and crazy in the sense that it does nothing <em>useful</em>, however, the flow and configuration are completely valid). <br> <img src="http://www.rittmanmead.com/blog/content/images/2017/03/complex-mapping-10.png" alt=""></p> <p>If we execute <code>.reverse()</code> on this mapping by calling... </p> <pre><code>mapping.reverse('MY_PROJECT', 'DEMO_FOLDER', 'CRAZY_MAPPING') </code></pre> <p>...<strong>OdiDsl</strong> will return the following output to the console. What you are seeing here is the <strong>OdiDsl</strong> required to <strong>recreate</strong> the crazy mapping above.</p> <pre><code>Connecting to the repository... mapping.create('MY_PROJECT', 'DEMO_FOLDER', 'CRAZY_MAPPING') .datastores([ ['name':'STAGING.TABLE1', 'alias':'TABLE1'], ['name':'STAGING.TABLE9', 'alias':'TABLE9'], ['name':'STAGING.TABLE3', 'alias':'TABLE3'], ['name':'STAGING.TABLE4', 'alias':'TABLE4'], ['name':'STAGING.TABLE6', 'alias':'TABLE6'], ['name':'STAGING.TABLE5', 'alias':'TABLE5'], ['name':'STAGING.TABLE7', 'alias':'TABLE7'], ['name':'STAGING.TABLE2', 'alias':'TABLE2'], ['name':'STAGING.TABLE8', 'alias':'TABLE8'], ['name':'STAGING.TABLE11', 'alias':'TABLE11'], ['name':'STAGING.TABLE12', 'alias':'TABLE12'], ['name':'STAGING.TABLE13', 'alias':'TABLE13'], ['name':'STAGING.TABLE15', 'alias':'TABLE15'], ['name':'STAGING.TABLE14', 'alias':'TABLE14'], ['name':'STAGING.TABLE16', 'alias':'TABLE16'], ['name':'STAGING.TABLE17', 'alias':'TABLE17'], ['name':'STAGING.TABLE42', 'alias':'TABLE42'], ]) .select('TABLE5') .join('JOIN2', ['TABLE7'], [join_condition: "TABLE5.ID = TABLE7.ID" ]) .join('JOIN3', ['TABLE6'], [join_condition: "TABLE6.ID = TABLE7.ID" ]) .connect('TABLE14', [ [ attr: "ID", expression: "TABLE5.ID" ], [ attr: "COL1", expression: "TABLE7.COL1" ], [ attr: "COL2", expression: "TABLE6.COL2" ], [ attr: "COL3", expression: "TABLE7.COL3" ], [ attr: "COL4", expression: "TABLE7.COL4" ], ]) .select('JOIN3') .expr('EXPRESSION1', [attrs: [ [ attr: "ID", expression: "TABLE6.ID * 42", datatype: "NUMERIC", size: "38", scale: "0"]]]) .connect('TABLE15', [ [ attr: "ID", expression: "EXPRESSION1.ID" ], [ attr: "COL1", expression: "", active_indicator: false ], [ attr: "COL2", expression: "TABLE6.COL2" ], [ attr: "COL3", expression: "TABLE7.COL3" ], [ attr: "COL4", expression: "", active_indicator: false ], ]) .join('JOIN', ['TABLE14'], [join_condition: "TABLE14.ID = TABLE15.ID" ]) .filter('FILTER2', [filter_condition: "TABLE15.COL3 != 'FOOBAR'" ]) .connect('TABLE16', [ [ attr: "ID", expression: "TABLE15.ID" ], [ attr: "COL1", expression: "TABLE15.COL1" ], [ attr: "COL2", expression: "TABLE14.COL2" ], [ attr: "COL3", expression: "TABLE14.COL3" ], [ attr: "COL4", expression: "TABLE14.COL4" ], ]) .select('JOIN') .connect('TABLE17', [ [ attr: "ID", expression: "TABLE15.ID" ], [ attr: "COL1", expression: "TABLE15.COL1" ], [ attr: "COL2", expression: "TABLE14.COL2" ], [ attr: "COL3", expression: "TABLE14.COL3" ], [ attr: "COL4", expression: "TABLE14.COL4" ], ]) .select('TABLE5') .sort('SORT1', [sorter_condition: "TABLE5.ID, TABLE5.COL2, TABLE5.COL4" ]) .connect('TABLE13', [ [ attr: "ID", expression: "TABLE5.ID" ], [ attr: "COL1", expression: "TABLE5.COL1" ], [ attr: "COL2", expression: "TABLE5.COL2" ], [ attr: "COL3", expression: "TABLE5.COL3" ], [ attr: "COL4", expression: "TABLE5.COL4" ], ]) .select('TABLE3') .filter('FILTER1', [filter_condition: "TABLE3.ID != 42" ]) .select('TABLE4') .filter('FILTER', [filter_condition: "TABLE4.COL1 = 42" ]) .lookup('LOOKUP1', 'FILTER1', [join_condition: "TABLE4.ID = TABLE3.ID AND TABLE3.COL1 = TABLE4.COL1"]) .join('JOIN5', ['TABLE13'], [join_condition: "TABLE13.ID = TABLE3.ID" ]) .distinct('DISTINCT_', [attrs: [ [ attr: "COL3_1", expression: "TABLE4.COL3", datatype: "VARCHAR", size: "30"], [ attr: "COL4_1", expression: "TABLE4.COL4", datatype: "VARCHAR", size: "30"]]]) .select('DISTINCT_') .join('JOIN4', ['EXPRESSION1'], [join_condition: "TABLE5.ID = TABLE6.COL1" ]) .sort('SORT', [sorter_condition: "EXPRESSION1.ID" ]) .connect('TABLE8', [ [ attr: "ID", expression: "EXPRESSION1.ID" ], [ attr: "COL1", expression: "", active_indicator: false ], [ attr: "COL2", expression: "", active_indicator: false ], [ attr: "COL3", expression: "TABLE7.COL3" ], [ attr: "COL4", expression: "", active_indicator: false ], ]) .connect('TABLE12', [ [ attr: "ID", expression: "TABLE8.ID" ], [ attr: "COL1", expression: "TABLE8.COL1" ], [ attr: "COL2", expression: "TABLE8.COL2" ], [ attr: "COL3", expression: "TABLE8.COL3" ], [ attr: "COL4", expression: "TABLE8.COL4" ], ]) .select('TABLE9') .expr('EXPRESSION', [attrs: [ [ attr: "ID", expression: "TABLE9.ID *42", datatype: "NUMERIC", size: "38", scale: "0"], [ attr: "COL4", expression: "TABLE9.COL4 || 'FOOBAR'", datatype: "VARCHAR", size: "30"]]]) .connect('TABLE1', [ [ attr: "ID", expression: "EXPRESSION.ID" ], [ attr: "COL1", expression: "", active_indicator: false ], [ attr: "COL2", expression: "", active_indicator: false ], [ attr: "COL3", expression: "", active_indicator: false ], [ attr: "COL4", expression: "TABLE9.COL4" ], ]) .join('JOIN1', ['TABLE2'], [join_condition: "TABLE1.ID = TABLE2.ID" ]) .aggregate('AGGREGATE', [attrs: [ [ attr: "ID", expression: "TABLE1.ID", datatype: "NUMERIC", size: "38", scale: "0", group_by: "YES"], [ attr: "COL4_1", expression: "MAX(TABLE2.COL4)", datatype: "VARCHAR", size: "30", group_by: "AUTO"]]]) .lookup('LOOKUP', 'DISTINCT_', [join_condition: "AGGREGATE.ID = DISTINCT_.COL3_1"]) .aggregate('AGGREGATE1', [attrs: [ [ attr: "ID", expression: "AGGREGATE.ID", datatype: "NUMERIC", size: "38", scale: "0", group_by: "YES"], [ attr: "COL4_1_1", expression: "SUM(AGGREGATE.COL4_1)", datatype: "VARCHAR", size: "30", group_by: "AUTO"]]]) .filter('FILTER3', [filter_condition: "AGGREGATE1.COL4_1_1 &gt; 42" ]) .connect('TABLE42', [ [ attr: "ID", expression: "AGGREGATE1.ID" ], ]) .select('AGGREGATE1') .join('JOIN6', ['TABLE8'], [join_condition: "AGGREGATE1.ID = TABLE8.ID" ]) .connect('TABLE11', [ [ attr: "ID", expression: "TABLE8.ID" ], [ attr: "COL1", expression: "" ], [ attr: "COL2", expression: "" ], [ attr: "COL3", expression: "TABLE8.COL3" ], [ attr: "COL4", expression: "TABLE8.COL4" ], ]) .commit() .validate() </code></pre> <p>When we execute this <strong>OdiDsl</strong> code we get, you guessed it, exactly the same crazy mapping with the flow and component properties all intact. <br> <img src="http://www.rittmanmead.com/blog/content/images/2017/03/complex-mapping-11.png" alt=""></p> <p>Being able to flip between ODI studio and <strong>OdiDsl</strong> has some really nice benefits for those who like the workflow. You can start prototyping a mapping in ODI Studio, convert it to code, hack around for a bit and then reflect it all back into ODI. It's also very useful for generating a "code template" from an existing mapping. The generated code template can be modified to accept variables instead of hard coded properties, all you need then is some metadata. <br> <br> </p> <h2 id="didsomebodysaymetadata">Did Somebody Say Metadata ?</h2> <p>Metadata is the key to bulk automation. You can find metadata in all kinds of places. If you are migrating to ODI from another product then there will be a whole mass of metadata living in your current product's repository or via some kind of export routine which typically produces XML files. If you are starting a fresh ODI implementation, then there will be metadata living in your source and target systems, in data dictionaries, in excel sheets, in mapping specifications documents, all over the place really. This is the kind of metadata that can be used to <strong><em>feed</em> OdiDsl</strong>.</p> <p><strong>A Quick Example of One possible Approach to Using OdiDsl With Metadata</strong></p> <p>First we build a mapping in Odi Studio, this will act as our template mapping.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/feedmemetadata.png" alt=""></p> <p>We then generate the equivalent <strong>OdiDsl</strong> code using <code>mapping.reverse('MY_PROJECT', 'DEMO_FOLDER', 'FEED_ME_METADATA')</code>. Which gives us this code.</p> <pre><code>mapping.create('MY_PROJECT', 'DEMO_FOLDER', 'FEED_ME_METADATA') .datastores([ ['name':'STAGING.TABLE1', 'alias':'LOOKUP_TABLE'], ['name':'STAGING.TABLE2', 'alias':'TABLE2'], ['name':'STAGING.TABLE3', 'alias':'TABLE3'], ['name':'STAGING.TABLE4', 'alias':'TARGET_TABLE'], ]) .select('TABLE2') .lookup('LOOKUP', 'LOOKUP_TABLE', [join_condition: "TABLE2.ID = LOOKUP_TABLE.ID"]) .join('JOIN', ['TABLE3'], [join_condition: "TABLE2.ID = TABLE3.ID" ]) .filter('FILTER', [filter_condition: "TABLE3.COL1 = 'FILTER'" ]) .expr('EXPRESSION', [attrs: [ [ attr: "CONSTANT", expression: "42", datatype: "VARCHAR", size: "30"]]]) .connect('TARGET_TABLE', [ [ attr: "ID", expression: "LOOKUP_TABLE.ID" ], [ attr: "COL1", expression: "LOOKUP_TABLE.COL1 || EXPRESSION.CONSTANT" ], [ attr: "COL2", expression: "TABLE2.COL2" ], [ attr: "COL3", expression: "TABLE3.COL3" ], [ attr: "COL4", expression: "LOOKUP_TABLE.COL4" ], ]) .commit() .validate() </code></pre> <p>We now need to decorate this code with some variables, these variables will act as place holders for our metadata. The metadata we are going to use is from a database table, I'm keeping it simple for the purpose of this demonstration but the approach is the same. Our metadata table has 10 rows and from these 10 rows we are going to create 10 mappings, replacing certain properties with the values from the columns.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/data-2.png" alt=""> Remember that <strong>OdiDsl</strong> is expressed in Groovy. That means, as well as <strong>OdiDsl</strong> code, we also have access to the entire Groovy language. In the following code we are using a mixture of Groovy and <strong>OdiDsl</strong>. We are connecting to a database, grabbing our metadata and then looping over <code>mapping.create()</code>, once for each row in our metadata table. The columns in the metadata table are represented as the variables <code>row.datastore</code>, <code>row.constant_expr</code> and <code>row.filter_cond</code>. The code comments indicate where we are substituting these variables in place of our previously hard coded property values. </p> <pre><code>import groovy.sql.Sql // Connect to the database and retrieve rows from the METADATA table. def sqlConn = Sql.newInstance("jdbc:oracle:thin:@hostname:1521/pdborcl", "username", "password", "oracle.jdbc.pool.OracleDataSource") def rows = sqlConn.rows("SELECT * FROM METADATA") sqlConn.close() // For each row in our METADATA table rows.eachWithIndex() { row, index -&gt; mapping.create('MY_PROJECT', 'DEMO_FOLDER', "FEED_ME_METADATA_${index+1}") // Interpolate row number to make the mapping name unique .datastores([ ['name': 'STAGING.TABLE1', 'alias': 'LOOKUP_TABLE'], ['name': "STAGING.${row.datastore}" ], // substitute in a different datastore ['name': 'STAGING.TABLE3', 'alias': 'TABLE3'], ['name': 'STAGING.TABLE4', 'alias': 'TARGET_TABLE'], ]) .select(row.datastore) .lookup('LOOKUP', 'LOOKUP_TABLE', [join_condition: "${row.datastore}.ID = LOOKUP_TABLE.ID"]) // substitute in a different datastore .join('JOIN', ['TABLE3'], [join_condition: "${row.datastore}.ID = TABLE3.ID"]) // substitute in a different datastore .filter('FILTER', [filter_condition: "TABLE3.COL1 = '${row.filter_cond}'"]) // substitute in a different filter condition .expr('EXPRESSION', [attrs: [ [attr: "CONSTANT", expression: row.constant_expr, datatype: "VARCHAR", size: "30"]]]) // substitute in a different constant for the expression .connect('TARGET_TABLE', [ [attr: "ID", expression: "LOOKUP_TABLE.ID"], [attr: "COL1", expression: "LOOKUP_TABLE.COL1 || EXPRESSION.CONSTANT"], [attr: "COL2", expression: "${row.datastore}.COL2"], // substitute in a different datastore [attr: "COL3", expression: "TABLE3.COL3"], [attr: "COL4", expression: "LOOKUP_TABLE.COL4"], ]) .commit() .validate() } </code></pre> <p>Here is the output... </p> <pre><code>Connecting to the repository... mapping FEED_ME_METADATA_1 created Validation Successful mapping FEED_ME_METADATA_2 created Validation Successful mapping FEED_ME_METADATA_3 created Validation Successful mapping FEED_ME_METADATA_4 created Validation Successful mapping FEED_ME_METADATA_5 created Validation Successful mapping FEED_ME_METADATA_6 created Validation Successful mapping FEED_ME_METADATA_7 created Validation Successful mapping FEED_ME_METADATA_8 created Validation Successful mapping FEED_ME_METADATA_9 created Validation Successful mapping FEED_ME_METADATA_10 created Validation Successful </code></pre> <p>And here are our 10 mappings, each with it's own configuration.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/mappings.png" alt=""> If we take a look at the <code>FEED_ME_METADATA_5</code> mapping, we can see the metadata has been reflected into the mapping.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/metamappingannotated.png" alt=""></p> <p>And that's about it. We've basically just built a mini accelerator using <strong>OdiDsl</strong> and we hardly had to write any code. The <strong>OdiDsl</strong> code was generated <em>for</em> us using <code>.reverse()</code>. All we really had to code, was the connection to the database, a loop and bit of variable substitution!</p> <h2 id="summary">Summary</h2> <p>With the Rittman Mead ODI Tool kit, accelerating your ODI implementation has never be easier. If you are thinking about migrating to ODI from another product or embarking on a new ODI Project, Rittman Mead can help. For more information please <a href="mailto:info+tuod@rittmanmead.com">get in touch</a>.</p> Tom Underhill 50098ab2-4bb9-420d-86b3-5554c80f5af4 Thu Mar 09 2017 11:01:16 GMT-0500 (EST) Upcoming ODTUG Webinars http://www.odtug.com/p/bl/et/blogaid=679&source=1 ODTUG Online EducationBelow is the list of upcoming webinars. If there is a topic you would like covered that is not on our current list, or if you would like to present a webinar, please email alicia@odtug.com. Did you miss a webinar? Our Webinar File Library lists all of our webinars and ODTUG http://www.odtug.com/p/bl/et/blogaid=679&source=1 Wed Mar 08 2017 13:31:48 GMT-0500 (EST) Create Your Own DVD Plugin in 22 minutes http://www.rittmanmead.com/blog/2017/03/create-your-own-dvd-plugin-in-22-minutes/ <h2 id="introduction">Introduction</h2> <p>Oracle DVD played well for the task of <a href="https://www.rittmanmead.com/blog/2017/02/analysing-elections-data-with-oracle-data-visualisation-desktop">elections data analysis</a>. But I faced some limitations and had to curtail my use of one of my favourite charts - Scatter chart. While DVD’s implementation of it looks good, has smooth animations and really useful, it is not suitable for visualisations of huge datasets. Election dataset has about 100K election precinct data rows and if I try to plot all of them at one chart I will get something close to this. It doesn't really important what is the data, just compare how charts look like.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/10.png" alt="Picture with Turnout%, United Russia% by PEC"></p> <p>This picture can give us about zero insights. Actually, I'm not even sure if shows my 100K points. What I want to get is something like this: <br> <img src="https://habrastorage.org/files/aa1/95e/747/aa195e7477664873b0f5047b37bb5e45.png" alt="plugin with Turnout%, United Russia% by PEC"> <em>(source: <a href="https://habrahabr.ru/post/313372/">https://habrahabr.ru/post/313372/</a>)</em></p> <p>What can I see at this chart and can't see at the vanilla one? First of all, it gives a much better understanding of points distribution other the plot. I can see a relatively dense core around coordinates [30;40] and then not so dense tail growing by both dimensions and again a small and very dense core in the top right corner. <br> Secondly, it not only shows dense and sparse areas but shows that there are exist a few points which have an unexplainably high concentration. Around [64;62], for example. </p> <p>Luckily DVD allows me (<a href="https://sites.google.com/site/oraclebipublicstore/downloads">and anyone else too</a>) create custom plugins. That's what I'm going to show here. The plugin I'm going to do is something I'd call Minimum Viable Product. It's very, very simple and needs a lot of work to make it good and really useful.</p> <p>The code I'm going to show is the simplest I can invent. It doesn't handle errors, exceptions and so on. It should be more modular. It possibly could use some optimisation. But that was done for a purpose. And the purpose is called 'simplicity'. If you want a more comprehensive sample, there is a link to the Oracle's guide in the Summary. I want to show you that writing a DVD plugin is not a rocket science. It takes less than half an hour to build your own DVD plugin.</p> <p>And the clock starts now!</p> <h2 id="000540setupenvironmentanddvdsdk">[0:00-5:40] Setup Environment and DVD SDK</h2> <h3 id="setup">Setup</h3> <p><a href="http://www.oracle.com/technetwork/middleware/oracle-data-visualization/downloads/oracle-data-visualization-desktop-2938957.html">Download</a> and install DVD. I presume you already have it, because from my experience people who doesn't have it very rarely feel a need for its plugins. Hence I didn't include download and installation times into 22 minutes.</p> <p>Create a folder to store your plugins and some <a href="https://en.wikipedia.org/wiki/Gradle">Gradle</a>-related configs and scripts. It may be any directory you like, just select your favourite place.</p> <p>Next step is to define some environment variables.</p> <ul> <li>The first one is <code>DVDDESKTOP_SDK_HOME</code> and it should point to thу DVD folder. In most of the cases, it is <code>C:\Program files\Oracle Data Visualisation Desktop</code>. </li> <li>The second variable is <code>PLUGIN_DEV_DIR</code> it points to the folder you created 40 seconds ago. These two variables seem not to be absolutely necessary, but they make your life a bit easier.</li> <li>And one more change to the environment before going further. Add <code>%DVDESKTOP_SDK_HOME%\tools\bin</code> to the <code>PATH</code> variable (do you feel how your life became easier with <code>DVDDESKTOP_SDK_HOME</code> already defined so you can start using it right now?). </li> </ul> <p>And the last step is to initialise our development environment. Go to the plugins directory and execute the initialization command. Open <strong>cmd</strong> window and execute: </p> <pre><code>cd %PLUGIN_DEV_DIR% bicreateenv </code></pre> <p>This will not only initialise everything your need but create a sample plugin to explore and research.</p> <p>Let's take a look at what we got. In the folder we have created before (<code>%PLUGIN_DEV_DIR%</code>) this command generated the following structure.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/20.png" alt="a screenshot of %PLUGIN_DEV_DIR%"></p> <p>All names here are more than self-explanatory. You won't need to do anything with <code>.gradle</code> and <code>gradle</code>, and <code>src</code> stores all the code we will develop. Please notice that <code>src</code> already has sample plugin <code>sampleviz</code>. You may use it as a referrence for your own work.</p> <h3 id="createfirstplugin">Create First Plugin</h3> <p>Every plugin consists of a few parts. We don't need to create them from scratch every time. Oracle gives us a simple way of creating a new plugin. If you didn't close <strong>cmd</strong> window from previous steps execute the following: </p> <pre><code>bicreateplugin viz -id com.rittmanmead.demo -subType dataviz </code></pre> <p>Obviously, you should use your own company name for the id. The last word (<strong>demo</strong>) plus word <strong>Plugin</strong> is what user will see as a visualisation name. Obviously we can change it but not today.</p> <p>This will create a fully operational plugin. Where can we find it? You shouldn't be too surprised if I say "In src folder".</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/30.png" alt="a screenshot of %PLUGIN_DEV_DIR%"></p> <p>And we may test it right now. Yes, its functionality is very limited, but you didn't expect it to do something useful, right?</p> <h3 id="startsdk">Start SDK</h3> <p>Now we should start Oracle DVD in SDK mode. The main difference from the normal mode is that DVD will start in the default browser. That's not a typo. DVD will start as a usual site in a browser. It's a good idea to select as the default a browser with good developer console and tools. I prefer Chrome for this task but that's not the only choice. Choose the browser you'd normally use for site development. When you finish with setting up of the default browser do: </p> <pre><code>cd %PLUGIN_DEV_DIR% .\gradlew run </code></pre> <p>If you don't have an ultrafast computer I'd recommend you to make some tea at this point. Because the very first start will take a long time. Actually, it will consume most of the first stage time. <br> <img src="http://www.rittmanmead.com/blog/content/images/2017/03/35.png" alt=""></p> <h2 id="540615testtheplugin">[5:40-6:15] Test the Plugin</h2> <p>We didn't start changing the first plugin yet, so I expect everything to be OK at this point. But anyway it's a good idea to test everything. I think we can afford 30-40 seconds for this.</p> <p>And again I assume you know how to use DVD and don't need a step-by-step guide on creating a simple visualisation. Just create a new project, select any data source, go to <strong>Visualisations</strong>, find your plugin and add it. You may even add some data to the plugin and it will show how many rows your data has. I think that's a good place to start from.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/blankplugin-1.gif" alt="a picture of plugin"></p> <h2 id="6152200addfunctions">[6:15-22:00] Add Functions</h2> <h3 id="changeparameters">Change parameters</h3> <p>If you didn't skip testing phase and played with this new toy for a while you may have noticed two things we need to change right now. First, for a chosen type of visualisation, I need that my plugin can accept two measures. You possibly noticed that I was unable to add <strong>Number of cancelled ballots</strong> as a second measure. By default a plugin accepts not more than one (zero or one). Luckily it can be changed very easily. </p> <p>We can find all parameter about measures, rows, columns etc inside of <code>extensions</code> folder. In this case it is <code>%PLUGIN_DEV_DIR%\customviz\com-rittmanemad-demo\extensions</code>. Here we can find two folders. The first one is <code>oracle.bi.tech.pluginVisualizationDataHandler</code>and it has only one file <code>com.rittmanemad.demo.visualizationDataHandler.JSON</code>. This file allows us to define which types of input data our plugin has (measures, columns, rows, colour etc.), what are their types (measures/dimensions), which is the default one and so on.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/40-2.png" alt="a picture of json and plugin side-by side"> Here we should change <code>maxCount</code> to 2. This will allow us to add more than one measure to our visualisation.</p> <p>The second thing I want to change is the number of data points. Elections dataset has data about 100K precinct commissions. And DVD's default is 10K. We can change this value in the second configuration file from <code>extensions</code> folder. Its name is <code>oracle.bi.tech.Visualization</code>. There is again only one JSON file <code>com.rittmanmead.demo.json</code>. We need to change <code>rows</code> to 200000. </p> <p>Why 200000 if I need only 100000 points? Well, it's about how data will be passed to our code. Every measure is a separate row, so I need 100K points with 2 measures each and that gives me 200000 rows. It looks like right now that's the only way to have more than one measure in a plugin (at least it's my best knowledge for <strong>DVD 12.2.2.2.0-20170208162627</strong>).</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/50-1.png" alt="a picture of json and plugin side-by side"></p> <p><em>Note. I could change here some things like plugin name, input data types shown to user and so on but my aim is simplicity.</em></p> <p>Now we should restart DVD SDK in order to use new parameters.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/55-1.png" alt="two measures and ~200K rows"></p> <h3 id="writecode">Write code</h3> <p>For my custom scatter chart I'm going to use <a href="https://d3js.org">d3js JavaScript library</a>. It will allow me to concentrate more on logic and less on HTML manipulation. To add it to my plugin I should add a couple of strings in the beginning of my code.</p> <p>Before: </p> <pre><code>define(['jquery', 'obitech-framework/jsx', 'obitech-report/datavisualization', 'obitech-reportservices/datamodelshapes', 'obitech-reportservices/events', 'obitech-appservices/logger', 'ojL10n!com-rittmanmead-demo/nls/messages', 'obitech-framework/messageformat', 'css!com-rittmanmead-demo/demostyles'], function($, jsx, dataviz, datamodelshapes, events, logger, messages) { </code></pre> <p>After (I added two lines starting with <em>d3</em>): </p> <pre><code>define(['jquery', 'obitech-framework/jsx', 'obitech-report/datavisualization', 'obitech-reportservices/datamodelshapes', 'obitech-reportservices/events', 'obitech-appservices/logger', 'd3js', 'ojL10n!com-rm-domoViz/nls/messages', 'obitech-framework/messageformat', 'css!com-rittmanmead-demo/demostyles'], function($, jsx, dataviz, datamodelshapes, events, logger, d3, messages) { </code></pre> <p>That's all. Now I can use d3js magic. And that's cool.</p> <p>OK, it's time to make our plugin do something more useful than a simple counting of rows. All plugin code is in <code>demo.js</code> file and the main procedure is <code>render</code>. It is called every time DVD needs to update the visualisation. The initial version of this function is really small. Without comments there are only four rows. It retrieves data, counts rows, then finds a container to write and writes a message.</p> <pre><code>Demo.prototype.render = function(oTransientRenderingContext) { // Note: all events will be received after initialize and start complete. We may get other events // such as 'resize' before the render, i.e. this might not be the first event. // Retrieve the data object for this visualization var oDataLayout = oTransientRenderingContext.get(dataviz.DataContextProperty.DATA_LAYOUT); // Determine the number of records available for rendering on ROW // Because we specified that Category should be placed on ROW in the data model handler, // this returns the number of rows for the data in Category. var nRows = oDataLayout.getEdgeExtent(datamodelshapes.Physical.ROW); // Retrieve the root container for our visualization. This is provided by the framework. It may not be deleted // but may be used to render. var elContainer = this.getContainerElem(); $(elContainer).html(messages.TEXT_MESSAGE.format("Demo Plugin", "" + nRows)); }; </code></pre> <p>First of all, I need to know the actual size of the plotting area. I simply added that after <code>var elContainer = this.getContainerElem();</code>: </p> <pre><code> [...] var elContainer = this.getContainerElem(); //container dimensions var nWidth = $(elContainer).width(); var nHeight = $(elContainer).height(); [...] </code></pre> <p>The template plugin has code for pulling the data into the script (<code>oDataLayout</code> variable). But for my scatter plot, I need to put this data into an array and find the minimum and the maximum value for both measures. This part of the code is my least favourite one. It looks like currently we can't make two separate measures in a custom viz (or at least I can't find the solution), therefore instead of two nice separate measures, I have them as different rows. Like:</p> <table style="width:400px"> <tr><td>...</td><td>...</td><td>...</td></tr> <tr><td>PEC #1</td><td>Turnout,%</td><td>34,8%</td></tr> <tr><td>PEC #1</td><td>United Russia,%</td><td>44,3%</td></tr> <tr><td>PEC #2</td><td>Turnout,%</td><td>62,1%</td></tr> <tr><td>PEC #2</td><td>United Russia,%</td><td>54,2%</td></tr> <tr><td>PEC #3</td><td>Turnout,%</td><td>25,9%</td></tr> <tr><td>PEC #3</td><td>United Russia,%</td><td>33,2%</td></tr> <tr><td>...</td><td>...</td><td>...</td></tr> </table> <p>I really hope that any solution for this will be found. So far I just put even and odd rows into X ad Y coordinates. At the same time, I determine minimum and maximum values for both axes.</p> <pre><code> //temporary measure var tmp_measure; //current measure var cur_measure; var vMinimax=[Number.MAX_VALUE, Number.MIN_VALUE]; var hMinimax=[Number.MAX_VALUE, Number.MIN_VALUE]; for(var i=0;i&lt;nRows;i++){ if(i%2==1){ cur_measure=Number(oDataLayout.getValue(datamodelshapes.Physical.DATA, i, 0, false)); vMinimax[0]=Math.min(vMinimax[0], cur_measure); vMinimax[1]=Math.max(vMinimax[1], cur_measure); points.push([cur_measure,tmp_measure]); } else{ tmp_measure=Number(oDataLayout.getValue(datamodelshapes.Physical.DATA, i, 0, false)); hMinimax[0]=Math.min(hMinimax[0], tmp_measure); hMinimax[1]=Math.max(hMinimax[1], tmp_measure); } } </code></pre> <p>The next part of the code is about handling multiple calls. I should handle things like changing measures or dimensions. I simply delete the old chart and create a new empty one. </p> <pre><code> var oSVG; //Delete old chart if exists d3.select("#DemoViz").remove(); //Create new SVG with id=DemoViz oSVG=d3.select(elContainer).append("svg"); oSVG.attr("id","DemoViz"); //Set plot area size oSVG=oSVG .attr("width", nWidth) .attr("height", nHeight) .append("g"); </code></pre> <p>Now I have an array with data. I have a prepared SVG plot for drawing. And I have no reason not to combine all this into a chart. </p> <pre><code> //Compute scaling factors var hStep=(nWidth-40)/(hMinimax[1]-hMinimax[0]); var vStep=(nHeight-40)/(vMinimax[1]-vMinimax[0]); //Draw oSVG.selectAll("rect") .data(points) .enter() .append("rect") .attr("x", function(d) {return 20+d[1]*hStep;}) .attr("y", function(d) {return nHeight-(20+d[0]*vStep);}) .attr("height",1).attr("width",1) .attr('fill-opacity', 0.3); </code></pre> <p>What I should mention here is opacity. If its value is too high (almost no opacity) the chart looks like this:</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/60.png" alt="0.99"></p> <p>If I make dots more opaque, the chart looks (and works) better. This is how it looks like with <code>fill-opacity=0.3</code>. <br> <img src="http://www.rittmanmead.com/blog/content/images/2017/03/70-2.png" alt="0.99"> Look at the black point in the middle. It's there because a lot of commissions has exactly the same values for both measures. That's how we could find <a href="https://www.rittmanmead.com/blog/2017/02/analysing-elections-data-with-oracle-data-visualisation-desktop/#Saratov">Saratov region anomaly</a>.</p> <h3 id="2200summaryandtodos">[22:00-] Summary and TODOs</h3> <p>This shows how we may enhance Oracle DVD with our own visualisation. Yes, it's really, really, really simple. And it needs a lot of work in order to make it more useful. First of all, we should make it more reliable. This realisation doesn't test input parameters for correctness. And we also need to add interactivity. The chart should be zoomable and selectable. It should work as a filter. It should react to resize. It needs visible axes. And so on. But we can create it in less than a half of hour and I think as a first step it works well. I hope you don't afraid of making your own plugins now.</p> <p>If you need more complex sample, take a look at the <a href="http://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/bi/dvdesktop/viz_plugin/dvd_sdk.html">Oracle's tutorial</a>. It covers some of these TODOs.</p> Andrew Fomin b846abbd-1811-4a84-b754-e24a07b3716d Wed Mar 08 2017 07:45:46 GMT-0500 (EST) Which Version Was It Again? https://medium.com/red-pill-analytics/which-version-was-it-again-e55634267847?source=rss----abcc62a8d63e---4 <figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*P4ChhA_w9yjYADDdLet8dQ.jpeg" /><figcaption><em>Photo Credit to Clem Onojeghuo</em></figcaption></figure><h4>Finding Your OBIEE Version</h4><p>Recently I had to verify the version of an OBIEE installation for a client. As I was already ssh-ed into the Linux machine, I figured there was a way to determine the version without having to log into the presentation server. Turns out I was right, but for thoroughness sake, I’ll cover both approaches.</p><h4>Using Bash (or CMD)</h4><p>Navigate to your installation’s Oracle Home. Next, navigate through the bi directory, and into the bifoundation directory. You’ll find in this directory a file called version.txt. If you open this file, you’ll find all of the relevant details for your installation’s version. Below is a command that will open the file in VI for you. <em>Note: This structure is relevant to both 11g and 12c releases of OBIEE.</em></p><pre>vi &lt;oracle_home&gt;/bi/bifoundation/version.txt</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*EKPjSnIwvbXCxMqlXiYXgg.png" /><figcaption>And here is the version file.</figcaption></figure><h4>Using the Presentation Services</h4><p>Perhaps the easiest way for most people to find the version is to use the “Help” menu in the Analytics Presentation Service. To do this, click on the “Help” menu, and then click on “About Oracle BI EE”. A new window will appear and will display the OBIEE version.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/754/1*FhatD6rqWrTco9Re80ur6A.png" /><figcaption>Tell me all your secrets…</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/602/1*6yZB196k8Suk12AyRisQSg.png" /><figcaption>There’s the version info!</figcaption></figure><h4>Closing Remarks</h4><p>If you’re looking for specific build, server or package information, you’ll definitely need to find the version.txt file. However, if you’re looking for basic versioning information, the presentation services approach is just as informative as the complete file.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e55634267847" width="1" height="1"><hr><p><a href="https://medium.com/red-pill-analytics/which-version-was-it-again-e55634267847">Which Version Was It Again?</a> was originally published in <a href="https://medium.com/red-pill-analytics">Red Pill Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p> Phil Goerdt https://medium.com/p/e55634267847 Tue Mar 07 2017 12:19:10 GMT-0500 (EST) Which Version Was It Again? http://redpillanalytics.com/which-version-was-it-again/ <p><img width="300" height="200" src="https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/clem-onojeghuo-99396.jpg?fit=300%2C200" class="attachment-medium size-medium wp-post-image" alt="" srcset="https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/clem-onojeghuo-99396.jpg?w=5616 5616w, https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/clem-onojeghuo-99396.jpg?resize=300%2C200 300w, https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/clem-onojeghuo-99396.jpg?resize=768%2C512 768w, https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/clem-onojeghuo-99396.jpg?resize=1024%2C683 1024w, https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/clem-onojeghuo-99396.jpg?w=2340 2340w, https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/clem-onojeghuo-99396.jpg?w=3510 3510w" sizes="(max-width: 300px) 100vw, 300px" data-attachment-id="4682" data-permalink="http://redpillanalytics.com/which-version-was-it-again/clem-onojeghuo-99396/" data-orig-file="https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/clem-onojeghuo-99396.jpg?fit=5616%2C3744" data-orig-size="5616,3744" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="search for your version of OBIEE" data-image-description="&lt;p&gt;search for your version of OBIEE&lt;/p&gt; " data-medium-file="https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/clem-onojeghuo-99396.jpg?fit=300%2C200" data-large-file="https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/clem-onojeghuo-99396.jpg?fit=1024%2C683" /></p><p>Recently I had to verify the version of an OBIEE installation for a client. As I was already ssh-ed into the Linux machine, I figured there was a way to determine the version without having to log into the presentation server. Turns out, I was right, but for thoroughness sake, I’ll cover both approaches.</p> <hr /> <h4 id="392e" class="graf graf--h4 graf--leading">Using Bash (or CMD)</h4> <p id="dbf3" class="graf graf--p graf-after--h4">Navigate to your installation’s Oracle Home. Next, navigate through the bi directory, and into the bifoundation directory. You’ll find in this directory a file called version.txt. If you open this file, you’ll find all of the relevant details for your installation’s version. Below is a command that will open the file in VI for you. <em class="markup--em markup--p-em">Note: This structure is relevant to both 11g and 12c releases of OBIEE.</em></p> <pre id="ea94" class="graf graf--pre graf-after--p">vi &lt;oracle_home&gt;/bi/bifoundation/version.txt</pre> <figure id="953f" class="graf graf--figure graf-after--pre"> <div class="aspectRatioPlaceholder is-locked"> <div class="progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded" data-image-id="1*EKPjSnIwvbXCxMqlXiYXgg.png" data-width="1334" data-height="306" data-action="zoom" data-action-value="1*EKPjSnIwvbXCxMqlXiYXgg.png" data-scroll="native"> <p>&nbsp;</p> <div style="width: 350px" class="wp-caption aligncenter"><img class="progressiveMedia-image js-progressiveMedia-image" src="https://i0.wp.com/cdn-images-1.medium.com/max/1600/1*EKPjSnIwvbXCxMqlXiYXgg.png?resize=340%2C66&#038;ssl=1" data-src="https://i0.wp.com/cdn-images-1.medium.com/max/1600/1*EKPjSnIwvbXCxMqlXiYXgg.png?resize=340%2C66&#038;ssl=1" data-recalc-dims="1" /><p class="wp-caption-text">And here is the version file.</p></div> </div> </div><figcaption class="imageCaption"></figcaption></figure> <hr /> <h4 id="e7e3" class="graf graf--h4 graf-after--figure">Using the Presentation Services</h4> <p id="8d38" class="graf graf--p graf-after--h4">Perhaps the easiest way for most people to find the version is to use the “Help” menu in the Analytics Presentation Service. To do this, click on the “Help” menu, and then click on “About Oracle BI EE”. A new window will appear and will display the OBIEE version.</p> <figure id="02cd" class="graf graf--figure graf-after--p"> <div class="aspectRatioPlaceholder is-locked"> <div class="progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded" data-image-id="1*FhatD6rqWrTco9Re80ur6A.png" data-width="754" data-height="370" data-action="zoom" data-action-value="1*FhatD6rqWrTco9Re80ur6A.png" data-scroll="native"> <p>&nbsp;</p> <div style="width: 305px" class="wp-caption aligncenter"><img class="progressiveMedia-image js-progressiveMedia-image" src="https://i0.wp.com/cdn-images-1.medium.com/max/1600/1*FhatD6rqWrTco9Re80ur6A.png?resize=295%2C145&#038;ssl=1" data-src="https://i0.wp.com/cdn-images-1.medium.com/max/1600/1*FhatD6rqWrTco9Re80ur6A.png?resize=295%2C145&#038;ssl=1" data-recalc-dims="1" /><p class="wp-caption-text">Tell me all your secrets…</p></div> </div> </div><figcaption class="imageCaption"> </figcaption></figure> <figure id="a458" class="graf graf--figure graf-after--figure"> <div class="aspectRatioPlaceholder is-locked"> <div id="attachment_4680" style="width: 310px" class="wp-caption aligncenter"><img data-attachment-id="4680" data-permalink="http://redpillanalytics.com/which-version-was-it-again/aboutobiee/" data-orig-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/AboutOBIEE.png?fit=602%2C440" data-orig-size="602,440" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="AboutOBIEE" data-image-description="&lt;p&gt;info about OBIEE version&lt;/p&gt; " data-medium-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/AboutOBIEE.png?fit=300%2C219" data-large-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/AboutOBIEE.png?fit=602%2C440" class="wp-image-4680 size-medium" src="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/AboutOBIEE.png?resize=300%2C219" srcset="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/AboutOBIEE.png?resize=300%2C219 300w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/03/AboutOBIEE.png?w=602 602w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /><p class="wp-caption-text">There’s the version info!</p></div> </div> </figure> <hr /> <h4 id="72b3" class="graf graf--h4 graf-after--figure">Closing Remarks</h4> <p id="d7d0" class="graf graf--p graf-after--h4 graf--trailing">If you’re looking for specific build, server or package information, you’ll definitely need to find the version.txt file. However, if you’re looking for basic versioning information, the presentation services approach is just as informative as the complete file.</p> <p class="graf graf--p graf-after--h4 graf--trailing">Check out our collection of tip posts <a href="http://redpillanalytics.com/category/red-pill-analytics-tips/">here</a>. Subscribe to have them delivered to your inbox <a href="http://eepurl.com/cz5H_r">here</a>.</p> Phil Goerdt http://redpillanalytics.com/?p=4675 Tue Mar 07 2017 09:00:25 GMT-0500 (EST) Including Fusion-on-Cloud Extensions in BIAPPS (Troubleshooting) - Part 3 https://blogs.oracle.com/biapps/entry/including_fusion_on_cloud_extensions2 <p><span style="color: #0003ff;">Authors: </span><span style="color: #0003ff;"><span style="color: #0003ff;">&quot;Yadukrishna Munugoti - Oracle &quot; and </span>&quot;Guna Vasireddy - Oracle&quot;</span> <br /></p> <p><font face="verdana,arial,helvetica,sans-serif" size="2">The <a href="https://blogs.oracle.com/biapps/entry/including_fusion_on_cloud_extensions1">blog1</a> and <a href="https://blogs.oracle.com/biapps/entry/including_fusion_on_cloud_extensions">blog2</a> in this series provided steps on how to get Fusion Flexfields into BIAPPS. This blog, the third in this series, details some common issues you might encounter when doing so and how to resolve those issues.&nbsp;</font></p> <p> <!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:TargetScreenSize>800x600</o:TargetScreenSize> </o:OfficeDocumentSettings> </xml><![endif]--></p> <h4><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:EnableOpenTypeKerning/> <w:DontFlipMirrorIndents/> <w:OverrideTableStyleHps/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="&#45;-"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true" DefSemiHidden="true" DefQFormat="false" DefPriority="99" LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" Priority="39" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" Name="toc 9"/> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/> <w:LsdException Locked="false" Priority="10" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Title"/> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/> <w:LsdException Locked="false" Priority="11" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" Priority="22" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" Priority="59" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/> <w:LsdException Locked="false" Priority="34" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Calibri","sans-serif";} </style> <![endif]--><b><span><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;"><font face="verdana,arial,helvetica,sans-serif" size="2">ODI-40444: Column not found:XXXXXXXXXXXXXXXXXX</font> </span></span></b></h4> <p><font face="verdana,arial,helvetica,sans-serif" size="2">After doing the required configuration to get the Fusion Flexfields into BIAPPS, you might encounter the<b> </b></font><b><span><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">ODI-40444: Column not found </span></span></b><font face="verdana,arial,helvetica,sans-serif" size="2"><b><span><span style="font-size: 11pt; line-height: 115%;"></span></span></b> error at times. This error can occur for a couple of reasons<b>.</b></font></p> <ol> <li><font face="verdana,arial,helvetica,sans-serif" size="2">The flex columns are not present in the Fusion BI Server OTBI RPD.This may happen if the user introduced flex fields in the Fusion Application for the VO but forgot to run BI extender (ESS Job: Import Oracle Fusion Data Extensions for Transactional Business Intelligence) to push those changes to the Fusion BI Server OTBI RPD. </font><font face="verdana,arial,helvetica,sans-serif" size="2"><font face="verdana,arial,helvetica,sans-serif" size="2">This has been the primary reason for this error. </font>To verify if this is cause: Check the source files (.csv &amp; .mdcsv) for the flex VO that are present in UCM (<a href="https://blogs.oracle.com/biapps/entry/obia_fusion_cloud_adaptor_view">blog</a>). If we find that the column list in .mdcsv file (VO’s metadata file) does not match the actual extract column list in the .csv file(data file), then this is indeed the cause. To fix this issue, it is recommended to reset and do a full extract/load. The steps would be (a) Clean up all existing MANIFEST.MF files by deleting them from UCM (Oracle WebContent Server) (b) Run the BI Extender (c) Reset to full extract using BICCC (Refer to BICCC <a href="https://docs.oracle.com/cloud/latest/common/BIACC/GUID-A8BA7B9F-6E31-471B-B0B1-728E757CDB3B.htm#BIACC-GUID-A8BA7B9F-6E31-471B-B0B1-728E757CDB3B">Documentation</a>) (d) Re-run the Data extract again from BICCC Console (e) Reset SDS/WH (Refer to &quot;Functional Configuration Reference Guide&quot; -&gt; Manage Load Plans UI in BIAPPS Documentation) (f) Run the ODI load plan. <br /></font></li> <li><font face="verdana,arial,helvetica,sans-serif" size="2"><font face="verdana,arial,helvetica,sans-serif" size="2">If you are on BIAPPS 10.1 release and the csv file name exceeds 128 characters. As per the ODI File Technology setting in that BIAPPS version, the maximum allowed file name length is 128.Hence while running FTS map, it automatically does trimming on file name length with 128 chars. Hence FTS map is not able to read the csv file (hence ODI-40444 issue). Download and apply the tech note as available in patch (Patch Number </font><font face="verdana,arial,helvetica,sans-serif" size="2"><span id="pt1:r1:0:gts1:gts_pc1:resTbl:0:pgl7" class="x1a">22278058)</span> to resolve this issue.So check the length of the file name in UCM and if the length is longer than 128 characters and you are in BIAPPS 10.1, then apply the above patch. </font><br /></font></li> </ol> <h4><font face="verdana,arial,helvetica,sans-serif" size="2">Verify if the Flex columns are present in the OTBI RPD</font></h4> <p><font face="verdana,arial,helvetica,sans-serif" size="2">Incase you want to check whether the flex columns were successfully imported to the OTBI RPD before proceeding for BICC extract, please follow below steps to validate:</font></p> <ol> <li><font face="verdana,arial,helvetica,sans-serif" size="2">Login to OTBI FA analytics link </font></li> <li><font face="verdana,arial,helvetica,sans-serif" size="2">Go to the Issue SQL OBIEE link </font></li> <li><font face="verdana,arial,helvetica,sans-serif" size="2">Run a simple query to check the column(s) existence in the RPD for a VO.<br />For Example: Below is the example for HCM VO.<br /><span style="color: #fc00ff;">select_physical *&nbsp;&nbsp; FROM&nbsp; &quot;oracle.apps.hcm.model.analytics.applicationModule.HcmTopModelAnalyticsGlobalAM_HcmTopModelGlobalAMLocal&quot;..&quot;HcmTopModelAnalyticsGlobalAM.BaseWorkerAsgDFFBIAM.FLEX_BI_BaseWorkerAsgDFF_VI&quot; </span><br /> Note the count of columns returned by the above query </font></li> <p><img style="max-width: 99%;" src="https://blogs.oracle.com/biapps/resource/foc_issue_biserver_sql.png" /></p> <p align="center"><i>Figure1: Issue SQL from BI Server.</i> <br /></p> <li><font face="verdana,arial,helvetica,sans-serif" size="2">Now get all BI enabled column count using below SQL and this column count should match with 3rd step column count.If you see any difference then you will have to run BI Extender job to make them in sync.Note: we can actually run this sql using Issue SQL link from the BI Presentation services like we executed 3rd step SQL statement. Please change Flex VO’s name/catalog with the one which you are looking for, before running the below SQL. FYI... Below is the example for HCM VO.<br /> <span style="color: #fc00ff;">EXECUTE PHYSICAL CONNECTION POOL &quot;oracle.apps.hcm.model.analytics.applicationModule.HcmTopModelAnalyticsGlobalAM_HcmTopModelGlobalAMLocal&quot;.&quot;Connection Pool&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ADFQuery mode=&quot;view_object_attribute&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ViewObject&gt;HcmTopModelAnalyticsGlobalAM.ContractLegDDFBIAM.FLEX_BI_ContractLegDDF_VI&lt;/ViewObject&gt;<br />&nbsp;&nbsp;&nbsp; &lt;Attribute/&gt;<br />&lt;/ADFQuery&gt;</span> <br /><br />This way you can make sure that you have all BI flex enabled VO columns were successfully imported to the OTBI RPD.</font></li> </ol> <h4><font face="verdana,arial,helvetica,sans-serif" size="2">Limit the number of Flex Columns using the BI Enabled Flag</font></h4> <p><font face="verdana,arial,helvetica,sans-serif" size="2">Are all the flexfields you defined on the VO, relevant for BI? If not, you can restrict the flex extensions in BIAPPS to only those that are relevant to BI. This helps improve performance by restricting the data transfer to only relevant columns. There is also a limit on the how many columns get automatically propagated to the warehouse and this will help ensure the number of columns are within that limit. <br /></font></p> <p><font face="verdana,arial,helvetica,sans-serif" size="2"> When you define a flexfield in Fusion, there is a flag called BI Enabled. Enabling this flag will ensure that this flexfield gets extended to the RPD and will then eventually flow into BIAPPS. If however some columns are not required for BI, then you can disable the flag for those columns.</font></p> <p><a href="https://blogs.oracle.com/biapps/resource/foc_disable_bi_enabled_flag.png"><img style="max-width: 99%;" src="https://blogs.oracle.com/biapps/resource/foc_disable_bi_enabled_flag.png" /></a> </p> <p align="center"><i>Figure2: BI Enabled Flag on Fusion Screen.(Click on image to view a bigger version)</i><br /></p> <p><font face="verdana,arial,helvetica,sans-serif" size="2"></font><font face="verdana,arial,helvetica,sans-serif" size="2">On editing the selected flexfield, you can see the flag for existing flexfields. Disable the flag for the ones that are not required for BI. Note: Disabling this flag, will disable it for OTBI as well. So disable it only if it is not required for OTBI and BIAPPS. There is no current way to disable it only for BIAPPS. </font><br /></p><br /> <p><font face="verdana,arial,helvetica,sans-serif" size="2"></font><br /></p> <ol> </ol> Guna Vasireddy-Oracle https://blogs.oracle.com/biapps/entry/including_fusion_on_cloud_extensions2 Mon Mar 06 2017 23:58:09 GMT-0500 (EST) A Case for Essbase and Oracle Data Visualization http://www.rittmanmead.com/blog/2017/03/a-case-for-essbase-and-oracle-data-visualization/ <p>So it’s the end of the month, or maybe even the end of the quarter. And you’ve found yourself faced, yet again, with the task of pulling whatever data will be needed to produce the usual <a href="https://www.rittmanmead.com/blog/2017/02/financial-reports-which-tool-to-use-part-1/">standardized budgetary and / or finance reports</a>. You’re dreading this as it will probably eat up most of your day just getting the data you need, combing through it to find the metrics you need, and plugging them into your monumentally complicated custom spreadsheet, only to find the numbers are, well, off. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/doge-1.jpg" alt=""></p> <p>Enter Data Visualization (DV), and its lightweight brother application, Data Visualization Desktop (DVD). My bud at RM, Matt Walding, already did a pretty great <a href="https://www.rittmanmead.com/blog/2016/05/oracle-data-visualization-desktop/">post</a> on some of the cursory features of DVD, covering a lot of the important how-tos and what’s whats. So check that out if you need a bit of a walkthrough. Both of these great tools tout that you can go from zero to analysis pretty darn quick, and from the extensive testing and prodding we’ve done with both DV and DVD, this claim is accurate. Now how does this help us, however, in the previous scenario? Well, IT processes being what they are in a lot of mid to large size companies, getting the data we need, to do the crunching we need to do, can be quite the monumental task, let alone the correct data. So when we get it, we are going to want a solution that can take us from zero to report, pretty darn quick.</p> <p><br></p> <p>If you’re the one stuck with doing the crunching, and then providing the subsequent results, your solution or workflow probably resembles one of the following:</p> <p><br></p> <h3> Scenario 1 </h3> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/xcl_sprdsht.jpg" alt=""></p> <p>Emailed a spreadsheet with a ton of rows. Download the csv/xlsx and then crunch the rows into something that you can force into a super spreadsheet that has a ton of moving pieces just waiting to throw an error.</p> <p><br></p> <h3> Scenario 2 </h3> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/ess_xcl_ss.jpg" alt=""></p> <p>You have access to Essbase, which stays pretty fresh, especially as reporting time draws nigh. You connect to Smartview and extract what you need for your report. See scenario 1.</p> <p><br></p> <h3> Scenario 3 </h3> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/obiee_xcl.jpg" alt=""></p> <p>You have OBIEE that you depend on for data dumps, and then just export whatever you need. See scenario 1.</p> <p>While there are no doubt variations on these themes, the bigger picture here is that between the time you receive your dataset and the final report, there are likely a few iterations of said final report. Maybe you’re having to make corrections to your Excel templates, perhaps the numbers on your sheet just aren’t jiving. Whatever the case may be, this part of the process is often the one that can be the most demanding of your time, not to mention the most headache inducing. So what’s the point of my schpeal? Well, wouldn’t it be nice to expedite this part of the whole thing? Let’s take a look at how we can do just that with both Data Visualization in OBIEE and Data Visualization Desktop.</p> <p><br> </p> <h2>Data Visualization</h2> <p>With DV, we can simply access any of our existing OBIEE subject areas to quickly create a basic pivot table. Right away you can see the profound time savings garnered by using DV. What's more, you don't need to feel forced into managing OBIEE on premises, as DV is also part of BICS (Business Intelligence Cloud Service) and DVCS (Data Visualization Cloud Service).</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/ess_sheet.jpg" alt=""></p> <p>Even if you have Smartview, and can do more or less the same thing, what if you wanted to delegate some of the tedium involved in manually crunching all those rows? You could simply hand off an export to another analyst, and have them plug it right into their own instance of Data Visualization Desktop, which, might I add, comes with your purchase of the DV license. This also, however, leads down the slippery slope into <a href="https://www.bedrockdata.com/blog/the-danger-of-data-silos-part-1-where-do-they-come-from">siloing off your department</a>. This approach is essentially doing that, however kept under the quarantine that is DVD, as this blog is touting, and keeping the data with which you are working consistent, you shouldn't be able to do too much damage. The point I'm trying to make is that everything about using DV and DVD as your sort of report crafting and proofing mediums, is super-fluid and smooth. The process from source system to report and over and over again, is super-seamless. Even if I didn't have direct access to the data source I needed, and had to rely on emailed data dumps or other, I can simply upload that sheet right into DV, assign some data types, and get to work. I can even add dynamic filters to the analysis by simply dragging and dropping a column to the filters area. If you're feeling adventurous, you could also display these tables on a dashboard, that perhaps your department looks at to proof them and share in the pleasurable experience that is concocting period-end reporting.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/excel_exp.jpg" alt=""></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/arrow.jpg" alt=""></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/data_upload.jpg" alt=""></p> <p><br></p> <h2>Data Visualization Desktop</h2> <p>Right now, DVD is only out for Windows (with a version for the Mac on the roadmap), which is mostly ok, as most every medium to large size company I have worked with employs Windows as their go-to OS. An analyst can install the program on their desktop machine and be ready to plug away in under 10 minutes. We can take the example spreadsheet above that we dumped out of VA and create our own version of the report right in DVD. One better, we can also blend it with any other source DVD can connect to. This feature, especially, can save lots of time when trying to get your numbers just right for sign off.</p> <h6> Looks Just Like DV </h6> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/DVD_demo.jpg" alt=""></p> <h6> Acts Just Like DV </h6> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/DVD_upload.jpg" alt=""></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/DVD_cols.jpg" alt=""></p> <p>And hold the phone! There's even a native Essbase connector!</p> <p><img src="https://media.giphy.com/media/s2qXK8wAvkHTO/giphy.gif" alt=""></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/cube.jpg" alt=""></p> <h6> Actually One Better Than DV! </h6> <p>Speaking of connectors, check out the rest of the list, as well as the custom <a href="https://www.rittmanmead.com/blog/2016/10/data-visualisation-desktop-data-loading-2/">data flow functionality</a>, which allows you to construct and save in-app data transformations to be invoked again, and again, and again...</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/03/DVD_Connectors.jpg" alt=""></p> <p><br> </p> <h2> Summary </h2> <p>Flexibility is the name of the game with DV and DVD. So sure, while it isn't the ideal tool for creating precisely formatted financial statements for SEC submission, it sure beats massaging and munging all that data in Excel. And once we're happy with our numbers, either by sharing our reports on a dashboard, or export, we can go ahead and plug our numbers right into whatever tool we are going to use to produce the final product. We've covered a couple of really good concepts, so let's just do a bit of a wrap up to make everything a bit more cohesive.</p> <ul> <li><p>We can pull data into Data Visualization from OBIEE, from a spreadsheet, or even mash up the two to handle any inconsistencies that may exist at month's/quarter's end. Note that we can also use Smartview to pull directly to Excel. Note that you will be unable to use the OLAP capabilities of Essbase / Essbase in OBIEE, as the data will presented in DV and DVD as flattened hierarchies.</p></li> <li><p>We can share reports in Data Visualization with other analysts or approvers via a dashboard (note that this is not a supported feature, but something that requires only a 'bit' of a hack) or PDF, or hand off our exported data set for further work. This can be to another person using DV or DVD.</p></li> <li><p>Data Visualization Desktop can connect directly to our Essbase source or utilize a data dump from DV / OBIEE to do further work and analysis on the data set. We can also connect DVD to OBIEE, as posted <a href="https://www.rittmanmead.com/blog/2016/07/connecting-oracle-data-visualization-desktop-obiee/">here</a>, in order to extract an analysis from the web catalog. This will at least save us the step of dumping / emailing the report.</p></li> <li><p>All of this app-to-app compatability encourages a sustainable, functional, and fluid reporting environment (<strong>warning: data silos!</strong>), especially for those who are unfamiliar with the ins and outs of Essbase and / or working with OBIEE.</p></li> </ul> Spencer McGhin 07feff79-9111-43cb-af65-a15d5d483319 Mon Mar 06 2017 13:03:00 GMT-0500 (EST) Real World OBIEE: Demystification of Variables Pt. 1 http://www.rittmanmead.com/blog/2017/03/real-world-obiee-demystification-of-variables-pt-1/ <p>OBIEE has some very powerful features and capabilities when it comes to how we visualize and present our data. There are some features which almost everyone uses (filters, prompts, rename columns ect.) and then some that are less common. In part, I think there is a lot of "noise" that surrounds the explanation of some of these features. Another reason, and probably the most likely, is that a lot of report developers may just don't know that they exist. I can't tell you how many times in one of our <a href="https://www.rittmanmead.com/training/">training courses</a> here at Rittman Mead that someone says "wow, I didn't know I could do that!" or that I get asked, "could you explain how Presentation Variables work?". Now, I am not saying that there is anything wrong with not knowing or being confused when it comes to some of the features in OBIEE. In fact, it's my main purpose in writing this blog series! I want to demystify and show you some of the features and techniques I have used with almost every client I have worked with. Even if you are a seasoned veteran, my goal is to present something in a way that you haven't heard before and spark some ideas in your day-to-day development. So with all of that said, let's dive into part one of the Demystification of Variables.</p> <p>For the first part of this series, I want to talk about using Bins and Presentation Variables together at a report level and also in dashboard prompts. Before we dive into an example, let me talk a little bit about bins and presentation variables. </p> <h2 id="bins">Bins</h2> <p>Sometimes we need to group values differently than what we have available from our column selection. Common examples could be when we need to group products differently than product category, when we need to create a group for items on sale or, maybe the most common I've seen, when we need to create custom groups for certain values and then have a group for the "others". Creating custom groups can be accomplished in a few different ways (selection steps, add new group from the Results tab), but the way I'm going to show you involves using the Bins tab under Edit formula within a column. I'll go over this process shortly when we dive into the example.</p> <h2 id="presentationvariables">Presentation Variables</h2> <p>These are one of the most powerful features in Answers. They are also one of the things that trip people up the most. Think of presentation variables like placeholders and these placeholders are waiting for a value or a group of values to be passed into them. There are really only three parts to the presentation variables we will look at in this example: First you assign the presentation variable (give it a name) in a prompt to pass the value or group of values selected into the second part. The second part is where the placeholder (presentation variable with the same name) is put in a column formula, column heading, text object etc. The third part is called formatting. Formatting is used when you need to apply a certain format to the values coming into the presentation variable placeholder. There are a massive amount of use cases for presentation variables but I am going to cover only a couple of the ones that I've used the most. </p> <p>Make sense? If you're still a little confused or hearing about this for the first time, don't worry. We are going to go through an example that I hope will explain the uses of Bins and Presentation Variables in a way that is concise and clear.</p> <p>Now, lets dive into the example.</p> <h3 id="thescenario">The Scenario</h3> <p>In this example, I am going to work through a hypothetical situation where I am the front-end developer for a coffee shop and I've been asked to create a report for an executive dashboard. The report needs to include Gross Revenue, Net Revenue and # of Orders for the current date for six groups of products (Breakfast Foods, Coffee, Coffee Beans, Tea, Tea Bags and Other) and five location groups which contain all the stores located in four states (California, Massachusetts, District of Columbia, New York and Others). The report needs to be in a table view and the person that requested this report also wants the ability to switch between the two columns for product groups and location groups. They also want a dashboard prompt for selecting from one or more groups for each column. </p> <h3 id="theexample">The Example</h3> <p>Let's start by tackling the custom groups. Since both groups are going to be created from the lowest level of detail for both products and locations, we need to bring in both Product Name and Shop Name columns and also our measures.</p> <p><em>Note: For all of the examples in this blog series I am using OBIEE 12.2.1.2</em></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-9.59.12-AM.png" alt=""></p> <p>I can click on column properties > Edit Formula then click on the Bins tab to start creating my groups. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-10.03.23-AM.png" alt=""></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-10.03.38-AM.png" alt=""></p> <p>In the Bins tab, I can click on Add Bin to start creating my first group. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-10.03.51-AM.png" alt=""></p> <p>Once I click on Add Bin, I am presented with a New Filter window. The process of creating a new group (or bin) is exactly the same as creating a column filter. I can type the values individually, separated by ; or I can click on the search icon to add values manually. In this case, I am going to add them manually.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-10.13.07-AM.png" alt=""></p> <p>Once in the Select Values window, I am going to select all of the products that belong in the first group (Breakfast Foods).</p> <p><em>Note: In this scenario, the person has given me a list of all the products and stores that they want in each group</em></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-10.18.49-AM.png" alt=""></p> <p>Once I'm done adding all the items, clicking OK will take me to the Edit Bin Name window where I can give my new group (or Bin) a custom name. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-10.22.43-AM.png" alt=""></p> <p>Since the person who requested the report probably wants the Others group to be last, I am going to add numerical values to each group. This will give me the flexibility to order columns any way that I choose. After I’m done creating all my Bins, there is a checkbox at the bottom of the Bins window where I can create a custom bin for all other values.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-10.25.29-AM.png" alt=""></p> <p>Clicking OK will return me to the Criteria where I can view the formula that OBIEE generated for all of my selections.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-10.29.03-AM.png" alt=""></p> <p>When using Bins, OBIEE generates a custom Case statement for us. At a high level, a Case statement takes a set of conditions and executes a corresponding statement. In other words, when the <strong>Product Name</strong> column has these values, put them all together an call them <strong>THIS</strong>. </p> <p>If I go to Results, I can see the Bins I just created. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-10.33.20-AM.png" alt=""></p> <p>Now I can return to the Criteria to create the groups for the stores. Upon completion, here is the formula for the Locations:</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-10.35.19-AM.png" alt=""></p> <p>And the result:</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-11.00.09-AM.png" alt=""></p> <p>Now I need to come up with a way to be able to switch between the Product and Location columns I just created. There are a couple of options. Since i'm using OBIEE 12c, I can save both the Products and Locations columns to the web catalog and simply create a column selector just like I would do for any of the columns within a subject area.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-11.20.10-AM.png" alt=""></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-11.23.00-AM.png" alt=""></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-11.23.54-AM.png" alt=""></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-11.25.49-AM.png" alt=""></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-11.27.17-AM.png" alt=""></p> <p>There are two problems with this method. One is that the Save Column As feature is only available from OBIEE 11.1.1.9 forward so, if you are still on 11.1.1.7 or earlier, this method won't work. The second problem is that the request is not just for swapping the Product and Location columns with a prompt but also being able to select individual values for each column with a prompt. To avoid confusion, we probably want the prompt values for each column to change dynamically depending on which column is selected. To accomplish this I am going to use a second method which requires me to do the following:</p> <ol> <li><p>Combine the case statements for both Products and Locations column formulas</p></li> <li><p>Insert two additional case statements along with presentation variables to allow me to switch between the two.</p></li> <li><p>Create a filter for the combined column with a presentation variable to allow me to use prompted values.</p></li> <li><p>Create a variable type dashboard prompt to select between the Product and Locations independently.</p></li> <li><p>Create a dashboard prompt that dynamically changes between the value selections for the Products and Locations.</p></li> </ol> <p>I'm going to start with the first two steps since they require editing the same column formula.</p> <p>I am going to create a new column and copy both my Products and Locations column formulas into the new column's edit formula window and, to make it easier to edit and insert the two additional case statements, I am going to put a blank line between them.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-12.02.26-PM.png" alt=""></p> <p>Now I need to put in my two additional case statements with presentation variables so that I can switch between the two. The syntax and naming convention I am going to use is as follows:</p> <p><em>CASE WHEN @{pv_select}['@']{'Products'} = 'Products' THEN [Products Case Statment]</em></p> <p><em>CASE WHEN @{pv_select}['@']{'Products'} = 'Location' THEN [Locations Case Statment]</em></p> <p>Let me take a moment to examine and explain the presentation variable I'm using.</p> <p>The syntax for putting a presentation variable in a column formula, column heading or text object is as follows:</p> <p><em>@{presentation_variable_name}[formatting]{default_value}</em></p> <p><em>Note: I am going to use the presentation variable name (pv_select) in my variable prompt later in this example</em></p> <p>The default value I have defined (Products) is an optional step that is primarily used for when I want to view my report without any values being passed into the presentation variable. The default value is used when no value has been passed into the presentation variable. </p> <p>Notice that I have also included formatting between the presentation variable name and the default value (['@']). The reason for this is because the prompt values (which will be defined as Products and Locations in the variable prompt I will create) are a string (text) datatype and I have to explicitly define the format I need for the presentation variable value or I will get an error. You have to define formatting using single brackets [] and then encapsulate the @ character with the formatting you need applied to the presentation variable value. Think of the @ character as a sort of shorthand or an abbreviation for the presentation variable itself. </p> <p><em>Note: I could enclose my presentation variable in single quotes to achieve the same results in this senario ('@{pv_select}{Products}'</em>).</p> <p>So, to explain the entire statement another way:</p> <p>CASE WHEN the value of the presentation variable coming from the prompt is equal to 'Products', THEN then use the CASE statment for the product groups</p> <p>CASE WHEN the value of the presentation variable coming from the prompt is equal to 'Location', THEN then use the CASE statment for the location groups</p> <p>My new column formula is as follows:</p> <p>CASE WHEN @{pv_select}['@']{Products} = 'Products' THEN </p> <p>CASE WHEN "Sales - Fact Sales"."Products"."Product Name" IN ('All Butter Croissant','Almond Croissant','Banana and Walnut Muffin','Blueberry Muffin','Caramel Shortbread','Chocolate Chip Muffin','Lemon Drizzle Muffin','Maple Pecan Danish') THEN '1. Breakfast Foods' WHEN "Sales - Fact Sales"."Products"."Product Name" IN ('Americano','Caramel Hot Cocoa','Classic Hot Cocoa','Dark Hot Cocoa','Expresso','Filter Coffee','Iced Caramel Latte','Iced Cocoa','Iced Latte','Iced Mocha','Latte','Macchiato','Mocha','Pain Au Chocolat','Vanilla Hot Cocoa','White Hot Cocoa') THEN '2. Coffee' WHEN "Sales - Fact Sales"."Products"."Product Name" IN ('Arabica Beans','Arabica Ground','Robustica Beans','Robustica Ground','GCBC Special Blend Instant') THEN '3. Coffee Beans' WHEN "Sales - Fact Sales"."Products"."Product Name" IN ('Chai Tea','Chamomile Tea','Earl Grey Tea','Fresh Mint Tea','Jasmine Tea','Spearmint Tea') THEN '4. Tea' WHEN "Sales - Fact Sales"."Products"."Product Name" IN ('Chamomile Tea Bags','Chai Tea Bags','Earl Grey Tea Bags','English Breakfast Tea Bags','Fresh Mint Tea Bags','Jasmine Tea Bags','Spearmint Tea Bags') THEN '5. Tea Bags' ELSE '6. Other' END</p> <p>WHEN @{pv_select}['@']{'Products'} = 'Location' THEN </p> <p>CASE WHEN "Shops"."Shop Name" IN ('SF1 - Fisherman''s Wharf', 'SF2 - South Beach', 'SJ1 - First Street Corridor', 'SV1 - Mountain View') THEN '1. California' WHEN "Shops"."Shop Name" IN ('BO1 - Financial District', 'BO2 - Atlantic Wharf', 'BO3 - Back Bay', 'CA2 - Harvard Square') THEN '2. Massachusetts' WHEN "Shops"."Shop Name" IN ('DC1 - Central Business District', 'DC2 - Dupont Circle') THEN '3. District of Columbia' WHEN "Shops"."Shop Name" IN ('NY1 - Times Square', 'NY2 - Fifth Avenue') THEN '4. New York' ELSE '5. Others' END <br> ELSE 'Other' END*</p> <p>I am also going to use the presentation variable in the column heading so that when I make my selection in the prompt, the column heading will reflect the selection as well.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-27-at-9.34.18-AM.png" alt=""> If I go to my results, notice how only the Products column is showing due to the default value I set when defining my presentation variable.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-2.42.31-PM.png" alt=""></p> <p>If I go back to my column formula and change the default value to be Location instead of Products, the column values will change to the ones defined in my Locations case statment. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-27-at-9.36.11-AM.png" alt=""></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-2.51.20-PM.png" alt=""></p> <p>In order for the report to be filtered for individual values, I need to create a filter using a presentation variable. To do this I am going to create a filter for the column I used to define all of my groups and, instead of selecting a value, I am going to put in a new presentation variable which I will define later when I create the dashboard prompt for the values. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-2.54.39-PM.png" alt=""></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-3.06.22-PM.png" alt=""></p> <p>I am going to name my new presentation variable <em>pv_select_value</em>. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-3.07.05-PM.png" alt=""></p> <p>When a Presentation Variable is added to the filter, two new text boxes appear. The Variable Expr box is where you define the variable to be used and the (default) box is used to add a default value. Notice how I am not using the syntax <em>@{presentation_variable_name}</em>. When defining a presentation variable using the presentation variable option in a filter or in a prompt, you only have to define the name. Once I click ok, OBIEE will insert the proper syntax for me. The default value is optional but, when defining a Presentation Variable within a filter, you have to specify a default value in order to get any results within the analysis. If I run the report with just a presentation variable defined with no default value, I will get the error shown below:</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-24-at-2.32.00-PM.png" alt=""></p> <p>This is because, when the report is run, the query issued is trying to use the value of the presentation variable. Since there is no default value specified, it is trying to use the presentation variable name itself as a value. If I specify a default value or a list of default values, the report will use those values in the absence of a value or values in the presentation variable. Because I want all of the values to be shown initially on the dashboard, I am going to use the <em>Convert this filter to SQL</em> option and input all of the values for the product group manually for the list of default values. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-24-at-2.23.01-PM.png" alt=""></p> <p>If I run the report with the default values specified, I get the results back for the product group.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-24-at-2.47.49-PM.png" alt=""></p> <p>In order for the filter to work with the column prompt I will create later in this example, it requires the [formatting] syntax to be used (<em>@{pv_select_value}['@']{'1. Breakfast Foods', '2. Coffee', '3. Coffee Beans', '4. Tea', '5. Tea Bags', '6. Other'})</em> for example). This will encapsulate each value passed into the <em>pv_select_value</em> presentation variable with single quotes.</p> <p>Now I need to add an additional filter on the same column using the same <em>pv_select_value</em> presentation variable. The reason for this is because I need to define each default value for the location group as well so that all of the values for location will be shown on the dashboard. To do this, I am going use the same process that I used for the product group filter. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-27-at-10.45.06-AM.png" alt=""></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-27-at-10.46.38-AM.png" alt=""></p> <p>There is one additional step that I need to do in order to make the filter work for both products and locations. When you initially create report filters, OBIEE assumes that you want to use all filters together at the same time therefore it uses 'AND' for each filter created after the initial filter.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-27-at-10.51.06-AM.png" alt=""></p> <p>If I run the report, I will get an error because the filter is being applied for both the products and location values. Because the case statment is defined for products and locations independently, I can not use all values in a filter at the same time.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-27-at-10.55.36-AM.png" alt=""></p> <p>To fix this, I need to change the operator for the location filter from 'AND' to 'OR'. I can do this by simply clicking on the 'AND' icon.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-27-at-10.59.10-AM.png" alt=""></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-27-at-11.00.45-AM.png" alt=""></p> <p>Now the report will run because only the first set of conditions for the product group filter is applied. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-27-at-11.01.34-AM.png" alt=""></p> <p>Now I need to create my two dashboard prompts: One for the initial selection between my two case statements for Products and Locations and one for the values.</p> <p>I start by creating a new dashboard prompt and create a new Variable Prompt.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-3.36.07-PM.png" alt=""></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-3.36.33-PM.png" alt=""></p> <p>Because this is a variable prompt, I have to manually specify the values I want the user to be able to select from as well as define the presentation variable. Since I am creating the prompt for switching between the two case statements for Products and Locations, I am going to make the following selections and input the following values.</p> <p>Prompt for: Presentation Variable > pv_select</p> <p>User Input: Choice List</p> <p>Choice List Values: Custom Values </p> <p>Values: Products and Location</p> <p>Default Selection: Specific Custom Value > Products</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-3.51.06-PM.png" alt=""></p> <p>As you can see, I have defined the variable that we used in the column formula for the case statements. By defining the two custom values (Products and Location), I can select between the two case statements at will and, as far as the user is concerned, it will be just like using a column prompt within a report. Also, the default value needs to be specified for reasons I will explain when creating the next prompt for the values.</p> <p>Now I am going to create a column prompt for the values. </p> <p>First, I need to create a new column prompt and put in the same column formula that I used earlier in my report. I can do that by clicking on the fx icon and pasting in the column formula. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-4.03.45-PM.png" alt=""></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-27-at-11.06.06-AM.png" alt=""></p> <p>Essentially what I am doing is making the column values populate for the prompt by using the same case statement definitions and they will also change depending on the value selected in the prompt we created previously. </p> <p>For the choice list of values, I can simply leave the default of All Column Values. Since the values will dynamically change depending on the initial prompt value in the variable prompt, it will only show values corresponding to each selection. </p> <p>I do not need to define a default selection because I set the default values in the two filters I created in my report.</p> <p>Finally, all that is left to do is define the <em>pv_select_value</em> presentation variable I defined for the filter of the case statement column in the report. This is how I will get all of the values to be shown for each initial prompt selection and also how I will select individual values. The default values will be passed into the filter via the <em>pv_select_value</em> presentation variable initially which will prompt all the values to be shown and then individual selections will be passed in the same way. <br> <img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-27-at-11.09.34-AM.png" alt=""></p> <p>Here are the results when placed on the dashboard.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-4.45.57-PM.png" alt=""></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-4.47.44-PM.png" alt=""></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-4.48.30-PM.png" alt=""></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-4.50.07-PM.png" alt=""></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Screen-Shot-2017-02-23-at-4.50.35-PM.png" alt=""></p> <p>So that concludes part 1 of Demystification of Variables. Please feel free to ask questions or leave me a comment! In part 2, I am going to talk about using Repository, System and Presentation Variables to make reports dynamic for any series of time. Until next time. </p> Matthew Walding 8e7488f8-fa8d-4d47-962f-1c7368826ac4 Mon Mar 06 2017 11:36:19 GMT-0500 (EST) Red Pill Heads Back to Vegas for Collaborate17 http://redpillanalytics.com/red-pill-heads-back-to-vegas-for-collaborate17/ <p><img width="300" height="199" src="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/qzuzkcxdiou-james-walsh.jpg?fit=300%2C199" class="attachment-medium size-medium wp-post-image" alt="Collaborate17 Las Vegas" srcset="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/qzuzkcxdiou-james-walsh.jpg?w=3495 3495w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/qzuzkcxdiou-james-walsh.jpg?resize=300%2C199 300w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/qzuzkcxdiou-james-walsh.jpg?resize=768%2C511 768w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/qzuzkcxdiou-james-walsh.jpg?resize=1024%2C681 1024w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/qzuzkcxdiou-james-walsh.jpg?w=2340 2340w" sizes="(max-width: 300px) 100vw, 300px" data-attachment-id="4587" data-permalink="http://redpillanalytics.com/red-pill-heads-back-to-vegas-for-collaborate17/qzuzkcxdiou-james-walsh/" data-orig-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/qzuzkcxdiou-james-walsh.jpg?fit=3495%2C2324" data-orig-size="3495,2324" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Collaborate17 Las Vegas" data-image-description="&lt;p&gt;Collaborate17 Las Vegas&lt;/p&gt; " data-medium-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/qzuzkcxdiou-james-walsh.jpg?fit=300%2C199" data-large-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/qzuzkcxdiou-james-walsh.jpg?fit=1024%2C681" /></p><p>Red Pill Analytics is looking forward to heading back to Las Vegas for <a href="http://www.attendcollaborate.com">Collaborate17 </a>on April 2– 6, 2016. We are lucky to have our presenters join the amazing list of presentations and panels on the <a class="twitter-hashtag pretty-link js-nav" dir="ltr" href="https://twitter.com/hashtag/C17LV?src=hash" data-query-source="hashtag_click">#C17LV</a> schedule.</p> <p>&nbsp;</p> <p>Make sure to add these great sessions from Red Pill Analytics to your <a href="http://www.attendcollaborate.com">Collaborate17</a> schedule.</p> <hr /> <div class="cols-wrapper cols-2 one3-two3"> <div class="col"><img data-attachment-id="4589" data-permalink="http://redpillanalytics.com/red-pill-heads-back-to-vegas-for-collaborate17/mktwitterimage/" data-orig-file="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/MKTwitterImage.jpg?fit=400%2C400" data-orig-size="400,400" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Michelle Kolbe Twitter Image" data-image-description="&lt;p&gt;Michelle Kolbe Twitter Image&lt;/p&gt; " data-medium-file="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/MKTwitterImage.jpg?fit=300%2C300" data-large-file="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/MKTwitterImage.jpg?fit=400%2C400" class="size-thumbnail wp-image-4589 alignright" src="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/MKTwitterImage.jpg?resize=150%2C150" alt="Michelle Kolbe Twitter Image" srcset="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/MKTwitterImage.jpg?resize=150%2C150 150w, https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/MKTwitterImage.jpg?resize=300%2C300 300w, https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/MKTwitterImage.jpg?w=400 400w" sizes="(max-width: 150px) 100vw, 150px" data-recalc-dims="1" /></div> <div class="col nomargin"> <h4><a href="https://app.attendcollaborate.com/event/member/333642">Up Your Analytics Ante With Oracle Advanced Analytics</a></h4> <p><a href="https://twitter.com/MeKolbe"><strong>Michelle Kolbe, Red Pill Analytics</strong></a><br /> Apr 3, 2017<br /> 4:15 PM – 5:15 PM</p> </div> </div> <p>Tomorrow&#8217;s analytics are the addition of today&#8217;s descriptive analytics with predictive and prescriptive insights. From uncovering patterns and sentiment in unstructured text, to examining demographic factors and historical trends to predict future behavior, to proactively prescribing actions to improve future outcomes, tomorrow&#8217;s analytics go above and beyond the reporting and examination of trends in KPIs and key metrics. With Oracle Advanced Analytics, you can deliver tomorrow&#8217;s analytics today within your existing analytics platform.</p> <p>This session will detail the advanced analytics concept and the supporting functionality delivered by the Oracle Advanced Analytics offering. Topics will include:</p> <ul> <li>What is Advanced Analytics?</li> <li>Overview of Oracle Advanced Analytics</li> <li>Deliver Tomorrow&#8217;s Analytics Today</li> <li>Use Cases</li> <li>Demos of Use Cases Using Oracle Advanced Analytics</li> <li>Get Started with Advanced Analytics in Your Own Organization</li> </ul> <p>During this session, attendees will gain a thorough understanding of the concepts and importance of advanced analytics and its role in the future of BI and analytics. We will not only highlight the technical offerings of the Oracle Advanced Analytics product, but we will also detail various advanced analytics use cases and demo their delivery via the different components of the Oracle Advanced Analytics product. At the conclusion of the session, attendees will be well equipped to begin advanced analytics initiatives within their own organizations, no matter their current level of analytic maturity.</p> <hr /> <div class="cols-wrapper cols-2 one3-two3"> <div class="col"> <p><img data-attachment-id="4590" data-permalink="http://redpillanalytics.com/red-pill-heads-back-to-vegas-for-collaborate17/sbtwitterimage/" data-orig-file="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/SBTwitterImage.jpg?fit=400%2C400" data-orig-size="400,400" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Stewart Bryson Twitter Image" data-image-description="&lt;p&gt;Stewart Bryson Twitter Image&lt;/p&gt; " data-medium-file="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/SBTwitterImage.jpg?fit=300%2C300" data-large-file="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/SBTwitterImage.jpg?fit=400%2C400" class="size-thumbnail wp-image-4590 alignright" src="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/SBTwitterImage.jpg?resize=150%2C150" alt="" srcset="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/SBTwitterImage.jpg?resize=150%2C150 150w, https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/SBTwitterImage.jpg?resize=300%2C300 300w, https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/SBTwitterImage.jpg?w=400 400w" sizes="(max-width: 150px) 100vw, 150px" data-recalc-dims="1" /></p> </div> <div class="col nomargin"> <h4><a href="https://app.attendcollaborate.com/event/member/318770">Data Streaming and Analytic Microservices</a></h4> <p><strong><a href="https://twitter.com/stewartbryson">Stewart Bryson, Red Pill Analytics</a></strong><br /> Apr 4, 2017<br /> 11:00 AM – 12:00 PM</p> </div> </div> <p>While traditional data warehouses excel at sourcing data from enterprise applications, they usually fail at handling the volume, velocity and variety of data for modern analytics applications relying on Big and Fast Data. Instead of modeling these data sources into a system that doesn&#8217;t fit, let&#8217;s apply a new software design pattern to analytics: microservices. Microservices are small, independent applications–building blocks that provide only a distinct subset of functionality–that can be stacked together to build an end-to-end platform.</p> <p>In this presentation, we&#8217;ll explore using Apache Kafka and the Confluent Platform 3.0 as the data streaming hub for ingesting data bound for downstream analytic applications: an enterprise data warehouse, a Hadoop cluster for batch processing, and lightweight, purpose-built microservices in the Cloud or on-premises. Experience the next generation of analytic platforms.</p> <hr /> <div class="cols-wrapper cols-2 one3-two3"> <div class="col"><img data-attachment-id="4589" data-permalink="http://redpillanalytics.com/red-pill-heads-back-to-vegas-for-collaborate17/mktwitterimage/" data-orig-file="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/MKTwitterImage.jpg?fit=400%2C400" data-orig-size="400,400" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Michelle Kolbe Twitter Image" data-image-description="&lt;p&gt;Michelle Kolbe Twitter Image&lt;/p&gt; " data-medium-file="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/MKTwitterImage.jpg?fit=300%2C300" data-large-file="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/MKTwitterImage.jpg?fit=400%2C400" class="size-thumbnail wp-image-4589 alignright" src="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/MKTwitterImage.jpg?resize=150%2C150" alt="Michelle Kolbe Twitter Image" srcset="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/MKTwitterImage.jpg?resize=150%2C150 150w, https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/MKTwitterImage.jpg?resize=300%2C300 300w, https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/MKTwitterImage.jpg?w=400 400w" sizes="(max-width: 150px) 100vw, 150px" data-recalc-dims="1" /></div> <div class="col nomargin"> <h4><a href="https://app.attendcollaborate.com/event/member/333506">Women in Technology Panel Discussion</a></h4> <p>Apr 5, 2017<br /> 9:45 AM – 10:45 AM</p> <p>Kathleen Fauerbach, City of Las Vegas<br /> Denise Grills, JD Edwards<br /> Andee Harris, High Ground<br /> <a href="https://twitter.com/MeKolbe"><strong>Michelle Kolbe, Red Pill Analytics</strong></a></p> </div> </div> <p>An exciting panel of women in the technology field provides a forum to discuss personal experiences and strategies for success. Men are welcome!</p> <div data-user-id="1349732"> <hr /> </div> <div class="cols-wrapper cols-2 one3-two3"> <div class="col"> <p> <img data-attachment-id="4589" data-permalink="http://redpillanalytics.com/red-pill-heads-back-to-vegas-for-collaborate17/mktwitterimage/" data-orig-file="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/MKTwitterImage.jpg?fit=400%2C400" data-orig-size="400,400" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Michelle Kolbe Twitter Image" data-image-description="&lt;p&gt;Michelle Kolbe Twitter Image&lt;/p&gt; " data-medium-file="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/MKTwitterImage.jpg?fit=300%2C300" data-large-file="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/MKTwitterImage.jpg?fit=400%2C400" class="size-thumbnail wp-image-4589 alignright" src="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/MKTwitterImage.jpg?resize=150%2C150" alt="Michelle Kolbe Twitter Image" srcset="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/MKTwitterImage.jpg?resize=150%2C150 150w, https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/MKTwitterImage.jpg?resize=300%2C300 300w, https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/MKTwitterImage.jpg?w=400 400w" sizes="(max-width: 150px) 100vw, 150px" data-recalc-dims="1" /></p> </div> <div class="col nomargin"> <h4><a href="https://app.attendcollaborate.com/event/member/333644">Using R for Data Profiling</a></h4> <p><a href="https://twitter.com/MeKolbe"><strong>Michelle Kolbe, Red Pill Analytics</strong></a><br /> Apr 5, 2017<br /> 1:30 PM – 2:30 PM<a href="https://app.attendcollaborate.com/event/member/333644"> </a></p> </div> </div> <p>The benefits of knowing your data before embarking on a BI or big data project are endless. Sure you can buy a tool to help with this. Or you could use R, an open source tool. This session will dig into methods for using R to connect to your data source to see visual and tabular analyses of your dataset. You&#8217;ll learn how to find missing data, outliers, and unexpected values. If you don&#8217;t know R or you are wanting to learn more functions within R, you&#8217;ll benefit from this session.</p> <hr /> <div class="cols-wrapper cols-2 one3-two3"> <div class="col"> <p> <img data-attachment-id="4590" data-permalink="http://redpillanalytics.com/red-pill-heads-back-to-vegas-for-collaborate17/sbtwitterimage/" data-orig-file="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/SBTwitterImage.jpg?fit=400%2C400" data-orig-size="400,400" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Stewart Bryson Twitter Image" data-image-description="&lt;p&gt;Stewart Bryson Twitter Image&lt;/p&gt; " data-medium-file="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/SBTwitterImage.jpg?fit=300%2C300" data-large-file="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/SBTwitterImage.jpg?fit=400%2C400" class="size-thumbnail wp-image-4590 alignright" src="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/SBTwitterImage.jpg?resize=150%2C150" alt="" srcset="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/SBTwitterImage.jpg?resize=150%2C150 150w, https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/SBTwitterImage.jpg?resize=300%2C300 300w, https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/02/SBTwitterImage.jpg?w=400 400w" sizes="(max-width: 150px) 100vw, 150px" data-recalc-dims="1" /></p> </div> <div class="col nomargin"> <h4><a href="https://app.attendcollaborate.com/event/member/333546">Does Your Data Have a Story? Find Out with Oracle Data Visualization</a></h4> <p><strong><a href="https://twitter.com/stewartbryson">Stewart Bryson, Red Pill Analytics</a></strong></p> <p><strong><a href="https://twitter.com/mikedurran">Mike Durran, Oracle Corporation<br /> </a></strong>Apr 5, 2017<br /> 2:45 PM – 3:45 PM</p> </div> </div> <p>Oracle Data Visualization makes it easy to get insight from your data. This stunningly visual and intuitive desktop application enables you to access, blend, and wrangle a variety of sources including spreadsheets, databases, and applications and tell the story of your data. In this session learn about the capabilities of Oracle Data Visualization to create compelling analytics narratives including how you can rapidly apply advanced analytics techniques to gain insights previously only accessible to advanced users.</p> <hr /> <p>&nbsp;</p> <p>If you are attending Collaborate17 and would like to meet up with Red Pill Analytics, please contact us at <a href="mailto:info@redpillanalytics.com">info@redpillanalytics.com</a>.</p> <p>Learn more about Collaborate17 and register to attend <a href="http://www.attendcollaborate.com">here</a>.</p> <p>For other events Red Pill Analytics will be attending, check out our <a href="http://redpillanalytics.com/events/">events page</a>.</p> <p>&nbsp;</p> Lauren Prezby http://redpillanalytics.com/?p=4529 Mon Mar 06 2017 10:27:18 GMT-0500 (EST) Ravello: My Intro to Oracle’s IaaS https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/ <p><img data-attachment-id="1386" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image055-4/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image055.png" data-orig-size="265,39" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image055" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image055.png?w=300&#038;h=44" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image055.png?w=300&#038;h=44" class="alignnone size-medium wp-image-1386" src="https://epmqueen.files.wordpress.com/2017/03/image055.png?w=300&#038;h=44" alt="" srcset="https://epmqueen.files.wordpress.com/2017/03/image055.png 265w, https://epmqueen.files.wordpress.com/2017/03/image055.png?w=150&amp;h=22 150w" sizes="(max-width: 265px) 100vw, 265px" /></p> <p>I really like VM technology. Whether it be a Windows VM on my MacBook or a Linux VM on my Windows machine, I enjoy the flexibility of options. Particularly having a VM that mimics a large environment, like Oracle Business Intelligence (OBIEE) and their <a href="http://www.oracle.com/technetwork/middleware/bi-foundation/obiee-samples-167534.html">SampleApp VM</a> for learning. (Note: You can also add a sample EPM environment to learn Essbase and Planning.)</p> <p>About a year ago Oracle purchased <a href="http://www.ravellosystems.com/">Ravello Systems</a>, a product that allows you to run VM’s in the public cloud. Why is this important? Think about the space required for a VM. The main one I use on my machine is around 50GB. I would gain a lot more space by offloading this VM to a cloud. Also, sharing, copying, creating, and deleting VMs in Ravello is very, very simple. Much simpler than traditional methods. I wanted to take today and show two options available to Ravello users. (Note: As with all Oracle Cloud products, you can request a free trial by going to <a href="http://www.ravellosystems.com">www.ravellosystems.com</a> or <a href="http://cloud.oracle.com/">cloud.oracle.com</a>.)</p> <p>The first option I’m going to show is uploading a VM from your machine to the Ravello VM cloud.</p> <p>1. Once logged into Ravello, click on the “Library” tab on the left side of the screen. Next, choose “Import VM”.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image056.png"><img data-attachment-id="1387" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image056-2/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image056.png" data-orig-size="624,309" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image056" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image056.png?w=300&#038;h=149" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image056.png?w=624" class="alignnone size-medium wp-image-1387" src="https://epmqueen.files.wordpress.com/2017/03/image056.png?w=300&#038;h=149" alt="" width="300" height="149" srcset="https://epmqueen.files.wordpress.com/2017/03/image056.png?w=300&amp;h=149 300w, https://epmqueen.files.wordpress.com/2017/03/image056.png?w=600&amp;h=298 600w, https://epmqueen.files.wordpress.com/2017/03/image056.png?w=150&amp;h=74 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>2. If you do not have the Ravello Import Tool installed on your machine, you will be prompted to download the exe and install the tool. Once installed, you will be brought to a browser tab that is actually addressed to your machine. Enter your credentials and login to Ravello.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image057.png"><img data-attachment-id="1388" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image057-4/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image057.png" data-orig-size="624,471" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image057" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image057.png?w=300&#038;h=226" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image057.png?w=624" class="alignnone size-medium wp-image-1388" src="https://epmqueen.files.wordpress.com/2017/03/image057.png?w=300&#038;h=226" alt="" width="300" height="226" srcset="https://epmqueen.files.wordpress.com/2017/03/image057.png?w=300&amp;h=226 300w, https://epmqueen.files.wordpress.com/2017/03/image057.png?w=600&amp;h=452 600w, https://epmqueen.files.wordpress.com/2017/03/image057.png?w=150&amp;h=113 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>3. You will be brought to the upload screen.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image058.jpg"><img data-attachment-id="1389" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image058-3/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image058.jpg" data-orig-size="624,223" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image058" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image058.jpg?w=300&#038;h=107" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image058.jpg?w=624" class="alignnone size-medium wp-image-1389" src="https://epmqueen.files.wordpress.com/2017/03/image058.jpg?w=300&#038;h=107" alt="" width="300" height="107" srcset="https://epmqueen.files.wordpress.com/2017/03/image058.jpg?w=300&amp;h=107 300w, https://epmqueen.files.wordpress.com/2017/03/image058.jpg?w=600&amp;h=214 600w, https://epmqueen.files.wordpress.com/2017/03/image058.jpg?w=150&amp;h=54 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>4. Depending on your VM file type, choose the correct option. I am loading a VMDK, so I’ll select that option.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image059.jpg"><img data-attachment-id="1390" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image059-4/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image059.jpg" data-orig-size="625,218" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image059" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image059.jpg?w=300&#038;h=105" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image059.jpg?w=625" class="alignnone size-medium wp-image-1390" src="https://epmqueen.files.wordpress.com/2017/03/image059.jpg?w=300&#038;h=105" alt="" width="300" height="105" srcset="https://epmqueen.files.wordpress.com/2017/03/image059.jpg?w=300&amp;h=105 300w, https://epmqueen.files.wordpress.com/2017/03/image059.jpg?w=600&amp;h=210 600w, https://epmqueen.files.wordpress.com/2017/03/image059.jpg?w=150&amp;h=52 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>5. Click “Start”.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image060.jpg"><img data-attachment-id="1391" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image060-3/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image060.jpg" data-orig-size="624,180" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image060" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image060.jpg?w=300&#038;h=87" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image060.jpg?w=624" class="alignnone size-medium wp-image-1391" src="https://epmqueen.files.wordpress.com/2017/03/image060.jpg?w=300&#038;h=87" alt="" width="300" height="87" srcset="https://epmqueen.files.wordpress.com/2017/03/image060.jpg?w=300&amp;h=87 300w, https://epmqueen.files.wordpress.com/2017/03/image060.jpg?w=600&amp;h=174 600w, https://epmqueen.files.wordpress.com/2017/03/image060.jpg?w=150&amp;h=43 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>6. Migrate to the directory where your VM’s are saved and select the items you would like imported into the cloud.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image061.png"><img data-attachment-id="1392" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image061-3/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image061.png" data-orig-size="624,419" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image061" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image061.png?w=300&#038;h=201" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image061.png?w=624" class="alignnone size-medium wp-image-1392" src="https://epmqueen.files.wordpress.com/2017/03/image061.png?w=300&#038;h=201" alt="" width="300" height="201" srcset="https://epmqueen.files.wordpress.com/2017/03/image061.png?w=300&amp;h=201 300w, https://epmqueen.files.wordpress.com/2017/03/image061.png?w=600&amp;h=402 600w, https://epmqueen.files.wordpress.com/2017/03/image061.png?w=150&amp;h=101 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>7. Once you have selected your files, choose “Upload”.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image062.png"><img data-attachment-id="1393" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image062-2/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image062.png" data-orig-size="624,424" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image062" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image062.png?w=300&#038;h=204" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image062.png?w=624" class="alignnone size-medium wp-image-1393" src="https://epmqueen.files.wordpress.com/2017/03/image062.png?w=300&#038;h=204" alt="" width="300" height="204" srcset="https://epmqueen.files.wordpress.com/2017/03/image062.png?w=300&amp;h=204 300w, https://epmqueen.files.wordpress.com/2017/03/image062.png?w=600&amp;h=408 600w, https://epmqueen.files.wordpress.com/2017/03/image062.png?w=150&amp;h=102 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>8. Depending on how large your VM is and your internet connection speed (mine is turtle in peanut butter slow), it may take a while to upload the VM. However, you will get a live feed of the progress.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image063.jpg"><img data-attachment-id="1394" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image063-2/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image063.jpg" data-orig-size="624,159" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image063" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image063.jpg?w=300&#038;h=76" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image063.jpg?w=624" class="alignnone size-medium wp-image-1394" src="https://epmqueen.files.wordpress.com/2017/03/image063.jpg?w=300&#038;h=76" alt="" width="300" height="76" srcset="https://epmqueen.files.wordpress.com/2017/03/image063.jpg?w=300&amp;h=76 300w, https://epmqueen.files.wordpress.com/2017/03/image063.jpg?w=597&amp;h=152 597w, https://epmqueen.files.wordpress.com/2017/03/image063.jpg?w=150&amp;h=38 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>9. Once finished, you will not get a confirmation other than the “Status” being “Completed”.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image064.jpg"><img data-attachment-id="1395" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image064-2/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image064.jpg" data-orig-size="624,158" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image064" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image064.jpg?w=300&#038;h=76" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image064.jpg?w=624" class="alignnone size-medium wp-image-1395" src="https://epmqueen.files.wordpress.com/2017/03/image064.jpg?w=300&#038;h=76" alt="" width="300" height="76" srcset="https://epmqueen.files.wordpress.com/2017/03/image064.jpg?w=300&amp;h=76 300w, https://epmqueen.files.wordpress.com/2017/03/image064.jpg?w=600&amp;h=152 600w, https://epmqueen.files.wordpress.com/2017/03/image064.jpg?w=150&amp;h=38 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>10. The VM will now be available in the Library. A note that you can view/add notes about the VM by clicking on the icon shown below.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image065.png"><img data-attachment-id="1396" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image065/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image065.png" data-orig-size="623,145" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image065" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image065.png?w=300&#038;h=70" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image065.png?w=623" class="alignnone size-medium wp-image-1396" src="https://epmqueen.files.wordpress.com/2017/03/image065.png?w=300&#038;h=70" alt="" width="300" height="70" srcset="https://epmqueen.files.wordpress.com/2017/03/image065.png?w=300&amp;h=70 300w, https://epmqueen.files.wordpress.com/2017/03/image065.png?w=600&amp;h=140 600w, https://epmqueen.files.wordpress.com/2017/03/image065.png?w=150&amp;h=35 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>11. Here is an example of what the inside of that note looks like. You can enter whatever details you would like and is particularly useful if you plan to share or copy this VM for others to use. A good use of this space is to relay usernames, passwords, port details, etc.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image066.png"><img data-attachment-id="1397" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image066-2/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image066.png" data-orig-size="625,309" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image066" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image066.png?w=300&#038;h=148" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image066.png?w=625" class="alignnone size-medium wp-image-1397" src="https://epmqueen.files.wordpress.com/2017/03/image066.png?w=300&#038;h=148" alt="" width="300" height="148" srcset="https://epmqueen.files.wordpress.com/2017/03/image066.png?w=300&amp;h=148 300w, https://epmqueen.files.wordpress.com/2017/03/image066.png?w=600&amp;h=296 600w, https://epmqueen.files.wordpress.com/2017/03/image066.png?w=150&amp;h=74 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>12. Once your VM is loaded, you can start editing details and connection options.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image023.png"><img data-attachment-id="1372" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image023-4/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image023.png" data-orig-size="383,397" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image023" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image023.png?w=289&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image023.png?w=383" class="alignnone size-medium wp-image-1372" src="https://epmqueen.files.wordpress.com/2017/03/image023.png?w=289&#038;h=300" alt="" width="289" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image023.png?w=289&amp;h=300 289w, https://epmqueen.files.wordpress.com/2017/03/image023.png?w=145&amp;h=150 145w, https://epmqueen.files.wordpress.com/2017/03/image023.png 383w" sizes="(max-width: 289px) 100vw, 289px" /></a></p> <p>13. Here are the options for “General”:</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image024.png"><img data-attachment-id="1373" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image024-4/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image024.png" data-orig-size="368,894" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image024" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image024.png?w=123&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image024.png?w=368" class="alignnone size-medium wp-image-1373" src="https://epmqueen.files.wordpress.com/2017/03/image024.png?w=123&#038;h=300" alt="" width="123" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image024.png?w=123&amp;h=300 123w, https://epmqueen.files.wordpress.com/2017/03/image024.png?w=246&amp;h=598 246w, https://epmqueen.files.wordpress.com/2017/03/image024.png?w=62&amp;h=150 62w" sizes="(max-width: 123px) 100vw, 123px" /></a></p> <p>14. Here is the “System” tab:</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image025.png"><img data-attachment-id="1374" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image025-5/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image025.png" data-orig-size="375,886" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image025" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image025.png?w=127&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image025.png?w=375" class="alignnone size-medium wp-image-1374" src="https://epmqueen.files.wordpress.com/2017/03/image025.png?w=127&#038;h=300" alt="" width="127" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image025.png?w=127&amp;h=300 127w, https://epmqueen.files.wordpress.com/2017/03/image025.png?w=254&amp;h=600 254w, https://epmqueen.files.wordpress.com/2017/03/image025.png?w=63&amp;h=150 63w" sizes="(max-width: 127px) 100vw, 127px" /></a></p> <p>15. “Disks” tab:</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image026.png"><img data-attachment-id="1375" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image026-5/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image026.png" data-orig-size="373,889" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image026" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image026.png?w=126&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image026.png?w=373" class="alignnone size-medium wp-image-1375" src="https://epmqueen.files.wordpress.com/2017/03/image026.png?w=126&#038;h=300" alt="" width="126" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image026.png?w=126&amp;h=300 126w, https://epmqueen.files.wordpress.com/2017/03/image026.png?w=252&amp;h=600 252w, https://epmqueen.files.wordpress.com/2017/03/image026.png?w=63&amp;h=150 63w" sizes="(max-width: 126px) 100vw, 126px" /></a></p> <p>16. “NICs” tab:</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image027.png"><img data-attachment-id="1376" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image027-4/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image027.png" data-orig-size="373,887" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image027" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image027.png?w=126&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image027.png?w=373" class="alignnone size-medium wp-image-1376" src="https://epmqueen.files.wordpress.com/2017/03/image027.png?w=126&#038;h=300" alt="" width="126" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image027.png?w=126&amp;h=300 126w, https://epmqueen.files.wordpress.com/2017/03/image027.png?w=252&amp;h=600 252w, https://epmqueen.files.wordpress.com/2017/03/image027.png?w=63&amp;h=150 63w" sizes="(max-width: 126px) 100vw, 126px" /></a></p> <p>17. “Services” tab (Note: This is where you set your ports for the VM.):</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image028.png"><img data-attachment-id="1377" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image028-5/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image028.png" data-orig-size="367,892" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image028" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image028.png?w=123&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image028.png?w=367" class="alignnone size-medium wp-image-1377" src="https://epmqueen.files.wordpress.com/2017/03/image028.png?w=123&#038;h=300" alt="" width="123" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image028.png?w=123&amp;h=300 123w, https://epmqueen.files.wordpress.com/2017/03/image028.png?w=246&amp;h=598 246w, https://epmqueen.files.wordpress.com/2017/03/image028.png?w=62&amp;h=150 62w" sizes="(max-width: 123px) 100vw, 123px" /></a></p> <p>18. To be able to access and start the VM, you first need to create an “Application”. Go to that tab and choose “Create Application”.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image067.png"><img data-attachment-id="1398" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image067/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image067.png" data-orig-size="624,123" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image067" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image067.png?w=300&#038;h=59" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image067.png?w=624" class="alignnone size-medium wp-image-1398" src="https://epmqueen.files.wordpress.com/2017/03/image067.png?w=300&#038;h=59" alt="" width="300" height="59" srcset="https://epmqueen.files.wordpress.com/2017/03/image067.png?w=300&amp;h=59 300w, https://epmqueen.files.wordpress.com/2017/03/image067.png?w=600&amp;h=118 600w, https://epmqueen.files.wordpress.com/2017/03/image067.png?w=150&amp;h=30 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>19. Give the new application a name.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image031.png"><img data-attachment-id="1378" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image031/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image031.png" data-orig-size="597,416" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image031" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image031.png?w=300&#038;h=209" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image031.png?w=597" class="alignnone size-medium wp-image-1378" src="https://epmqueen.files.wordpress.com/2017/03/image031.png?w=300&#038;h=209" alt="" width="300" height="209" srcset="https://epmqueen.files.wordpress.com/2017/03/image031.png?w=300&amp;h=209 300w, https://epmqueen.files.wordpress.com/2017/03/image031.png?w=150&amp;h=105 150w, https://epmqueen.files.wordpress.com/2017/03/image031.png 597w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>20. From the VM list, drag and drop the VM onto the canvas.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image068.png"><img data-attachment-id="1399" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image068-2/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image068.png" data-orig-size="624,309" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image068" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image068.png?w=300&#038;h=149" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image068.png?w=624" class="alignnone size-medium wp-image-1399" src="https://epmqueen.files.wordpress.com/2017/03/image068.png?w=300&#038;h=149" alt="" width="300" height="149" srcset="https://epmqueen.files.wordpress.com/2017/03/image068.png?w=300&amp;h=149 300w, https://epmqueen.files.wordpress.com/2017/03/image068.png?w=600&amp;h=298 600w, https://epmqueen.files.wordpress.com/2017/03/image068.png?w=150&amp;h=74 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>21. Once on the canvas, click “Publish”.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image034.png"><img data-attachment-id="1379" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image034-3/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image034.png" data-orig-size="416,230" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image034" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image034.png?w=300&#038;h=166" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image034.png?w=416" class="alignnone size-medium wp-image-1379" src="https://epmqueen.files.wordpress.com/2017/03/image034.png?w=300&#038;h=166" alt="" width="300" height="166" srcset="https://epmqueen.files.wordpress.com/2017/03/image034.png?w=300&amp;h=166 300w, https://epmqueen.files.wordpress.com/2017/03/image034.png?w=150&amp;h=83 150w, https://epmqueen.files.wordpress.com/2017/03/image034.png 416w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>22. A screen will show with some of the VM details. You have the option to optimize the VM for Cost or Performance. I have shown Performance as an example.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image035.png"><img data-attachment-id="1380" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image035-2/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image035.png" data-orig-size="597,597" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image035" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image035.png?w=300&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image035.png?w=597" class="alignnone size-medium wp-image-1380" src="https://epmqueen.files.wordpress.com/2017/03/image035.png?w=300&#038;h=300" alt="" width="300" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image035.png?w=300&amp;h=300 300w, https://epmqueen.files.wordpress.com/2017/03/image035.png?w=150&amp;h=150 150w, https://epmqueen.files.wordpress.com/2017/03/image035.png 597w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>23. To show how the “Detailed Pricing” looks, I’ve expanded the section.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image036.png"><img data-attachment-id="1381" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image036-4/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image036.png" data-orig-size="598,736" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image036" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image036.png?w=244&#038;h=300" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image036.png?w=598" class="alignnone size-medium wp-image-1381" src="https://epmqueen.files.wordpress.com/2017/03/image036.png?w=244&#038;h=300" alt="" width="244" height="300" srcset="https://epmqueen.files.wordpress.com/2017/03/image036.png?w=244&amp;h=300 244w, https://epmqueen.files.wordpress.com/2017/03/image036.png?w=488&amp;h=600 488w, https://epmqueen.files.wordpress.com/2017/03/image036.png?w=122&amp;h=150 122w" sizes="(max-width: 244px) 100vw, 244px" /></a></p> <p>24. The VM is now starting. Below I have highlighted the upper right-hand corner where it shows how much time is left in the session (you can configure the default time a VM is up, including to not turn off) and where the cloud instance is located (this case is US East).</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image069.png"><img data-attachment-id="1400" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image069/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image069.png" data-orig-size="624,309" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image069" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image069.png?w=300&#038;h=149" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image069.png?w=624" class="alignnone size-medium wp-image-1400" src="https://epmqueen.files.wordpress.com/2017/03/image069.png?w=300&#038;h=149" alt="" width="300" height="149" srcset="https://epmqueen.files.wordpress.com/2017/03/image069.png?w=300&amp;h=149 300w, https://epmqueen.files.wordpress.com/2017/03/image069.png?w=600&amp;h=298 600w, https://epmqueen.files.wordpress.com/2017/03/image069.png?w=150&amp;h=74 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>25. Once started, you can view your VM via VNC if you have configured the ports on the “Services” tab, OR you can click “Console”, shown below, and see your VM in a web browswer.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image070.png"><img data-attachment-id="1401" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image070-2/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image070.png" data-orig-size="624,309" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image070" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image070.png?w=300&#038;h=149" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image070.png?w=624" class="alignnone size-medium wp-image-1401" src="https://epmqueen.files.wordpress.com/2017/03/image070.png?w=300&#038;h=149" alt="" width="300" height="149" srcset="https://epmqueen.files.wordpress.com/2017/03/image070.png?w=300&amp;h=149 300w, https://epmqueen.files.wordpress.com/2017/03/image070.png?w=600&amp;h=298 600w, https://epmqueen.files.wordpress.com/2017/03/image070.png?w=150&amp;h=74 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>26. Here is the browser console showing the VM starting up.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image071.png"><img data-attachment-id="1402" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image071-2/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image071.png" data-orig-size="624,309" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image071" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image071.png?w=300&#038;h=149" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image071.png?w=624" class="alignnone size-medium wp-image-1402" src="https://epmqueen.files.wordpress.com/2017/03/image071.png?w=300&#038;h=149" alt="" width="300" height="149" srcset="https://epmqueen.files.wordpress.com/2017/03/image071.png?w=300&amp;h=149 300w, https://epmqueen.files.wordpress.com/2017/03/image071.png?w=600&amp;h=298 600w, https://epmqueen.files.wordpress.com/2017/03/image071.png?w=150&amp;h=74 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>27. Now the browser console is showing the VM desktop.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image072.png"><img data-attachment-id="1403" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image072-3/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image072.png" data-orig-size="624,309" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image072" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image072.png?w=300&#038;h=149" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image072.png?w=624" class="alignnone size-medium wp-image-1403" src="https://epmqueen.files.wordpress.com/2017/03/image072.png?w=300&#038;h=149" alt="" width="300" height="149" srcset="https://epmqueen.files.wordpress.com/2017/03/image072.png?w=300&amp;h=149 300w, https://epmqueen.files.wordpress.com/2017/03/image072.png?w=600&amp;h=298 600w, https://epmqueen.files.wordpress.com/2017/03/image072.png?w=150&amp;h=74 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>28. To stop the VM, click the “Stop” button in the lower right-hand corner. Once done, you will get a screen asking for a confirmation of the stop.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image073.png"><img data-attachment-id="1404" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image073-2/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image073.png" data-orig-size="624,309" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image073" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image073.png?w=300&#038;h=149" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image073.png?w=624" class="alignnone size-medium wp-image-1404" src="https://epmqueen.files.wordpress.com/2017/03/image073.png?w=300&#038;h=149" alt="" width="300" height="149" srcset="https://epmqueen.files.wordpress.com/2017/03/image073.png?w=300&amp;h=149 300w, https://epmqueen.files.wordpress.com/2017/03/image073.png?w=600&amp;h=298 600w, https://epmqueen.files.wordpress.com/2017/03/image073.png?w=150&amp;h=74 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>29. To show how a fully configured VM looks, here is an example. This one has ports enabled and shows the list of them on the lower right-hand corner, as well as what looks like connectors sticking out on the canvas from the VM.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image074.png"><img data-attachment-id="1405" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image074-3/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image074.png" data-orig-size="624,309" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image074" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image074.png?w=300&#038;h=149" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image074.png?w=624" class="alignnone size-medium wp-image-1405" src="https://epmqueen.files.wordpress.com/2017/03/image074.png?w=300&#038;h=149" alt="" width="300" height="149" srcset="https://epmqueen.files.wordpress.com/2017/03/image074.png?w=300&amp;h=149 300w, https://epmqueen.files.wordpress.com/2017/03/image074.png?w=600&amp;h=298 600w, https://epmqueen.files.wordpress.com/2017/03/image074.png?w=150&amp;h=74 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>30. Once the VM is started, you will get an IP address (dynamic each time the VM is started) for that VM.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image049.png"><img data-attachment-id="1382" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image049-4/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image049.png" data-orig-size="369,256" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image049" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image049.png?w=300&#038;h=208" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image049.png?w=369" class="alignnone size-medium wp-image-1382" src="https://epmqueen.files.wordpress.com/2017/03/image049.png?w=300&#038;h=208" alt="" width="300" height="208" srcset="https://epmqueen.files.wordpress.com/2017/03/image049.png?w=300&amp;h=208 300w, https://epmqueen.files.wordpress.com/2017/03/image049.png?w=150&amp;h=104 150w, https://epmqueen.files.wordpress.com/2017/03/image049.png 369w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>31. Scrolling through the services list, I see that port 5902 has been configured for VNC.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image050.png"><img data-attachment-id="1383" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image050-3/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image050.png" data-orig-size="337,192" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image050" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image050.png?w=300&#038;h=171" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image050.png?w=337" class="alignnone size-medium wp-image-1383" src="https://epmqueen.files.wordpress.com/2017/03/image050.png?w=300&#038;h=171" alt="" width="300" height="171" srcset="https://epmqueen.files.wordpress.com/2017/03/image050.png?w=300&amp;h=171 300w, https://epmqueen.files.wordpress.com/2017/03/image050.png?w=150&amp;h=85 150w, https://epmqueen.files.wordpress.com/2017/03/image050.png 337w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>32. Using VNC Viewer, I enter in the IP address followed by the VNC port.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image051.png"><img data-attachment-id="1384" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image051-5/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image051.png" data-orig-size="452,187" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image051" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image051.png?w=300&#038;h=124" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image051.png?w=452" class="alignnone size-medium wp-image-1384" src="https://epmqueen.files.wordpress.com/2017/03/image051.png?w=300&#038;h=124" alt="" width="300" height="124" srcset="https://epmqueen.files.wordpress.com/2017/03/image051.png?w=300&amp;h=124 300w, https://epmqueen.files.wordpress.com/2017/03/image051.png?w=150&amp;h=62 150w, https://epmqueen.files.wordpress.com/2017/03/image051.png 452w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>33. Enter the password:</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image052.png"><img data-attachment-id="1385" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image052-3/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image052.png" data-orig-size="422,138" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image052" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image052.png?w=300&#038;h=98" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image052.png?w=422" class="alignnone size-medium wp-image-1385" src="https://epmqueen.files.wordpress.com/2017/03/image052.png?w=300&#038;h=98" alt="" width="300" height="98" srcset="https://epmqueen.files.wordpress.com/2017/03/image052.png?w=300&amp;h=98 300w, https://epmqueen.files.wordpress.com/2017/03/image052.png?w=150&amp;h=49 150w, https://epmqueen.files.wordpress.com/2017/03/image052.png 422w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>34. And now I have VNC’ed into my VM.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/03/image075.png"><img data-attachment-id="1406" data-permalink="https://realtrigeek.com/2017/03/04/ravello-my-intro-to-oracles-iaas/image075-2/" data-orig-file="https://epmqueen.files.wordpress.com/2017/03/image075.png" data-orig-size="624,481" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image075" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/03/image075.png?w=300&#038;h=231" data-large-file="https://epmqueen.files.wordpress.com/2017/03/image075.png?w=624" class="alignnone size-medium wp-image-1406" src="https://epmqueen.files.wordpress.com/2017/03/image075.png?w=300&#038;h=231" alt="" width="300" height="231" srcset="https://epmqueen.files.wordpress.com/2017/03/image075.png?w=300&amp;h=231 300w, https://epmqueen.files.wordpress.com/2017/03/image075.png?w=600&amp;h=462 600w, https://epmqueen.files.wordpress.com/2017/03/image075.png?w=150&amp;h=116 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Going forward, I plan to use Ravello heavily for my VMs as it’s much easier than loading and unloading VMs from my external TB hard drive. IMO, Ravello is a great resource for individuals and companies to utilize VMs without having the huge overhead of machines required to host the VMs. …And I promise, I’m not being paid to promote Ravello. J I truly believe in this product and wanted to share my (great) experience so far!</p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/epmqueen.wordpress.com/1371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/epmqueen.wordpress.com/1371/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=realtrigeek.com&#038;blog=70089387&#038;post=1371&#038;subd=epmqueen&#038;ref=&#038;feed=1" width="1" height="1" /> Sarah Craynon Zumbrum http://realtrigeek.com/?p=1371 Sat Mar 04 2017 09:40:11 GMT-0500 (EST) Amazon Launches Prime in India. Can Flipkart Stay ‘First’? http://bi.abhinavagarwal.net/2017/03/amazon-launches-prime-in-india-can.html <div dir="ltr" style="text-align: left;" trbidi="on"><span style="color: black; float: left; font-family: &quot;times&quot; , serif , &quot;georgia&quot;; font-size: 48px; line-height: 30px; padding-right: 2px; padding-top: 2px;">O</span><br />n the 27th of June, 2016, Amazon launched the first of its first AWS (Amazon Web Services) data centers in India, in Mumbai.<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em;"><tbody><tr><td style="text-align: center;"><img height="167" src="https://cdn-images-1.medium.com/max/800/1*bkvRZkjT_l4m5ZWrW3pgrw.png" style="margin-left: auto; margin-right: auto;" width="400" /></td></tr><tr><td class="tr-caption" style="font-size: 12.8px; text-align: center;">Amazon India announcing the launch of Prime (July 26, 2016)&nbsp;</td></tr></tbody></table>Less than a month later, on the 26th of July, 2016, Amazon launched Amazon Prime in India. After a free, trial period of 60 days, customers would be able to sign up for what it calls a “special, introductory price” of ₹499 a year. Prime Video was not included in Prime at the time of launch.<br /><br /><br /><br /><br /><a name='more'></a><br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><img src="https://cdn-images-1.medium.com/max/600/1*gh1UZAxP5RV_haM--3UDQg.png" style="margin-left: auto; margin-right: auto;" /></td></tr><tr><td class="tr-caption" style="font-size: 12.8px;">&nbsp;comScore chart showing Amazon as leading e-commerce site (Dec 2015)</td></tr></tbody></table><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em;"><tbody><tr><td><img height="640" src="https://cdn-images-1.medium.com/max/600/1*Tud63O4Cz8tM2lDfcqJfkQ.png" style="margin-left: auto; margin-right: auto;" width="467" /></td></tr><tr><td class="tr-caption" style="font-size: 12.8px;">e-mail from Amazon founder Jeff Bezos (December 2015)</td></tr></tbody></table>This is a significant, though not unexpected, step by Amazon India in its battle to gain primacy in the Indian e-commerce space. In Dec 2015, it announced that it had become the “most visited e-commerce site in India”, and offered a gift card worth ₹200 for customers (with some terms and conditions). It was also in some ways a sleight of hand since it did not include visitors via mobile apps. That also changed in July 2016 when an app data tracker stated that Amazon had become the&nbsp;<a href="http://timesofindia.indiatimes.com/tech/tech-news/Amazon-beats-Flipkart-as-the-most-downloaded-shopping-app-in-India/articleshow/53313031.cms">most downloaded app</a>&nbsp;on the Google and Apple app stores in India.<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em;"><tbody><tr><td style="text-align: center;"><img height="186" src="https://cdn-images-1.medium.com/max/600/0*h1SQh3VKuDapenH8.png" style="margin-left: auto; margin-right: auto;" width="400" /></td></tr><tr><td class="tr-caption" style="font-size: 12.8px; text-align: center;">Amazon India website (July 26, 2016)</td></tr></tbody></table>Flipkart had launched its version of Amazon Prime in May 2014. Called “Flipkart First”, it also was available for an annual price of ₹500. But for reasons best known to Flipkart, after an initial flurry of promotion and advertising, including a three-month giveaway to 75000 customers, Flipkart did not seem to pursue it with any sort of vigor. Customers complained of many products being excluded from Flipkart First, and in the absence of any sustained campaign to make customers aware of the programme, it has slowly faded from memory. Flipkart also has not shared any numbers in some time about the subscriber base and growth of Flipkart First. Worse, there was a&nbsp;<a href="http://www.firstpost.com/business/flipkart-to-launch-f-assured-to-take-on-amazon-prime-as-focus-shifts-to-quality-2903554.html">news story</a>&nbsp;on July 20th about Flipkart planning to launch a programme called “F-Assured”, as a replacement to Flipkart Advantage. The story suggested that the launch of F-Assured was also meant to “preempts the launch of Amazon Prime” — something that did not come to pass.<br /><br />Unlike Prime, which Amazon founder Jeff Bezos called one of the three bold bets Amazon had made (“AWS, Marketplace and Prime are all examples of bold bets at Amazon that worked” — is what Bezos wrote in a&nbsp;<a href="https://www.sec.gov/Archives/edgar/data/1018724/000119312516530910/d168744dex991.htm">letter to shareholders</a>), Flipkart has let First become yet one of many initiatives it has launched and failed to pursue with any meaningful degree of commitment or focus.<br /><br />AWS, Marketplace and Prime are all examples of bold bets at Amazon that worked, and we’re fortunate to have those three big pillars. They have helped us grow into a large company, and there are certain things that only large companies can do. [Jeff Bezos, letter to shareholder, 2016]<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em;"><tbody><tr><td style="text-align: center;"><img height="200" src="https://cdn-images-1.medium.com/max/600/1*P5fMJx8PU6q8BnyFl0J7rg.png" style="margin-left: auto; margin-right: auto;" width="400" /></td></tr><tr><td class="tr-caption" style="font-size: 12.8px; text-align: center;">"Flipkart First" emailer, 2014</td></tr></tbody></table>Flipkart launched its e-book store, Flyte, in November 2012, almost a year before Amazon launched operations in India and more than a year before Amazon launched Kindle in India. Yet, Flipkart&nbsp;<a href="http://gadgets.ndtv.com/apps/news/flipkart-closes-ebook-store-will-migrate-user-libraries-to-kobo-776647">shuttered</a>&nbsp;its e-book store in late 2015, citing e-books as not “a strategic fit.” The same was the story with its digital music business, which it started in 2012, and&nbsp;<a href="http://www.dnaindia.com/analysis/standpoint-flipkart-vs-amazon-beware-the-whispering-death-2079185">shuttered</a>&nbsp;in June 2013.<br /><br /><br />I had written more than a year back that Flipkart seemed to be&nbsp;<a href="http://www.dnaindia.com/analysis/standpoint-why-flipkart-seems-to-be-losing-focus-2076806">losing focus</a>, that it needed to beware of Amazon, who I called “<a href="http://www.dnaindia.com/analysis/standpoint-flipkart-vs-amazon-beware-the-whispering-death-2079185">The Whispering Death</a>” (an allusion to the great West Indian fast bowler, Michael Holding), and even&nbsp;<a href="http://www.dnaindia.com/analysis/standpoint-flipkart-focus-and-free-advice-2099409">suggested</a>&nbsp;what it needed to do. Cloud computing was one advice.<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em;"><tbody><tr><td style="text-align: center;"><img height="86" src="https://cdn-images-1.medium.com/max/800/1*eNKQ9hYrxSQfLem9AMXriQ.png" style="margin-left: auto; margin-right: auto;" width="400" /></td></tr><tr><td class="tr-caption" style="font-size: 12.8px; text-align: center;">Amazon India Prime Announcement on the upcoming launch of Video (July 26, 2016)</td></tr></tbody></table>Flipkart continues to lose in its battle against Amazon. It has suffered a steep&nbsp;<a href="https://medium.com/@abhinavagarwal_/flipkart-million-dollar-hiring-mistakes-translate-into-billion-dollar-valuation-erosions-98470b6a081e#.gzkl2l5dq">erosion in its valuations</a>, Amazon is gaining market share faster than Flipkart, and now even the battle of perceptions is being won by Amazon. Flipkart seems to have fallen into a predictable pattern of making a series of flashy announcements, and not following up to make any of them a success.<br /><br /><br />After publishing this, later that day came news that Flipkart-owned fashion e-tailer&nbsp;<a href="http://www.livemint.com/Companies/iicvIYFijqp9VRAx0ON46I/Flipkarts-Myntra-acquires-Jabong.html">Myntra had agreed to buy Jabong</a>&nbsp;in an all-cash deal for $70 million. Jabong had been valued at over $500 million in 2013.<br /><div>The takeaways from this acquisition can be summed up as follows:<br /><ul style="text-align: left;"><li>Flipkart seems to be in the thought mode that it can fight off Amazon by retreating to a few select niches like fashion e-tailing that will give it some sort of a competitive advantage over the US behemoth.&nbsp;</li><li>This is in many ways a reaffirmation of Flipkart’s “retreat” mentality, since they have retreated from e-books and digital music already. Amazon, on the other hand, believes in getting into every single segment that a customer spends money on. Witness its move into the&nbsp;<a href="http://www.retaildive.com/news/staples-amazons-office-supplies-business-poses-stiff-competition/415650/">office supplies market</a>&nbsp;in the US, or into the&nbsp;<a href="http://www.nytimes.com/2015/04/13/technology/amazon-google-and-more-are-drawn-to-home-services-market.html">home services market</a>&nbsp;(estimated at between $400 billion to $800 billion a year in the US).&nbsp;</li><li>Valuations mean little or nothing for non-listed companies. Jabong was valued at over $500 million in 2013; it was seeking to sell itself to Amazon India for&nbsp;<a href="http://economictimes.indiatimes.com/industry/services/retail/struggling-to-find-a-buyer-jabong-slashes-price-tag-finds-no-buyer-even-at-rs-663-crore/articleshow/51833979.cms">$1 billion in 2014</a>, could not find buyers even at $100 million earlier in 2016, and finally sold itself for 7 percent of its asking price. Flipkart would do well to understand the implications of valuations for itself. Denialism is not a strategy.&nbsp;</li></ul>Flipkart has been in the news for all the wrong reasons — for its penchant of helicoptering&nbsp;<a href="https://medium.com/@abhinavagarwal_/flipkart-million-dollar-hiring-mistakes-translate-into-billion-dollar-valuation-erosions-98470b6a081e#.6skq1rs6u">executives from Silicon Valley</a>&nbsp;at million-dollar salaries, for high-profile executives, for valuation missteps, and more. Missing in all this is a laser-like focus on execution. If it wants to learn anything from Amazon, it should be this.<br /><br />Will Flipkart step up?<br /><br /><i>References:</i><br /><ul style="text-align: left;"><i><li><a href="https://medium.com/@abhinavagarwal_/flipkart-million-dollar-hiring-mistakes-translate-into-billion-dollar-valuation-erosions-98470b6a081e#.mls3tprl1">Flipkart: Million-Dollar Hiring Mistakes Translate Into Billion-Dollar Valuation Erosions</a>&nbsp;(April 15, 2016)&nbsp;</li><li><a href="http://www.dnaindia.com/analysis/standpoint-flipkart-focus-and-free-advice-2099409">Flipkart, Focus and Free Advice</a>&nbsp;(June 27, 2015)&nbsp;</li><li><a href="http://www.dnaindia.com/analysis/standpoint-flipkart-vs-amazon-beware-the-whispering-death-2079185">Flipkart vs Amazon: Beware the Whispering Death</a>&nbsp;(April 20, 2015)&nbsp;</li><li><a href="http://www.dnaindia.com/analysis/standpoint-why-flipkart-seems-to-be-losing-focus-2076806">Why Flipkart seems to be losing focus</a>&nbsp;(April 12, 2015)&nbsp;</li><li><a href="https://www.sec.gov/Archives/edgar/data/1018724/000119312516530910/d168744dex991.htm">Exhibit 99.1,</a>&nbsp;Letter to Amazon shareholder&nbsp;</li></i></ul><i></i><br /><div><span style="font-size: x-small;">I first published this post on&nbsp;</span><a href="https://medium.com/" style="font-size: small;">Medium</a><span style="font-size: x-small;">&nbsp;on&nbsp;</span><a href="https://medium.com/@abhinavagarwal_/amazon-launches-prime-in-india-can-flipkart-stay-first-bb9e1e1bd672#.e72y3ec5c" style="font-size: small;">Jul 26, 2016</a><span style="font-size: x-small;">. This was later republished in <a href="https://swarajyamag.com/" target="_blank">Swarajya</a> on <a href="https://swarajyamag.com/business/with-amazon-launching-prime-in-india-can-flipkart-stay-first" target="_blank">July 28, 2016</a>.</span></div><div><br /></div><span style="color: #666666; font-size: x-small;">© 2017, Abhinav Agarwal. All rights reserved.</span></div></div> Abhinav Agarwal tag:blogger.com,1999:blog-13714584.post-3100478776391962325 Fri Mar 03 2017 21:33:00 GMT-0500 (EST) Blog posts on Oracle Advanced Analytics features in 12.2 http://www.oralytics.com/2017/03/blog-posts-on-oracle-advanced-analytics.html <p>A couple of days ago Oracle finally provided us with an on-premises download for Oracle 12.2 Database.</p> <p>Go and download load it from here </p><p>or</p> <p>Download the Database App Development VM with 12.2 (This is what I did)</p> <p>Over the past couple of months I've been using the DBaaS of 12.2, trying out some of the new Advanced Analytics option new features, and other new features. Here are the links to the blog posts on these new 12.2 new features. There will be more coming over the next few months.</p> <p><a href="http://www.oralytics.com/2016/11/new-oaa-features-in-oracle-122-database.html">New OAA features in Oracle 12.2 Database</a></p> <p><a href="http://www.oralytics.com/2017/01/explicit-semantic-analysis-in-oracle.html">Explicit Semantic Analysis in Oracle 12.2c Database</a></p> <p><a href="http://www.oralytics.com/2017/01/explicit-semantic-analysis-setup-using.html">Explicit Semantic Analysis setup using SQL and PL/SQL</a></p> <p>and slightly related is the new SQL Developer 4.2</p><p><a href="http://www.oralytics.com/2017/01/oracle-data-miner-42-new-features.html">Oracle Data Miner 4.2 New Features</a></p> Brendan Tierney tag:blogger.com,1999:blog-4669933501315263808.post-577305487253040547 Fri Mar 03 2017 06:57:00 GMT-0500 (EST) Oracle Database 12c Release 2 (12.2.0.1) upgrade using DBUA http://gavinsoorma.com/2017/03/oracle-database-12c-release-2-12-2-0-1-upgrade-using-dbua/ <p>Oracle 12c Release 2 (12.2.0.1) was officially released for on-premise deployment yesterday. I tested an upgrade of one of my test 12.1.0.2 databases using the Database Upgrade Assistant (DBUA) and the upgrade went smoothly.</p> <p>The Parallel Upgrade command line utility catctl.pl has a number of changes and enhancements as compared to 12c Release 1 and I will discuss that in a later post.</p> <p>Here are the screen shots of the database upgrade process.</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg2.png" rel="attachment wp-att-7405"><img class="aligncenter size-full wp-image-7405" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg2.png" alt="upg2" width="799" height="595" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg2-300x223.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg2-768x572.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg2.png 799w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg2-300x223@2x.png 600w" sizes="(max-width: 799px) 100vw, 799px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg1.png" rel="attachment wp-att-7404"><img class="aligncenter size-full wp-image-7404" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg1.png" alt="upg1" width="797" height="597" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg1-300x225.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg1-768x575.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg1-627x470.png 627w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg1.png 797w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg1-300x225@2x.png 600w" sizes="(max-width: 797px) 100vw, 797px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg3.png" rel="attachment wp-att-7406"><img class="aligncenter size-full wp-image-7406" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg3.png" alt="upg3" width="806" height="595" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg3-300x221.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg3-768x567.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg3.png 806w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg3-300x221@2x.png 600w" sizes="(max-width: 806px) 100vw, 806px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg5.png" rel="attachment wp-att-7408"><img class="aligncenter size-full wp-image-7408" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg5.png" alt="upg5" width="1265" height="816" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg5-300x194.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg5-768x495.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg5-1024x661.png 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg5.png 1265w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg5-300x194@2x.png 600w" sizes="(max-width: 1265px) 100vw, 1265px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg6.png" rel="attachment wp-att-7409"><img class="aligncenter size-full wp-image-7409" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg6.png" alt="upg6" width="1261" height="818" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg6-300x195.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg6-768x498.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg6-1024x664.png 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg6.png 1261w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg6-300x195@2x.png 600w" sizes="(max-width: 1261px) 100vw, 1261px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg7.png" rel="attachment wp-att-7410"><img class="aligncenter size-full wp-image-7410" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg7.png" alt="upg7" width="571" height="291" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg7-300x153.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg7.png 571w" sizes="(max-width: 571px) 100vw, 571px" /></a> <a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg8.png" rel="attachment wp-att-7411"><img class="aligncenter size-full wp-image-7411" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg8.png" alt="upg8" width="571" height="111" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg8-300x58.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg8.png 571w" sizes="(max-width: 571px) 100vw, 571px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg9.png" rel="attachment wp-att-7412"><img class="aligncenter size-full wp-image-7412" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg9.png" alt="upg9" width="1267" height="816" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg9-300x193.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg9-768x495.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg9-1024x659.png 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg9.png 1267w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg9-300x193@2x.png 600w" sizes="(max-width: 1267px) 100vw, 1267px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>Note &#8211; I only converted my database to NOARCHIVELOG mode because I did not have the recommended free space in the FRA. Don&#8217;t do this in production because ideally you would want to either take a backup of archivelogs or last incremental level 1 backup or set a Guaranteed Restore Point so as to be able to Flashback the database if required.</p> <p>But I did see that the redo generated by the upgrade process seems to far more than that in case of earlier version upgrades. Even the DBUA recommendation was to double the Fast Recovery Area space allocation.</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg10.png" rel="attachment wp-att-7413"><img class="aligncenter size-full wp-image-7413" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg10.png" alt="upg10" width="562" height="363" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg10-300x194.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg10.png 562w" sizes="(max-width: 562px) 100vw, 562px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg11.png" rel="attachment wp-att-7414"><img class="aligncenter size-full wp-image-7414" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg11.png" alt="upg11" width="1259" height="816" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg11-300x194.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg11-768x498.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg11-1024x664.png 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg11.png 1259w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg11-300x194@2x.png 600w" sizes="(max-width: 1259px) 100vw, 1259px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg12.png" rel="attachment wp-att-7415"><img class="aligncenter size-full wp-image-7415" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg12.png" alt="upg12" width="1256" height="820" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg12-300x196.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg12-768x501.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg12-1024x669.png 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg12.png 1256w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg12-300x196@2x.png 600w" sizes="(max-width: 1256px) 100vw, 1256px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg13.png" rel="attachment wp-att-7416"><img class="aligncenter size-full wp-image-7416" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg13.png" alt="upg13" width="1259" height="819" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg13-300x195.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg13-768x500.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg13-1024x666.png 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg13.png 1259w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg13-300x195@2x.png 600w" sizes="(max-width: 1259px) 100vw, 1259px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg14.png" rel="attachment wp-att-7417"><img class="aligncenter size-full wp-image-7417" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg14.png" alt="upg14" width="1254" height="813" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg14-300x194.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg14-768x498.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg14-1024x664.png 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg14.png 1254w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg14-300x194@2x.png 600w" sizes="(max-width: 1254px) 100vw, 1254px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg15.png" rel="attachment wp-att-7418"><img class="aligncenter size-full wp-image-7418" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg15.png" alt="upg15" width="1262" height="818" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg15-300x194.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg15-768x498.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg15-1024x664.png 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg15.png 1262w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg15-300x194@2x.png 600w" sizes="(max-width: 1262px) 100vw, 1262px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg16.png" rel="attachment wp-att-7419"><img class="aligncenter size-full wp-image-7419" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg16.png" alt="upg16" width="1257" height="814" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg16-300x194.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg16-768x497.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg16-1024x663.png 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg16.png 1257w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg16-300x194@2x.png 600w" sizes="(max-width: 1257px) 100vw, 1257px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg17.png" rel="attachment wp-att-7420"><img class="aligncenter size-full wp-image-7420" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg17.png" alt="upg17" width="1201" height="835" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg17-300x209.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg17-768x534.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg17-1024x712.png 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg17.png 1201w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg17-300x209@2x.png 600w" sizes="(max-width: 1201px) 100vw, 1201px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg19.png" rel="attachment wp-att-7422"><img class="aligncenter size-full wp-image-7422" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg19.png" alt="upg19" width="1200" height="824" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg19-300x206.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg19-768x527.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg19-1024x703.png 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg19.png 1200w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg19-300x206@2x.png 600w" sizes="(max-width: 1200px) 100vw, 1200px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg20.png" rel="attachment wp-att-7423"><img class="aligncenter size-full wp-image-7423" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg20.png" alt="upg20" width="1198" height="832" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg20-300x208.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg20-768x533.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg20-1024x711.png 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg20.png 1198w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg20-300x208@2x.png 600w" sizes="(max-width: 1198px) 100vw, 1198px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg21.png" rel="attachment wp-att-7424"><img class="aligncenter size-full wp-image-7424" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg21.png" alt="upg21" width="1198" height="831" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg21-300x208.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg21-768x533.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg21-1024x710.png 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg21.png 1198w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg21-300x208@2x.png 600w" sizes="(max-width: 1198px) 100vw, 1198px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg22.png" rel="attachment wp-att-7425"><img class="aligncenter size-full wp-image-7425" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg22.png" alt="upg22" width="710" height="216" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg22-300x91.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg22.png 710w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg22-300x91@2x.png 600w" sizes="(max-width: 710px) 100vw, 710px" /></a></p> Gavin Soorma http://gavinsoorma.com/?p=7426 Fri Mar 03 2017 02:34:42 GMT-0500 (EST) Combined Data and Deleted Rows Extract when extracting from Fusion using BICCC https://blogs.oracle.com/biapps/entry/combined_data_and_deleted_rows <font size="2" face="verdana,arial,helvetica,sans-serif"> </font> <p><span style="color: #0003ff;">Authors: </span><span style="color: #0003ff;"><span style="color: #0003ff;">&quot;Sankara Sampath - Oracle &quot; and </span>&quot;Guna Vasireddy - Oracle&quot;</span><br /></p> <p><font size="2" face="verdana,arial,helvetica,sans-serif">Starting PB14 onwards, Fusion 11 now has a new option that allows you to combine the Data and Deleted Rows extract into a single job using BICCC (BI Cloud Connector Console). Internally the individual extracts are done one after the other and there would be two manifest files generated along with the corresponding files. The Cloud Data extract is done first followed by the Deleted Rows extract. <br /></font></p> <p><font size="2" face="verdana,arial,helvetica,sans-serif"> <img style="max-width: 99%;" src="https://blogs.oracle.com/biapps/resource/biccc_data_deleted_rows_extract.png" /></font></p><font size="2" face="verdana,arial,helvetica,sans-serif"> </font> <p> </p><font size="2" face="verdana,arial,helvetica,sans-serif"> </font> <p> </p><font size="2" face="verdana,arial,helvetica,sans-serif"> </font> <p><i><font size="2" face="verdana,arial,helvetica,sans-serif">Figure 1 : Screenshot showing the new combined extract</font></i></p><font size="2" face="verdana,arial,helvetica,sans-serif"> </font> <p><font size="2" face="verdana,arial,helvetica,sans-serif">Earlier, a customer who wanted both of them would have had to wait for the data extract to finish before starting the Deleted rows extract. Scheduling them meant they would have had to have a fair estimate of how long the extracts would take and schedule them apart accordingly. This would become problematic when the data volumes increase during certain period (E.g Payroll data during month end). With this combined extract, they no longer have to worry about that.The system would automatically trigger the Deleted Rows Extract on completion of the Cloud Data Extract. <br /></font></p><font size="2" face="verdana,arial,helvetica,sans-serif"> </font> <h4><font size="2" face="verdana,arial,helvetica,sans-serif">FAQs:</font></h4> <p><font size="2" face="verdana,arial,helvetica,sans-serif">Q: What happens if the Cloud Data Extract fails for whatever reason? Would the Deleted Rows extract still be triggered when using the combined extract? <br />A: No. When Data Extract fails, Delete Record Extract will NOT be triggered.<br /><br />Q: At what point is the selection of VOs taken into account? So if I started this combined extract and then went and changed the VO selection while the Cloud Data Extract part is running, would the Deleted rows extract use the original selection (that was there at the start of the job) or would it use the selection that is present at the point when the Deleted Rows Extract starts? <br />A: Its NOT recommended to make any VO selection change when any schedule is in progress, which will cause undesirable results.<br /><br />Q:If the Deleted Rows Extract fails for some reason, would the next schedule for the combined extract still be picked up? <br />A: Yes, next schedule will work as expected, as delete record extract is always in FULL mode and does NOT depend on last extract date.<br /><br />Q:Is there a way to restart from failed point? So if Cloud Data Extract succeeds and Deleted rows extract fails, can I restart the job to do only the deleted rows extract again? <br />A: No. Its NOT possible to restart any scheduled job.<br /></font></p><font size="2" face="verdana,arial,helvetica,sans-serif"> </font> Guna Vasireddy-Oracle https://blogs.oracle.com/biapps/entry/combined_data_and_deleted_rows Thu Mar 02 2017 23:56:13 GMT-0500 (EST) How to Connect to An Oracle Database (Ep 047) http://www.youtube.com/watch?v=gzyk63nY2eU Red Pill Analytics yt:video:gzyk63nY2eU Thu Mar 02 2017 08:52:30 GMT-0500 (EST) Oracle GoldenGate for HPE NonStop X86 Platform is released ! https://blogs.oracle.com/dataintegration/entry/oracle_goldengate_for_hpe_non <p> Oracle GoldenGate for HPE NonStop (Guardian) 12.2.0.1 is now certified to install and run on HPE NSX (x86 chipset architecture). With this certification, Oracle GoldenGate can capture and deliver data from/to Enscribe, SQL/MP and files.</p> <p><span style="font-family: Arial, sans-serif; font-size: 10pt;">Oracle GoldenGate for HPE NonStop is now certified for L06 - Release Version Updates L15.06, L16.08 and L17.02.</span> </p> <p class="MsoNormal"><span style="font-size: 10pt; font-family: Arial, sans-serif;">You may refer to the following links for further information:</span></p> <p class="MsoListParagraph" style="text-indent: -0.25in;"> </p> <ul> <li> <strong style="text-indent: -0.25in;"><u><span style="font-family: Calibri, sans-serif; color: #1f4f82; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;"><a href="https://docs.oracle.com/goldengate/ns1221/gg-nsk/"><span style="color: #1f4f82;">Documentation</span></a> </span></u></strong><span style="text-indent: -0.25in; font-size: 10pt; font-family: Arial, sans-serif;">is common for both IA64 and x86 chipset architectures.</span></li> <li><span style="text-indent: -0.25in; font-size: 10pt; font-family: Arial, sans-serif;"></span> <span style="text-indent: -0.25in; font-size: 10pt; font-family: Arial, sans-serif;">Download the software from OTN </span><a href="http://download.oracle.com/otn/goldengate/122010/122010_ggs_NSK_L06.zip" style="text-indent: -0.25in;"><strong><span style="background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;"><span style="font-size: 10pt; font-family: Arial, sans-serif; color: #1f4f82; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;">Oracle GoldenGate 12.2.0.1.0 for HP NonStop (Guardian) on x86</span></span></strong><span class="apple-converted-space"><b><span style="font-size: 10pt; font-family: Arial, sans-serif; color: #1f4f82; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;"> </span></b></span></a><span style="text-indent: -0.25in; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;"><span style="background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;"><font color="#555555" face="Arial, sans-serif" size="1">(30 MB)</font></span></span></li> <li><a href="http://www.oracle.com/technetwork/middleware/ias/downloads/fusion-certification-100350.html">Certification Matrix&nbsp;</a>for certified platforms, operating systems and application versions</li> </ul><!--[if !supportLists]--> <p> </p> <p> </p> Thomas Vengal-Oracle https://blogs.oracle.com/dataintegration/entry/oracle_goldengate_for_hpe_non Wed Mar 01 2017 11:28:05 GMT-0500 (EST) New Performance Analytics Release http://www.rittmanmead.com/blog/2017/03/new-performance-analytics-release/ <p>Poor performance is one of the most common complaints we hear upon arrival to customer sites, and often for good reason. When users have time to “make the rounds” before the system returns a result (if it returns a result at all), they have the right to be frustrated. </p> <p>Unfortunately, tracking down the origins of performance issues can be extremely difficult, as the root cause could be one or more problems across several distinct systems. Without a comprehensive view of the complete technology stack, an administrator will effectively be guessing.</p> <p>But we are all in the business of analytics. We should be taking an analytical approach to drive our decisions, and provide evidence to support them. Performance data should be collected, investigated, and then acted upon. But an analytical approach raises two distinct questions, “What data can we collect that will help us identify performance issues, and once found, what actions can we take”?</p> <h1 id="enterperformanceanalytics">Enter Performance Analytics</h1> <p>Performance Analytics is an application that collects data from all layers of the stack in your environment, and makes it readily available for study and investigation. By collecting data from OBIEE Usage Tracking, operating system metrics, database sessions, and a myriad of other sources, our application provides administrators with an all-encompassing view of their system. It has never been easier to identify the causes of poor performance.</p> <p>However, simply identifying a cause of poor performance isn’t all that’s required. In fact, it’s almost useless without knowing how to resolve the issue. Rittman Mead has expertise ranging from databases and data warehouses to front end browser applications, and everything in between. Our team will help you understand the problems discovered by Performance Analytics and show you how to fix them.</p> <p>With the newest release of Performance Analytics, improving the performance of your BI ecosystem is easier than ever. No longer will your users sit around waiting for reports, no longer will you need to guess at configuration settings, and no longer will you be left with no leads to investigate when users desire a better experience.</p> <h1 id="newfeatures">New Features</h1> <h3 id="simpleandlightweightinstallation">Simple and Lightweight Installation</h3> <p>Performance Analytics is now deployed using Docker, requiring absolutely no software installation on any machine other than the monitoring server. </p> <h3 id="upgradedandenhancedsoftware">Upgraded and enhanced software.</h3> <p>The open source technologies included in Performance Analytics have come a long way since its inception, and this release provides their latest and greatest versions, as well as our own improvements that increase performance and reliability. </p> <h3 id="alertsandnotifications">Alerts and Notifications.</h3> <p>Receive notifications based on failed OBIEE system components, a violated performance threshold, or any other identifiable condition found in your data. Be made aware of adverse performance conditions the instant they occur. <br> <em>And many more...</em></p> <h1 id="learnmore">Learn More</h1> <p>We will be releasing more exciting news about Performance Analytics over the following weeks, so be sure to subscribe to our blog and newsletter to stay up to date!</p> <p>Visit our Performance Analytics page <a href="https://www.rittmanmead.com/performance-analytics">here</a>. <br> To request a demo or ask any questions about Performance Analytics, call or email us:</p> <table> <tr> <td> <div>P (US): (888) 631-1410</div> <div>E (US): info@rittmanmead.com</div> </td> <td> <div>P (UK): +44 (0) 1273 911 268</div> <div>E (UK): info@rittmanmead.com</div> </td> </tr> </table> Nick Padgett e813a08d-3d4e-4793-8e06-88560c7bfc61 Wed Mar 01 2017 10:00:00 GMT-0500 (EST) Oracle Database In-Memory 12c Release 2 New Features http://gavinsoorma.com/2017/03/oracle-database-in-memory-12c-release-2-new-features/ <p>The Oracle Database In-Memory 12c Release 2 New Features  webinar conducted last week was well received by a global audience and feedback was positive. For those who missed the session you can download the slide deck from the link below. Feedback and questions are welcomed!</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/02/12.2_InMemory_new_features.pptx" rel="">12.2_InMemory_new_features</a></p> Gavin Soorma http://gavinsoorma.com/?p=7402 Wed Mar 01 2017 07:01:16 GMT-0500 (EST) OBIEE 11.1.1.7: Is It Still Supported? http://www.rittmanmead.com/blog/2017/02/obiee-11-1-1-7-is-it-still-supported/ <img src="http://www.rittmanmead.com/blog/content/images/2017/02/75672703-1.jpg" alt="OBIEE 11.1.1.7: Is It Still Supported?"><p>Last week, during a quiet working morning, my colleague <a href="https://www.rittmanmead.com/blog/author/robin-moffatt/">Robin Moffatt</a> sent me a link that changed my working focus for few hours. </p> <p>The link was to <a href="https://support.oracle.com/epmos/faces/DocContentDisplay?id=1488475.1">"OBIEE 11g: Required and Recommended Bundle Patches and Patch Sets (Doc ID 1488475.1)"</a>, a document containing the latest bundle patch (patch set) available for every major OBIEE release. </p> <p>He spotted that for the first time, the new bundle patch released on 17 Jan 2017 was for <strong>OBIEE 11.1.1.9 only</strong>, with the latest patch for 11.1.1.7 being the one previously released on 18 Oct 2016. <br> Moreover there is a clear statement in the document saying that is necessary to <strong>be at least on the 11.1.1.7.151020 patch-set</strong> or upgrade <strong>to 11.1.1.9 (or 12c)</strong> in order to receive continued <em>Error Correction Support</em>. </p> <p>Questions became then naturally:</p> <ul> <li>Is OBIEE 11.1.1.7 still fully supported? </li> <li>What is <em>Error Correction Support</em>? </li> <li>How does Oracle Support Work? </li> <li>How can I verify if my software is supported and when the support ends?</li> </ul> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/75672703.jpg" alt="OBIEE 11.1.1.7: Is It Still Supported?"></p> <p>With those questions in mind, I started my wonderful journey in understanding the Oracle support, if you want be my guests then sit down, take a coffee (espresso please) and enjoy the trip.</p> <h1 id="understandingobieeoraclesupport">Understanding OBIEE Oracle Support</h1> <p><strong>Disclaimer: All the information and date mentioned in the post reflect the situation as of the post publication date, Oracle may change them in future. Oracle support documents mentioned in this post should be directly taken as reference.</strong> <strong>The documents linked below are mostly regarding OBIEE, for other products please visit <a href="http://www.rittmanmead.com/blog/2017/02/obiee-11-1-1-7-is-it-still-supported/support.oracle.com">Oracle's support website</a>.</strong></p> <p>Understanding Oracle's support requires patience and the right set of documents, with the main two being:</p> <ul> <li><a href="http://www.oracle.com/us/support/library/lifetime-support-middleware-069163.pdf">Lifetime Support Policy</a>: provides the announcements, dates and exceptions for the end of Premier, Extended and Sustaining Support. The detail of the Lifetime Support Policy is by product e.g OBIEE 11.1.1.*.</li> <li><a href="https://support.oracle.com/epmos/faces/DocContentDisplay?id=1664916.1">Error Correction Support Policy</a>: provides details regarding the end of bug correction support per single release (e.g. 11.1.1.7). For OBIEE 12c the Error Correction Support document is merged in the <a href="https://support.oracle.com/epmos/faces/DocContentDisplay?id=1933372.1">Fusion Middleware document</a>.</li> </ul> <p>The combined information contained in these two sources should be used to determine the status of a specific Oracle's software version. </p> <h2 id="oraclessupportphases">Oracle's Support Phases</h2> <p>The two documents listed above provide a good starting point, but what do "Premier", "Extended", "Sustaining" and "Error Correction" Support mean? <br> <a href="https://support.oracle.com/epmos/faces/DocContentDisplay?id=1664916.1">Doc ID 1664916.1</a> and <a href="http://www.oracle.com/us/support/lifetime-support/index.html">Lifetime Support Policy page</a> provide a detailed explanation.</p> <p>The <em>"Lifetime Support Policy"</em> defines the three main phases <strong>for each product</strong> (e.g. OBI 11g):</p> <ul> <li><em>Premier Support</em>: is in the first 5 years (however this timeframe could be changed) from General Availability of a product, during this period bundle patches are released providing error correction and new features with certification for most Oracle or third party support.</li> <li><em>Extended Support</em>: almost all the benefits of Premier Support can be extended by another three years after its end with an <em>additional fee</em>. </li> <li><em>Sustaining Support</em>: after the end of Premier Support, this option (requiring an <em>additional fee</em>) provides a limited support on existing product bugs but no new developments (e.g. a certified mechanism of connecting OBIEE 10g to Impala); can be extended for an unlimited amount of time. </li> </ul> <p>The first two phases are also considered <em>Error Correction Support</em> since are the only two where new bug/security related patches are provided. After the end of Error Correction Phase <strong>no more patches will be released for a certain product</strong>.</p> <p>Applying the Lifetime Support Policy to OBIEE 11.1.1.* based on <a href="http://www.oracle.com/us/support/library/lifetime-support-middleware-069163.pdf">Oracle's documentation</a> the following is obtained.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Oracle-Support-Phases-6.png" alt="OBIEE 11.1.1.7: Is It Still Supported?"></p> <p>As mentioned before, this is a guideline for the whole OBIEE 11.1.1.* set of products, so how can I determine the <strong>end of support for a certain release</strong>? </p> <p>Usually the answer to this question is defined by</p> <ul> <li>The <em>end of the Premier/Extended Support</em> if the release you're checking is the latest available of a product</li> <li>The end of the release's <em>Grace period</em>: if a newer release is available. The grace period, mentioned in <a href="https://support.oracle.com/epmos/faces/DocContentDisplay?id=944866.1">Doc ID 944866.1</a> is the period of time (usually one year) following the release of a patch set in which Oracle provides fixes for both the new and previous patch set. The grace period is calculated based on the availability of the following release. E.g. since OBIEE 11.1.1.1.9 was released in May 2015, the grace period for 11.1.1.7 should be ended in May 2016. There are however exceptions where the grace period and related error correction support is extented, like for the 11.1.1.7 which now is extended until December 2018 as per <a href="https://support.oracle.com/epmos/faces/DocContentDisplay?id=1664916.1">OBIEE Error Correction Support</a> document.</li> </ul> <p>The following graph shows the error correction support phases for OBIEE 11.1.1.7.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/Timeline-11.1.1.7-2.png" alt="OBIEE 11.1.1.7: Is It Still Supported?"></p> <h1 id="whatdoesthismeanforobiee11117">What Does This Mean For OBIEE 11.1.1.7?</h1> <p>As stated above OBIEE 11.1.1.7 is still in its grace period meaning that bundle patches and security fixes will still be released when needed until Dec-2018.</p> <iframe style="margin: auto;" src="//giphy.com/embed/xT8qBqNisx9dkXWAX6" width="480" height="268" frameborder="0" class="giphy-embed" allowfullscreen></iframe> <p><a style="float:right;font-size:10pt" href="http://giphy.com/gifs/olympics-shaun-the-sheep-aardman-xT8qBqNisx9dkXWAX6">via GIPHY</a></p> <p><br></p> <h2 id="isobiee11117stilltherightchoice">Is OBIEE 11.1.1.7 Still The Right Choice?</h2> <p>If all you need is support for your existing and working environment having the latest bundle patch, then yes, you're fine and you'll be until December 2018. <br> But we all know how long an upgrade takes from planning to the actual execution and testing. Probably you don't want to wait until the end of next year having to rush for the upgrade because your system is getting out of support. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/1jrfyh.jpg" alt="OBIEE 11.1.1.7: Is It Still Supported?"></p> <p>We at Rittman Mead are in favour of a smart upgrade planning and with our <a href="https://www.rittmanmead.com/obiee-12c-upgrade/">fixed cost upgrade process</a> can take care of it while you keep focusing on what matters in your company.</p> <h3 id="upgrading">Upgrading</h3> <p>As suggested by Oracle's document there are two options: migrate to the latest 11g release (11.1.1.9) or 12c. Both are valid options - 11.1.1.9 has another few years of premier support, with end of error correction support targeted for Dec-2021 as stated in <a href="https://support.oracle.com/epmos/faces/DocContentDisplay?id=1664916.1">Oracle's Doc 1664916.1</a>. </p> <p>If you are opting for the migration, choosing the target release should be based on the features you aim to get and the version stability plan: some options like Visual Analyzer, Advanced Analytics, and Data Mashups are only available on 12c which is the version currently developed, while 11g is on its way out. These points are discussed in more detail below.</p> <h3 id="upgradingtoobiee11119">Upgrading to OBIEE 11.1.1.9</h3> <p>The migration to 11.1.1.9 might seem easier and it could be done in-place. However it still requires database schema changes, moreover an in-place upgrade has associated risk of having unavailable live environments until all issues are fixed; risk that can be mitigated with an out-of-place upgrade. <br> You can find a list of 11.1.1.9 new features <a href="https://www.rittmanmead.com/blog/2015/05/obiee-11-1-1-9-new-features-for-front-end-developers-and-business-users/">for end users</a> and <a href="https://www.rittmanmead.com/blog/2015/05/whats-new-in-obiee-11-1-1-9-for-systems-administrators-and-developers/">system admins</a> in our blog. </p> <p>Finally, if you migrate to 11.1.1.9, the end of its error correction support in Dec-2021 forces the next milestone in your upgrade path.</p> <h3 id="upgradingtoobiee12c">Upgrading to OBIEE 12c</h3> <p>On the other hand the migration to OBIEE 12c (with the <a href="http://www.oracle.com/technetwork/middleware/bi/downloads/default-3237328.html">12.2.1.2.0</a> being the latest available as of now) is completely an out-of-place process. There is a requirement on the source 11g version meaning that if you are currently on a pre-11.1.1.7 version, you'll first need to perform a migration to 11.1.1.7 or 11.1.1.9 and then to 12c. </p> <p>The upgrade process is smooth, with a dedicated upgrade tool taking care of moving the catalog, RPD and part of the security and a Baseline Validation Tool helping in automating the testing. <br> OBIEE 12c includes several <a href="https://www.rittmanmead.com/blog/2016/07/obiee-12-2-1-1-0-new-feature-guide/">new features</a> with new connectors to big data world that will increase over time and the new options like <a href="https://www.rittmanmead.com/blog/2015/06/new-in-oracle-bi-cloud-service-oracle-visual-analyzer-and-data-mashups-in-va/">Visual Analyzer and Data Mashup</a> providing great functionalities directly in the hands of end users.</p> <p>Check out our <a href="https://speakerdeck.com/ftisiot/obi12c-upgrade-experience-at-liberty-global">12c migration case study</a> presented at UKOUG!</p> <h3 id="rittmanmeadcanhelp">Rittman Mead Can Help!</h3> <p>Unsure about the support status of your current system and the risks related? With our experience we can help you plan a migration roadmap! <br> A migration is not a quick process, it needs to be understood and planned correctly, the following are just some examples of our pre-migration activities with clients. </p> <ul> <li><p><em>Worried about migrating?</em> </p> <p>We can advice about best installation/migration processes and the benefits of such upgrades. We can also help you implementing the processes during the migration phase.</p></li> <li><p><em>Unsure about server capacity?</em> </p> <p>We can help estimating server sizing based on the number of active users and the enabled features. Our <a href="https://www.rittmanmead.com/performance-analytics/">Performance Analytics Service</a> can help understanding and solving bottlenecks.</p></li> <li><p><em>Unsure about impact on BAU activities?</em></p> <p>Our migration approach reduces the Code Freeze time to a minimum; the time to swap between versions in the production environment can also be minimised.</p></li> <li><p><em>Uncertain about timings?</em> </p> <p>We can help you estimating effort and plans for a successful upgrade based on our experience.</p></li> </ul> <p>Once the migration in planned, we can implement it for you or assist and support your team! <a href="https://www.rittmanmead.com/contact/">Let us help you!</a></p> Francesco Tisiot 7815bf5f-0d0a-4cc9-9e80-d56d33386b49 Tue Feb 28 2017 08:11:34 GMT-0500 (EST) Replicating a table without Primary Keys using OGG to the SDS https://blogs.oracle.com/biapps/entry/replicating_a_table_without_primary <p><span style="color: #0003ff;">Authors: &quot;Guna Vasireddy - Oracle&quot; and &quot;Sai Rajendra Vadakattu - Oracle &quot;</span> <br /></p> <h3>Use Case:</h3><font size="2" face="verdana,arial,helvetica,sans-serif">Customer is using Oracle Golden Gate (OGG) to replicate the Source to SDS and would like to configure BIAPPS to use the SDS instead of the Source. Note: The SDS table differs from the source table in primarily two things:<br /></font> <ol> <li><font size="2" face="verdana,arial,helvetica,sans-serif">BIAPPS expects CDC columns in the SDS. These are used by the BIAPPS mappings. These columns are automatically generated when you use the BIAPPS provided tools to create the SDS tables. Refer to the BIAPPS documentation for more details. </font></li> <li><font size="2" face="verdana,arial,helvetica,sans-serif">Hard Deletes in source get translated as soft deletes in the SDS. The column CDC$_DML_CODE=’D’ for such rows in the SDS. </font></li> </ol> <h3>Issue:</h3> <p><font size="2" face="verdana,arial,helvetica,sans-serif">Some of the source tables that are used by BIAPPS, neither have a primary key in the Source nor have a key defined in the BIAPPS ODI repository. At times, the source system enforces the primary key using the application layer and does not have primary keys at the database level. In such cases, the key would have been identified and mentioned in the BIAPPS ODI repository. And the BIAPPS documentation specifies how to configure OGG to use those columns using the keycols clause. There are other source tables that don't have a primary key at all. An example is the MTL_TRANSACTION_ACCOUNTS table in EBS. This table does not have a primary/unique key or a combination of columns that would uniquely identify a row. This blog details how such tables can be replicated.&nbsp; <br /></font></p> <h3>Solution:</h3> <p><font size="2" face="verdana,arial,helvetica,sans-serif">Follow the below steps to be able to replicate a table without Primary Keys using OGG. Essentially we ask OGG to treat all the columns in the table as the identifier using keycols clause. <br /></font></p> <ol> <li><font size="2" face="verdana,arial,helvetica,sans-serif">Make a list of all the columns present in the table. Using the list prepare the keycols clause for OGG including all the columns.</font></li> <li><font size="2" face="verdana,arial,helvetica,sans-serif">Edit the replicat param file to specify the keycols clause for the tables being replicated. Restart OGG so that the new replicat file becomes effective.</font></li> <li><font size="2" face="verdana,arial,helvetica,sans-serif">Do a full replication of the table initially using either dblink or other methods (like expdp) as would have been done with other tables. Subsequently use OGG to perform the incremental replication. <br /></font></li> <li><font size="2" face="verdana,arial,helvetica,sans-serif">If the table is known to have large volumes, then to improve performance, consider creating a regular index on the join columns. These are usually the columns on which the table is joined with other tables in the SDE maps. Create this after doing the initial full replication of the table. </font><br /></li> </ol> <p><font size="2" face="verdana,arial,helvetica,sans-serif">Following is the observed behavior when using the above solution</font></p> <p><font size="2" face="verdana,arial,helvetica,sans-serif"></font><!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:AllowPNG/> </o:OfficeDocumentSettings> </xml><![endif]--></p> <p><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:EnableOpenTypeKerning/> <w:DontFlipMirrorIndents/> <w:OverrideTableStyleHps/> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="&#45;-"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true" DefSemiHidden="true" DefQFormat="false" DefPriority="99" LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" Priority="39" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" Name="toc 9"/> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/> <w:LsdException Locked="false" Priority="10" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Title"/> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/> <w:LsdException Locked="false" Priority="11" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" Priority="22" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" Priority="59" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/> <w:LsdException Locked="false" Priority="34" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin-top:0in; mso-para-margin-right:0in; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0in; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;} </style> <![endif]--> </p> <table border="1" cellspacing="0" cellpadding="0" style="margin-left: 5.4pt; border-collapse: collapse; border: medium none;" class="MsoNormalTable"> <tbody> <tr> <td width="198" valign="top" style="width: 148.5pt; border: 1pt solid windowtext; background: #d9d9d9 none repeat scroll 0% 0%; padding: 0in 5.4pt;"> <p class="MsoNormal"><b><span style="font-size: 9pt; line-height: 115%;">Action on Source</span></b></p> </td> <td width="228" valign="top" style="width: 171pt; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; background: #d9d9d9 none repeat scroll 0% 0%; padding: 0in 5.4pt;"> <p class="MsoNormal"><b><span style="font-size: 9pt; line-height: 115%;">Result in Target Db </span></b></p> </td> <td width="96" valign="top" style="width: 1in; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; background: #d9d9d9 none repeat scroll 0% 0%; padding: 0in 5.4pt;"> <p class="MsoNormal"><b><span style="font-size: 9pt; line-height: 115%;">Results as Expected</span></b></p> </td> </tr> <tr> <td width="198" valign="top" style="width: 148.5pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; padding: 0in 5.4pt;"> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">Insert records</span></p> </td> <td width="228" valign="top" style="width: 171pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0in 5.4pt;"> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">Record inserted </span></p> </td> <td width="96" valign="top" style="width: 1in; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0in 5.4pt;"> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">Y</span></p> </td> </tr> <tr> <td width="198" valign="top" style="width: 148.5pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; padding: 0in 5.4pt;"> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">Update record</span></p> </td> <td width="228" valign="top" style="width: 171pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0in 5.4pt;"> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">Existing record get updated </span></p> </td> <td width="96" valign="top" style="width: 1in; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0in 5.4pt;"> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">Y</span></p> </td> </tr> <tr> <td width="198" valign="top" style="width: 148.5pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; padding: 0in 5.4pt;"> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">Delete record</span></p> </td> <td width="228" valign="top" style="width: 171pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0in 5.4pt;"> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">Existing record gets marked for delete CDC$_DML_CODE=’D’</span></p> </td> <td width="96" valign="top" style="width: 1in; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0in 5.4pt;"> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">Y</span></p> </td> </tr> <tr> <td width="198" valign="top" style="width: 148.5pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; padding: 0in 5.4pt;"> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">Have two duplicates rows in source. These match in all columns.</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">Perform Inserts/updates/deletes and check</span></p> </td> <td width="228" valign="top" style="width: 171pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0in 5.4pt;"> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">Have same two duplicates rows in target.</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%; color: red;">It is randomly picking one row out of the two rows for updates/deletes</span><span style="font-size: 9pt; line-height: 115%;"></span></p> </td> <td width="96" valign="top" style="width: 1in; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0in 5.4pt;"> <p class="MsoNormal"><b><span style="font-size: 9pt; line-height: 115%; color: red;">N</span></b><b><span style="font-size: 9pt; line-height: 115%;"></span></b></p> </td> </tr> </tbody> </table> <p> <font size="2" face="verdana,arial,helvetica,sans-serif">So as long as there are no duplicates in the tables (i.e. rows having values matching in all columns), the above approach works fine. It is unlikely that the source table will have two exact duplicate rows and so this approach should be expected to work. <br />The above is explained by taking the example for one EBS table, MTL_TRANSACTION_ACCOUNTS, which falls under this category. The Replicat file is modified to include all the columns.</font></p> <p><!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:AllowPNG/> </o:OfficeDocumentSettings> </xml><![endif]--></p> <p><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:EnableOpenTypeKerning/> <w:DontFlipMirrorIndents/> <w:OverrideTableStyleHps/> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="&#45;-"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true" DefSemiHidden="true" DefQFormat="false" DefPriority="99" LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" Priority="39" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" Name="toc 9"/> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/> <w:LsdException Locked="false" Priority="10" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Title"/> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/> <w:LsdException Locked="false" Priority="11" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" Priority="22" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" Priority="59" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/> <w:LsdException Locked="false" Priority="34" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin-top:0in; mso-para-margin-right:0in; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0in; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;} table.MsoTableGrid {mso-style-name:"Table Grid"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-priority:59; mso-style-unhide:no; border:solid windowtext 1.0pt; mso-border-alt:solid windowtext .5pt; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-border-insideh:.5pt solid windowtext; mso-border-insidev:.5pt solid windowtext; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;} </style> <![endif]--> </p> <h3>Sample Replicat file:</h3> <p><!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:AllowPNG/> </o:OfficeDocumentSettings> </xml><![endif]--></p> <p><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:EnableOpenTypeKerning/> <w:DontFlipMirrorIndents/> <w:OverrideTableStyleHps/> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="&#45;-"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true" DefSemiHidden="true" DefQFormat="false" DefPriority="99" LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" Priority="39" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" Name="toc 9"/> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/> <w:LsdException Locked="false" Priority="10" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Title"/> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/> <w:LsdException Locked="false" Priority="11" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" Priority="22" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" Priority="59" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/> <w:LsdException Locked="false" Priority="34" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin-top:0in; mso-para-margin-right:0in; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0in; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;} table.MsoTableGrid {mso-style-name:"Table Grid"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-priority:59; mso-style-unhide:no; border:solid windowtext 1.0pt; mso-border-alt:solid windowtext .5pt; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-border-insideh:.5pt solid windowtext; mso-border-insidev:.5pt solid windowtext; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;} </style> <![endif]--> </p> <p> </p> <table style="margin-left: 5.4pt;"> <tbody> <tr> <td width="564" valign="top" style="width: 423pt; border: 1pt solid windowtext; padding: 0in 5.4pt;"> <p class="MsoPlainText"><!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:AllowPNG/> </o:OfficeDocumentSettings> </xml><![endif]--></p> <p class="MsoPlainText"><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:EnableOpenTypeKerning/> <w:DontFlipMirrorIndents/> <w:OverrideTableStyleHps/> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="&#45;-"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true" DefSemiHidden="true" DefQFormat="false" DefPriority="99" LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" Priority="39" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" Name="toc 9"/> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/> <w:LsdException Locked="false" Priority="10" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Title"/> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/> <w:LsdException Locked="false" Priority="11" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" Priority="22" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" Priority="59" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/> <w:LsdException Locked="false" Priority="34" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin-top:0in; mso-para-margin-right:0in; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0in; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;} </style> <![endif]--> </p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">------------------------------------------------</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">-- MTL_TRANSACTION_ACCOUNTS</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">------------------------------------------------</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;"> </span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">-- Process Inserts --</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;"> </span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">GETINSERTS</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">IGNOREUPDATES</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">IGNOREDELETES</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">MAP EBS_SRC.MTL_TRANSACTION_ACCOUNTS, TARGET SRC_REPLICA.MTL_TRANSACTION_ACCOUNTS</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">,COLMAP (USEDEFAULTS)</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">,CDC$_RPL_LAST_UPDATE_DATE = @DATENOW (),</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">CDC$_SRC_LAST_UPDATE_DATE = @GETENV ('GGHEADER', 'COMMITTIMESTAMP'),</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">CDC$_DML_CODE = 'I')</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%; background: yellow none repeat scroll 0% 0%;">,keycols(TRANSACTION_ID,REFERENCE_ACCOUNT,LAST_UPDATE_DATE,LAST_UPDATED_BY, CREATION_DATE,CREATED_BY,LAST_UPDATE_LOGIN, INVENTORY_ITEM_ID, ORGANIZATION_ID,TRANSACTION_DATE,TRANSACTION_SOURCE_ID, TRANSACTION_SOURCE_TYPE_ID,TRANSACTION_VALUE, PRIMARY_QUANTITY,GL_BATCH_ID,ACCOUNTING_LINE_TYPE, BASE_TRANSACTION_VALUE,CONTRA_SET_ID,RATE_OR_AMOUNT,BASIS_TYPE,RESOURCE_ID, COST_ELEMENT_ID,ACTIVITY_ID,CURRENCY_CODE, CURRENCY_CONVERSION_DATE,CURRENCY_CONVERSION_TYPE,CURRENCY_CONVERSION_RATE, REQUEST_ID, PROGRAM_APPLICATION_ID,PROGRAM_ID,PROGRAM_UPDATE_DATE, ENCUMBRANCE_TYPE_ID,REPETITIVE_SCHEDULE_ID,GL_SL_LINK_ID, USSGL_TRANSACTION_CODE,INV_SUB_LEDGER_ID)</span><span style="font-size: 9pt; line-height: 115%;"></span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">;</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;"> </span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">-- Process Updates --</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;"> </span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">GETUPDATES</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">IGNOREINSERTS</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">IGNOREDELETES</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">MAP EBS_SRC.MTL_TRANSACTION_ACCOUNTS, TARGET SRC_REPLICA.MTL_TRANSACTION_ACCOUNTS</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">,COLMAP (USEDEFAULTS)</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">,CDC$_RPL_LAST_UPDATE_DATE = @DATENOW (),</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">CDC$_SRC_LAST_UPDATE_DATE = @GETENV ('GGHEADER', 'COMMITTIMESTAMP'),</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">CDC$_DML_CODE = 'U')</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%; background: yellow none repeat scroll 0% 0%;">,keycols(TRANSACTION_ID,REFERENCE_ACCOUNT,LAST_UPDATE_DATE,LAST_UPDATED_BY, CREATION_DATE,CREATED_BY,LAST_UPDATE_LOGIN, INVENTORY_ITEM_ID, ORGANIZATION_ID,TRANSACTION_DATE,TRANSACTION_SOURCE_ID, TRANSACTION_SOURCE_TYPE_ID,TRANSACTION_VALUE,PRIMARY_QUANTITY,GL_BATCH_ID, ACCOUNTING_LINE_TYPE,BASE_TRANSACTION_VALUE,CONTRA_SET_ID, RATE_OR_AMOUNT,BASIS_TYPE,RESOURCE_ID,COST_ELEMENT_ID,ACTIVITY_ID,CURRENCY_CODE, CURRENCY_CONVERSION_DATE,CURRENCY_CONVERSION_TYPE,CURRENCY_CONVERSION_RATE, REQUEST_ID,PROGRAM_APPLICATION_ID, PROGRAM_ID,PROGRAM_UPDATE_DATE,ENCUMBRANCE_TYPE_ID, REPETITIVE_SCHEDULE_ID, GL_SL_LINK_ID,USSGL_TRANSACTION_CODE,INV_SUB_LEDGER_ID)</span><span style="font-size: 9pt; line-height: 115%;"></span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">;</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;"> </span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">-- Process Deletes --</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;"> </span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">IGNOREINSERTS</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">IGNOREUPDATES</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">GETDELETES</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">UPDATEDELETES</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">MAP EBS_SRC.MTL_TRANSACTION_ACCOUNTS, TARGET SRC_REPLICA.MTL_TRANSACTION_ACCOUNTS</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">,COLMAP (USEDEFAULTS)</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">,CDC$_RPL_LAST_UPDATE_DATE = @DATENOW (),</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">CDC$_SRC_LAST_UPDATE_DATE = @GETENV ('GGHEADER', 'COMMITTIMESTAMP'),</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%;">CDC$_DML_CODE = 'D')</span></p> <p class="MsoNormal"><span style="font-size: 9pt; line-height: 115%; background: yellow none repeat scroll 0% 0%;">,keycols(TRANSACTION_ID,REFERENCE_ACCOUNT,LAST_UPDATE_DATE,LAST_UPDATED_BY, CREATION_DATE, CREATED_BY,LAST_UPDATE_LOGIN, INVENTORY_ITEM_ID,ORGANIZATION_ID,TRANSACTION_DATE,TRANSACTION_SOURCE_ID, TRANSACTION_SOURCE_TYPE_ID,TRANSACTION_VALUE, PRIMARY_QUANTITY,GL_BATCH_ID,ACCOUNTING_LINE_TYPE,BASE_TRANSACTION_VALUE, CONTRA_SET_ID,RATE_OR_AMOUNT,BASIS_TYPE,RESOURCE_ID,COST_ELEMENT_ID, ACTIVITY_ID,CURRENCY_CODE,CURRENCY_CONVERSION_DATE,CURRENCY_CONVERSION_TYPE, CURRENCY_CONVERSION_RATE,REQUEST_ID,PROGRAM_APPLICATION_ID,&nbsp; PROGRAM_ID,PROGRAM_UPDATE_DATE,ENCUMBRANCE_TYPE_ID,REPETITIVE_SCHEDULE_ID, GL_SL_LINK_ID,USSGL_TRANSACTION_CODE,INV_SUB_LEDGER_ID)</span><span style="font-size: 9pt; line-height: 115%;"></span></p> <span style="font-size: 9pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; background: yellow none repeat scroll 0% 0%;">;</span> </td> </tr> </tbody> </table> <h3>Suggested columns for indexes in SDS:</h3> <p class="MsoNormal"><font size="2" face="verdana,arial,helvetica,sans-serif">Looking at columns used as joins for this table, TRANSACTION_ID is a likely candidate for an index on the SDS.</font></p> <!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:AllowPNG/> </o:OfficeDocumentSettings> </xml><![endif]--> <table border="1" cellspacing="0" cellpadding="0" style="margin-left: 5.4pt; border-collapse: collapse; border: medium none;" class="MsoTableGrid"> <tbody> <tr> <td width="233" valign="top" style="width: 174.45pt; border: 1pt solid windowtext; background: #d9d9d9 none repeat scroll 0% 0%; padding: 0in 5.4pt;"> <p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"><b>Table Name</b></p> </td> <td width="399" valign="top" style="width: 298.95pt; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; background: #d9d9d9 none repeat scroll 0% 0%; padding: 0in 5.4pt;"> <p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"><b>Suggested Columns for index</b></p> </td> </tr> <tr> <td width="233" valign="top" style="width: 174.45pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; padding: 0in 5.4pt;"> <p class="MsoPlainText">MTL_TRANSACTION_ACCOUNTS</p> </td> <td width="399" valign="top" style="width: 298.95pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0in 5.4pt;"> <p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal">TRANSACTION_ID</p> </td> </tr> </tbody> </table> <p class="MsoNormal"><font size="2" face="verdana,arial,helvetica,sans-serif">Note: These are regular indexes and not unique/primary keys and should help with the mappings that extract from this SDS table. </font></p> <h3 class="MsoNormal"><font size="2" face="verdana,arial,helvetica,sans-serif">FAQs:</font></h3> <p><font size="2" face="verdana,arial,helvetica,sans-serif">1) If I don't specify any keycols, Golden Gate is supposed to use all the columns as key columns. How is this different from that?<br /></font></p><font size="2" face="verdana,arial,helvetica,sans-serif"> </font> <p><font size="2" face="verdana,arial,helvetica,sans-serif">Not specifying any keycols is the same as specifying keycols on all the columns. Specifying keycols however make it clear to the person reviewing it as to how OGG will do the replication. </font></p><font size="2" face="verdana,arial,helvetica,sans-serif"> </font> <p><font size="2" face="verdana,arial,helvetica,sans-serif">2) Is there any performance impact due to this?</font></p><font size="2" face="verdana,arial,helvetica,sans-serif"> </font> <p><font size="2" face="verdana,arial,helvetica,sans-serif">OGG will need to store the values against all the columns inorder to find the row in the target to perform the same operation. So there definitely will be an overhead. So where primary keys are available, you should use them. Use this approach only for cases where it is not possible to identify such a key</font></p><font size="2" face="verdana,arial,helvetica,sans-serif"> </font> <p><font size="2" face="verdana,arial,helvetica,sans-serif">3) I don't have a primary key index on my source and we are not allowed to modify the Source tables. However I know the columns that make up the primary key. What do I do?</font></p><font size="2" face="verdana,arial,helvetica,sans-serif"> </font> <p><font size="2" face="verdana,arial,helvetica,sans-serif"> If you have a primary/unique key/index defined on Source/Target, OGG will automatically use them. In the absence of such keys, OGG by default will treat all columns as keycols as specified above. However if you do know the columns that make up the primary key and do not want to define the primary key index at the database level, then you can use the keycols clause detailed above to specify only those columns. In other words keycols can be used to specify which subset of columns make up the primary key in the source/target. And that would be more efficient than specifying all the columns. </font></p><font size="2" face="verdana,arial,helvetica,sans-serif"> </font> <p><font size="2" face="verdana,arial,helvetica,sans-serif">4) If we specify all columns as keycols, won't we end up with new rows everytime there is an update to the source</font></p><font size="2" face="verdana,arial,helvetica,sans-serif"> </font> <p><font size="2" face="verdana,arial,helvetica,sans-serif">That is not how keycols work. Keycols specify the columns that will be used to find the record in the target and then the operation that was performed on the source, will be applied on that row in the target. Consider a case where source has three columns and a row with col1=a,col2=b,col3=c. In the source col2 is now updated to b2. The operation OGG will do is roughly equivalent to this SQL</font></p><font size="2" face="verdana,arial,helvetica,sans-serif"> </font> <p><font size="2" face="verdana,arial,helvetica,sans-serif">update table set col2=b2 where col1=a,col2=b and col3=c</font></p><font size="2" face="verdana,arial,helvetica,sans-serif"> </font> <p><font size="2" face="verdana,arial,helvetica,sans-serif">&nbsp;So OGG uses the values of the columns mentioned in keycols to identify the row in the target and then applies the same operation to that row. </font></p> <p><br /></p> <p><br /></p> <p><br /></p> <p> </p> <p><br /></p> <p> </p> <p><br /><br /></p> <p class="MsoNormal"><font size="2" face="verdana,arial,helvetica,sans-serif"><br /></font></p> <!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:EnableOpenTypeKerning/> <w:DontFlipMirrorIndents/> <w:OverrideTableStyleHps/> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="&#45;-"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true" DefSemiHidden="true" DefQFormat="false" DefPriority="99" LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" Priority="39" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" Name="toc 9"/> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/> <w:LsdException Locked="false" Priority="10" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Title"/> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/> <w:LsdException Locked="false" Priority="11" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" Priority="22" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" Priority="59" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/> <w:LsdException Locked="false" Priority="34" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin-top:0in; mso-para-margin-right:0in; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0in; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;} table.MsoTableGrid {mso-style-name:"Table Grid"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-priority:59; mso-style-unhide:no; border:solid windowtext 1.0pt; mso-border-alt:solid windowtext .5pt; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-border-insideh:.5pt solid windowtext; mso-border-insidev:.5pt solid windowtext; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;} </style> <![endif]--> <p> </p> <p> </p> Guna Vasireddy-Oracle https://blogs.oracle.com/biapps/entry/replicating_a_table_without_primary Tue Feb 28 2017 01:34:06 GMT-0500 (EST) Getting Apex 4.2 Up and Running on Oracle 12c Using PL/SQL Gateway http://www.rittmanmead.com/blog/2017/02/getting-apex-4-2-up-and-running-on-oracle-12c-using-plsql-gateway/ <p>Recently I was asked to create a simple Master-Detail Apex form on top of some metadata tables stored within Oracle 12c. Apex version 4.2 is already pre-installed in 12c but it needs configuring to be able to use. This is where I hit some trouble which stems from a conflict of information across a number of different sources. </p> <p>I was following the <a href="https://docs.oracle.com/database/121/HTMIG/db_install.htm#HTMIG203" title="Oracle Apex Installation Guide">Oracle certified documentation on 4.2 and how to get it running on 12c</a> specifically but it wouldn't work. Time after time I kept getting 'Error 404' messages whenever I tried accessing Apex through the browser. I gave up on the Oracle documentation and decided to scout out some blogs but they were virtually copy and paste and resulted in the same error messages. I asked colleagues at work and also joined the <a href="http://www.rittmanmead.com/blog/2017/02/getting-apex-4-2-up-and-running-on-oracle-12c-using-plsql-gateway/orclapex.slack.com" title="Public Apex Slack Domain">Apex slack domain</a> but nobody quite understood why it wasn't working. </p> <p>It seemed like a lost cause, until I decided to check the later versions of the Oracle documentation and came across an extra piece of information from an <a href="https://docs.oracle.com/cd/E59726_01/install.50/e39144/epg.htm#HTMIG386" title="Apex 5.0 Documentation">Apex 5.0 document</a>:</p> <pre><code>Procedures CREATE_ACL, ASSIGN_ACL, ADD_PRIVILEGE and CHECK_PRIVILEGE in DBMS_NETWORK_ACL_ADMIN are deprecated in Oracle Database 12c. Oracle recommends using APPEND_HOST_ACE instead. </code></pre> <p>Given that 12c comes with Apex 4.2, I was surprised to find it not mentioned anywhere else but in the Apex 5.0 documentation. </p> <p>So the intention for this blog entry, is to bring together all the information that is needed to get Apex 4.2 using PL/SQL Gateway on Oracle 12c so you're able to take a quick and easy look at what it can offer.</p> <p><strong>Steps to configure the PL/SQL Gateway on Oracle 12c</strong></p> <ol> <li><p>Change your working directory where Apex is installed: </p> <pre><code>cd $ORACLE_HOME/apex </code></pre></li> <li><p>Connect to SQL*Plus with a user with SYS privileges: </p> <pre><code>sqlplus / as sysdba </code></pre></li> <li><p>Switch containers to the pluggable database container: </p> <pre><code>ALTER SESSION SET CONTAINER = &lt;PDB_NAME&gt;; </code></pre></li> <li><p>Run the <code>apex_epg_config.sql</code> script along with the <code>$ORACLE_HOME</code>: </p> <pre><code>@apex_epg_config.sql /u01/app/oracle/product/12.1.0/dbhome_1/ </code></pre> <p><em>Log back into SQL*Plus from the Apex directory if you get logged out</em> </p></li> <li><p>Then unlock the <em>ANONYMOUS</em> user within the Root Container: </p> <pre><code>ALTER SESSION SET CONTAINER = CDB$ROOT; ALTER USER ANONYMOUS ACCOUNT UNLOCK; </code></pre></li> <li><p>Switch to the pluggable database container and run <code>apxconf.sql</code>: </p> <pre><code>ALTER SESSION SET CONTAINER = &lt;PDB_NAME&gt;; @apxconf.sql; </code></pre> <p><em>When prompted change the ADMIN password and assign a port for APEX to connect to - Default is 8080</em>. </p></li> <li><p>Verify the Oracle XDB Protocol Server Port that was set after running the <em>apxconf.sql</em> script: </p> <pre><code>ALTER SESSION SET CONTAINER = &lt;PDB_NAME&gt;; SELECT DBMS_XDB.GETHTTPPORT FROM DUAL; </code></pre> <p><em>If it returns with [0] then enable the XDB Server</em> </p> <pre><code>EXEC DBMS_XDB.SETHTTPPORT(port); COMMIT; </code></pre></li> <li><p>Enable the Network Services in Oracle Database 12c - This will be disabled by default. This following will give access to all hosts: </p> <pre><code>BEGIN DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE (host =&gt; '*', ace =&gt; xs$ace_type(privilege_list =&gt; xs$name_list('connect'), principal_name =&gt; 'apex_040200', principal_type =&gt; xs_acl.ptype_db)); END; / </code></pre> <p><em>NOTE: If you require stricter security add the host name after the host parameter e.g. <code>host =&gt; 'localhost'</code></em> </p></li> <li><p>Open your browser and connect to Apex: </p> <pre><code>http://hostname:8080/apex </code></pre></li> </ol> <h4 id="summary">Summary</h4> <p>This blog has given you the guidelines for getting Apex 4.2, that comes pre-installed on Oracle 12c, up and running. </p> <p>Note that 4.2 is now quite dated and it is recommended to upgrade to Apex 5. This ensures continued support from Oracle, and <a href="https://docs.oracle.com/cd/E59726_01/doc.50/e39143/toc.htm#HTMRN240" title="Oracle Apex 5 Release Notes">access to newer and more efficient features</a>.</p> Christopher Leopard 56ad8847-ad59-4bf1-857e-1fa2bf2ced3b Mon Feb 27 2017 11:30:00 GMT-0500 (EST) Checkmate: Jenkins, GitHub, and Continuous Integration (Ep 004) http://www.youtube.com/watch?v=VySVz00qt-Y Red Pill Analytics yt:video:VySVz00qt-Y Mon Feb 27 2017 10:00:35 GMT-0500 (EST) OBIEE 12c Custom Style using shared folder (analyticsRes) https://gianniceresa.com/2017/02/obiee-12c-custom-style-using-shared-folder/ <p>Some weeks ago I wrote about how to <a href="https://gianniceresa.com/2016/12/obiee-12c-custom-style-ear-file/" target="_blank">deploy a custom style in OBIEE 12c by using an EAR file</a>. At that time, I said the EAR file was, for me, a better solution compared to the old classic <em>analyticsRes</em> shared folder as during a quick test I saw lot of <em>404 Not found</em> errors when using a shared folder.</p> <p>I now spent some time testing this second approach using a shared folder more in detail and comparing the current available versions of OBIEE 12c: 12.2.1.0.0 , 12.2.1.1.0 and 12.2.1.2.0 . And I changed my mind &#8230;</p> <div id="attachment_273" style="width: 1034px" class="wp-caption aligncenter"><img class="size-large wp-image-273" src="https://gianniceresa.com/wp-content/uploads/2016/12/custom_style_datalysis_style-1024x368.png" alt="" width="1024" height="368" srcset="https://gianniceresa.com/wp-content/uploads/2016/12/custom_style_datalysis_style-1024x368.png 1024w, https://gianniceresa.com/wp-content/uploads/2016/12/custom_style_datalysis_style-300x108.png 300w, https://gianniceresa.com/wp-content/uploads/2016/12/custom_style_datalysis_style-768x276.png 768w, https://gianniceresa.com/wp-content/uploads/2016/12/custom_style_datalysis_style-1080x389.png 1080w" sizes="(max-width: 1024px) 100vw, 1024px" /><p class="wp-caption-text">My custom style &#8220;live&#8221; on my OBIEE server, custom logo, different colors</p></div> <blockquote><p>Don&#8217;t want to read through the full post and just want my conclusion on the best way to deploy a custom style in OBIEE 12c?<br /> Or you already read the post about <a href="https://gianniceresa.com/2016/12/deploy-custom-folder-obiee-12c-analyticsres/">deploying a custom folder in OBIEE 12c</a> and the one about the <a href="https://gianniceresa.com/2016/12/obiee-12c-custom-style-ear-file/">custom style with the EAR file</a>?</p> <p>Jump directly to the end of the page where I resume the general topic of style customization and provide my point of view on both approaches with some arguments on how to choose one over the other.<br /> This post will repeat parts already covered in other posts earlier.</p></blockquote> <h2>The official Oracle documentation</h2> <p>First, it&#8217;s always good to reference the official documentation as it generally gives most of the answers. The documents about custom style using a shared folder are the following:</p> <ul> <li><strong>OBIEE 12.2.1.0.0 :</strong> <a href="http://docs.oracle.com/middleware/1221/biee/BIESG/answersconfigset.htm#BABIDFFJ" target="_blank">http://docs.oracle.com/middleware/1221/biee/BIESG/answersconfigset.htm</a></li> <li><strong>OBIEE 12.2.1.1.0 :</strong> <a href="http://docs.oracle.com/middleware/12211/biee/BIESG/GUID-237D613D-CC0D-464D-BBC2-9A223CD12567.htm#GUID-8813135B-2938-4ADC-85C0-9DA77E8C2191" target="_blank">http://docs.oracle.com/middleware/12211/biee/BIESG/GUID-237D613D-CC0D-464D-BBC2-9A223CD12567.htm</a></li> <li><strong>OBIEE 12.2.1.2.0 :</strong> <a href="http://docs.oracle.com/middleware/12212/biee/BIESG/GUID-237D613D-CC0D-464D-BBC2-9A223CD12567.htm#GUID-8813135B-2938-4ADC-85C0-9DA77E8C2191" target="_blank">http://docs.oracle.com/middleware/12212/biee/BIESG/GUID-237D613D-CC0D-464D-BBC2-9A223CD12567.htm</a></li> </ul> <h2>First step: define a location and prepare the custom style</h2> <p>First thing first: choose where to store your shared folder containing the custom style. There isn&#8217;t really a location better than another. I would just say where it&#8217;s better to not place it: inside the ORACLE_HOME.<br /> You are free to store the shared folder anywhere on the server, so don&#8217;t put it inside of the OBIEE install as you can&#8217;t be sure the folder will not disappear when doing updates/upgrades, and would make more sense to keep it outside as you can use the same on various versions of OBIEE. So put it somewhere else, even just next to the ORACLE_HOME.</p> <p>The folder can be named as you want, nothing is mandatory, so you can call it &#8220;analyticsRes&#8221; as it&#8217;s the historical name (and most of people call it like that) or just &#8220;custom&#8221; or even &#8220;ad88s21asd0rwe9d&#8221; (in the examples I used for this blog I named it &#8220;analyticsRes&#8221; and it&#8217;s located in <em>/opt/oracle/analyticsRes</em> while the ORACLE_HOME is <em>/opt/oracle/biee</em>).</p> <h4>The custom style template</h4> <p>To start developing a custom style for your OBIEE the simplest way is to start by using the template Oracle provides in your setup: the <em>bicustom-template.ear</em> file, you can find it in <em>ORACLE_HOME/bi/bifoundation/jee/</em>.</p> <p>If you already read the post about <a href="https://gianniceresa.com/2016/12/obiee-12c-custom-style-ear-file/" target="_blank">custom style with EAR file</a> you already know this part&#8230;</p> <p>Extract the EAR file inside the folder you created to store your customization to get the WAR file, everything else is not needed and you can delete it. Now extract the WAR file in the same location and the required folders are named <em>WEB-INF</em> and <em>res</em>. You can delete the <em>META-INF</em> folder, not needed (I like to keep things clean).</p> <h4>Edit filemap.xml</h4> <p>The <em>filemap.xml</em> file is the place where you must define the inheritance of your style: which one of the existing styles are you going to customize? This part is important as OBIEE will go back to that one in case something is missing inside yours. The file is located inside the <em>res</em> folder.</p> <p>In this case I&#8217;m going to create a custom style named DATAlysis and using the <a href="https://datalysis.ch" target="_blank">DATAlysis </a>branding (logo and colors) and I&#8217;m going to base the customization on Alta, the new OBIEE 12c &#8220;white&#8221; style.</p> <p>The file is nicely documented, the syntax is as simple as &#8220;Parent style&#8221; / &#8220;Child style&#8221;. Beware of uppercase / lowercase, it&#8217;s case sensitive, so &#8220;s_DATAlysis&#8221; is different than &#8220;s_Datalysis&#8221; which is different than &#8220;s_datalysis&#8221; etc.<br /> You must also provide the inheritance for the skin (the sk_ names) even if you aren&#8217;t going to create it at all.</p><pre class="crayon-plain-tag">&lt;FileMap&gt; &lt;!-- The style name should exactly match the name of the folder, including case --&gt; &lt;Styles Default="s_blafp"&gt; &lt;Hierarchy&gt;s_Alta / s_DATAlysis&lt;/Hierarchy&gt; &lt;/Styles&gt; &lt;!-- The style name should exactly match the name of the folder, including case--&gt; &lt;Skins Default="sk_blafp"&gt; &lt;Hierarchy&gt;sk_Alta / sk_DATAlysis&lt;/Hierarchy&gt; &lt;/Skins&gt; &lt;/FileMap&gt;</pre><p>Now that <em>filemap.xml</em> defines &#8220;s_DATAlysis&#8221; as my custom style I have to rename the folder with the style itself, the template has a <em>s_Custom</em> folder inside the <em>res</em> folder, just rename it to the exact name defined in <em>filemap.xml</em> (remember, case sensitive !).</p> <p>At this point my folder where I&#8217;m preparing the style looks like this:</p> <div id="attachment_339" style="width: 682px" class="wp-caption aligncenter"><img class="size-full wp-image-339" src="https://gianniceresa.com/wp-content/uploads/2017/02/custom_folder_sf_folder_structure.png" alt="" width="672" height="395" srcset="https://gianniceresa.com/wp-content/uploads/2017/02/custom_folder_sf_folder_structure.png 672w, https://gianniceresa.com/wp-content/uploads/2017/02/custom_folder_sf_folder_structure-300x176.png 300w" sizes="(max-width: 672px) 100vw, 672px" /><p class="wp-caption-text">The structure of my shared folder at this point.</p></div> <h4>A custom style based on Alta?</h4> <p>As I said I want to base my customization on Alta, this is also what I defined in <em>filemap.xml</em>, so as a first step I must find Alta! The template OBIEE provides is based on Skyros, they maybe didn&#8217;t update the template since previous version as Alta is the default style in 12c.</p> <p>To get the Alta style and use it as base it&#8217;s quite simple:</p> <ol> <li>Get a copy of <em>ORACLE_HOME/bi/bifoundation/jee/analytics.ear</em> : this is the EAR file containing all the default styles and a lot more (do not mess with this one, do not customize this one as you are going to lose everything at the first update, even if some suggested to do it this way in the past).</li> <li>Extract this file (unzip) in a temporary folder and extract again <em>analytics.war</em> in a temporary folder.</li> <li>Go to <em>res/s_Alta/master</em> and copy all its content to your own custom style (delete old content first and then copy the one from s_Alta, only the <em>master</em> folder is needed).</li> </ol> <p>In my case I delete <em>/res/s_DATAlysis/master</em> and copy inside <em>/res/s_DATAlysis</em> the <em>master</em> folder I got from Alta.</p> <h4>Customize the style</h4> <p>Everything is now ready to apply the real customization: the custom one is based on a clean Alta style and it&#8217;s ready for the changes.</p> <p>You can customize everything you want. The first thing is probably to replace the <em>oracle_logo.png</em> and add new content inside <em>custom.css</em>. I&#8217;m not going into details as it really depends on what you try to do (colors, fonts etc.).</p> <p>Just a note: I would advise to start by trying keeping your custom CSS in <em>custom.css</em> if possible (even if it will require some &#8220;!important&#8221; syntax) instead of editing directly <em>master.css</em>, why? In this way you can easily rebase your style on a new one (different / updated version of Alta for example during an update/upgrade) instead of trying to remember what you changed in the <em>master.css</em> file etc.</p> <h2>Deploy the shared folder in Weblogic</h2> <p>The deploy process requires you to set some options.</p> <p><strong>1)</strong> Open the Weblogic Server Administration Console, by default http://&lt;your IP/domain&gt;:9500/console in OBIEE 12c, and navigate to the &#8220;Deployments&#8221; screen using the domain structure view on the left. To install a new deployment, you first need to enable the edit mode by clicking on &#8220;Lock &amp; Edit&#8221; and then you can start the install wizard with the &#8220;Install&#8221; button.</p> <div id="attachment_218" style="width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_01_new_deployment.png"><img class="size-large wp-image-218" src="https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_01_new_deployment-1024x454.png" alt="From the &quot;Deployment&quot; screen first &quot;Lock &amp; Edit&quot; the Weblogic configuration and then start the install steps" width="1024" height="454" srcset="https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_01_new_deployment-1024x454.png 1024w, https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_01_new_deployment-300x133.png 300w, https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_01_new_deployment-768x340.png 768w, https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_01_new_deployment-1080x479.png 1080w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">From the &#8220;Deployment&#8221; screen first &#8220;Lock &amp; Edit&#8221; the Weblogic configuration and then start the install steps</p></div> <p><strong>2)</strong> The first thing to do is navigate in the filesystem to point to the folder you want to deploy, mine is /opt/oracle/analyticsRes. Thanks to the WEB-INF folder Weblogic knows it can deploy that folder and make it visible on screen with a different icon in front of the folder and a radio button to select the location. Select the folder and move to the next step.</p> <div id="attachment_219" style="width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_02_select_folder.png"><img class="size-large wp-image-219" src="https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_02_select_folder-1024x323.png" alt="Browser the filesystem and select the folder representing the deployment" width="1024" height="323" srcset="https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_02_select_folder-1024x323.png 1024w, https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_02_select_folder-300x95.png 300w, https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_02_select_folder-768x243.png 768w, https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_02_select_folder-1080x341.png 1080w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">Browser the filesystem and select the folder representing the deployment</p></div> <p><strong>3)</strong> It&#8217;s important to set the correct type of installation, in your case &#8220;Install this deployment as an application&#8221; before to move to the next step.</p> <div id="attachment_220" style="width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_03_deploy_as_app.png"><img class="size-large wp-image-220" src="https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_03_deploy_as_app-1024x331.png" alt="Install the deployment as an application" width="1024" height="331" srcset="https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_03_deploy_as_app-1024x331.png 1024w, https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_03_deploy_as_app-300x97.png 300w, https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_03_deploy_as_app-768x248.png 768w, https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_03_deploy_as_app-1080x349.png 1080w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">Install the deployment as an application</p></div> <p><strong>4)</strong> Time to define where you want to deploy the folder. I recommend to avoid the AdminServer and to prefer the managed server running OBIEE. In your case you can simply select the &#8220;bi_cluster&#8221; and &#8220;All servers in the cluster&#8221; to keep it simple. It&#8217;s the same as explicitly select &#8220;bi_server1&#8221; in a normal setup.</p> <div id="attachment_221" style="width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_04_deploy_on_cluster.png"><img class="size-large wp-image-221" src="https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_04_deploy_on_cluster-1024x428.png" alt="Make the deployment available from the &quot;BI cluster&quot; and not the Admin server to have the same domain and port as OBIEE" width="1024" height="428" srcset="https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_04_deploy_on_cluster-1024x428.png 1024w, https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_04_deploy_on_cluster-300x125.png 300w, https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_04_deploy_on_cluster-768x321.png 768w, https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_04_deploy_on_cluster-1080x451.png 1080w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">Make the deployment available from the &#8220;BI cluster&#8221; and not the Admin server to have the same domain and port as OBIEE</p></div> <p><strong>5)</strong> In the option settings a very important step is to select &#8220;I will make the deployment accessible from the following location&#8221; under the <em>Source Accessibility</em> section of the page. In this way you can easily add new files and edit existing ones and the changes are directly valid and visible.</p> <div id="attachment_222" style="width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_05_accessible_from_location.png"><img class="size-large wp-image-222" src="https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_05_accessible_from_location-1024x889.png" alt="You must select &quot;I will make the deployment accessible from the following location&quot; to see live changes when you add new files or modify existing ones" width="1024" height="889" srcset="https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_05_accessible_from_location-1024x889.png 1024w, https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_05_accessible_from_location-300x261.png 300w, https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_05_accessible_from_location-768x667.png 768w, https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_05_accessible_from_location-1080x938.png 1080w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">You must select &#8220;I will make the deployment accessible from the following location&#8221; to see live changes when you add new files or modify existing ones</p></div> <p><strong>6)</strong> The deployment install steps are over, everything is set correctly and you can double check the settings in the summary. Time to move to the configuration screen for the newly installed deployment.</p> <div id="attachment_223" style="width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_06_deployment_config_screen.png"><img class="size-large wp-image-223" src="https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_06_deployment_config_screen-1024x503.png" alt="Once the install steps are done you can move to the configuration screen of the new deployment" width="1024" height="503" srcset="https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_06_deployment_config_screen-1024x503.png 1024w, https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_06_deployment_config_screen-300x147.png 300w, https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_06_deployment_config_screen-768x377.png 768w, https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_06_deployment_config_screen-1080x530.png 1080w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">Once the install steps are done you can move to the configuration screen of the new deployment</p></div> <p><strong>7)</strong> At this point you can check the configuration and modify attributes if you need, after you must &#8220;Activate Changes&#8221; with the button on the top-left to commit the changes in the Weblogic configuration.</p> <div id="attachment_340" style="width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/02/custom_folder_sf_deployment_context_root.png"><img class="size-large wp-image-340" src="https://gianniceresa.com/wp-content/uploads/2017/02/custom_folder_sf_deployment_context_root-1024x909.png" alt="" width="1024" height="909" srcset="https://gianniceresa.com/wp-content/uploads/2017/02/custom_folder_sf_deployment_context_root-1024x909.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/02/custom_folder_sf_deployment_context_root-300x266.png 300w, https://gianniceresa.com/wp-content/uploads/2017/02/custom_folder_sf_deployment_context_root-768x681.png 768w, https://gianniceresa.com/wp-content/uploads/2017/02/custom_folder_sf_deployment_context_root-1080x958.png 1080w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">Fix the context root of your deployment</p></div> <div id="attachment_224" style="width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_07_active_changes.png"><img class="size-large wp-image-224" src="https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_07_active_changes-1024x598.png" alt="Review the settings and &quot;Activate Changes&quot; to commit changes in Weblogic" width="1024" height="598" srcset="https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_07_active_changes-1024x598.png 1024w, https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_07_active_changes-300x175.png 300w, https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_07_active_changes-768x449.png 768w, https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_07_active_changes-1080x631.png 1080w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">Review the settings and &#8220;Activate Changes&#8221; to commit changes in Weblogic</p></div> <p><strong>8)</strong> Last step left is to start servicing queries. In the <em>Control</em> screen of the deployment you can select it and in the &#8220;Start&#8221; button you select &#8220;Servicing all requests&#8221;.</p> <div id="attachment_225" style="width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_08_start_deployment.png"><img class="size-large wp-image-225" src="https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_08_start_deployment-1024x344.png" alt="The deployment must be &quot;started&quot;" width="1024" height="344" srcset="https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_08_start_deployment-1024x344.png 1024w, https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_08_start_deployment-300x101.png 300w, https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_08_start_deployment-768x258.png 768w, https://gianniceresa.com/wp-content/uploads/2016/12/analyticsRes_08_start_deployment-1080x362.png 1080w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">The deployment must be &#8220;started&#8221;</p></div> <p>The Weblogic Console part is done, the shared folder is now deployed on the server and available by using the <em>/analyticsRes</em> url.</p> <h2>Configure the Presentation Service to point to your custom style and shared folder</h2> <p>The last step is to let the OBI Presentation Service know about the new style and its location (both on disk and browser).</p> <p>The setting is done into the <em>instanceconfig.xml</em> file, located in the <em>BI_DOMAIN/config/fmwconfig/biconfig/OBIPS/</em> folder.</p> <blockquote><p>Remember: doesn&#8217;t cost anything to backup the file before to start editing it. Just in case &#8230;</p></blockquote> <div id="attachment_341" style="width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/02/custom_folder_sf_instanceconfig.png"><img class="size-large wp-image-341" src="https://gianniceresa.com/wp-content/uploads/2017/02/custom_folder_sf_instanceconfig-1024x298.png" alt="" width="1024" height="298" srcset="https://gianniceresa.com/wp-content/uploads/2017/02/custom_folder_sf_instanceconfig-1024x298.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/02/custom_folder_sf_instanceconfig-300x87.png 300w, https://gianniceresa.com/wp-content/uploads/2017/02/custom_folder_sf_instanceconfig-768x223.png 768w, https://gianniceresa.com/wp-content/uploads/2017/02/custom_folder_sf_instanceconfig-1080x314.png 1080w, https://gianniceresa.com/wp-content/uploads/2017/02/custom_folder_sf_instanceconfig.png 1262w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">Set the new style as default and point OBIPS to your shared folder</p></div> <p>The &lt;UI&gt; tag is already there and you just have to edit the values of <em>DefaultSkin</em> and <em>DefaultStyle</em>, keep in mind to write the exact same name (case sensitive) you used for your custom style without the &#8220;s_&#8221;.</p> <p>In addition to that you must add (not there by default) the &lt;URL&gt; block. It must go next the &lt;UI&gt; block, so after the closing tag &lt;/UI&gt; you can write your &lt;URL&gt; block.<br /> You must define both nodes:</p> <ul> <li><em>CustomerResourcePhysicalPath</em> : this one is the full path to the <em>res</em> folder inside your shared folder (really important to add the /res too and not just point to /analyticsRes !)</li> <li><em>CustomerResourceVirtualPath</em> : this is the url to be used in a browser to point to the <em>res</em> folder once again, so it&#8217;s the context root of your deployment and adding <em>/res</em></li> </ul> <p>Pay attention to write the XML tags correctly, to close them and to use the right path and url as values. If you don&#8217;t write the XML correctly the Presentation Service will not start anymore because the configuration file isn&#8217;t valid (that&#8217;s why you took a backup). If the values aren&#8217;t correct (remember to add the <em>/res</em>) you will not see the expected result.</p> <p>Last step: restart the Presentation Service (command line or Enterprise Manager) and done! You have your custom style deployed in a shared folder.</p> <div id="attachment_344" style="width: 1010px" class="wp-caption aligncenter"><img class="size-full wp-image-344" src="https://gianniceresa.com/wp-content/uploads/2017/02/custom_style_sf_animation.gif" alt="" width="1000" height="535" /><p class="wp-caption-text">OBIEE 12.2.1.2.0 with Alta first and custom style after.</p></div> <h2>To resume: shared folder or EAR file?</h2> <p>If you have a clustered environment the EAR file is probably the easiest option to deploy on all your nodes from a single file. This approach will also be the preferred way if you want a highly-controlled deployment with no &#8220;live&#8221; operations on PROD directly. To change something you must redeploy the EAR file and can&#8217;t just edit a file (but the deployment can be scripted).</p> <h4>And the winner is &#8230; shared folder !</h4> <p>If you have a single node system and/or like to have the option to quickly fix or change something on your custom style the shared folder is the best approach. Also good if you want to easily add custom javascript libraries and custom visualizations to your analysis, the shared folder can host these files too.</p> <p>My first observations using the shared folder approach gave me many <em>HTTP 404 Not found</em> (pictures using a wrong url like &#8220;res/v-DBoTHFvj6ls/s_Alta/master/sortasc_ena.png&#8221; instead of the correct one being &#8220;/analytics/res/v-DBoTHFvj6ls/s_Alta/master/sortasc_ena.png&#8221;), it seems that&#8217;s a random behaviour which disappear with a refresh as I saw this errors even on the out of the box Alta style, so I can&#8217;t say it&#8217;s related to the shared folder customization, that&#8217;s why I changed my mind and suggest to use the shared folder as it has more advantages (because of the ability to deploy other things like D3js etc.). It&#8217;s quite common to find extra pieces of custom CSS you want to add when, using the system, you discover some wrong colors from the original style.</p> <h4>OBIEE 12.2.1.0.0 has a bug</h4> <p>Final point: if you are still on OBIEE 12.2.1.0.0 I would suggest you focus on an upgrade before to look into custom styles. That one is the very first public release of OBIEE 12c, many bugs and problems, including one affecting the custom styles. So get rid of it, move to 12.2.1.2.0 (latest available one at the time of writing this) and then start customizing.</p> <div id="attachment_347" style="width: 1010px" class="wp-caption aligncenter"><img class="size-full wp-image-347" src="https://gianniceresa.com/wp-content/uploads/2017/02/custom_style_sf_bug_12_2_1_0_0.gif" alt="" width="1000" height="535" /><p class="wp-caption-text">OBIEE 12.2.1.0.0 has a bug using a custom style in a shared folder.</p></div> <p>The post <a rel="nofollow" href="https://gianniceresa.com/2017/02/obiee-12c-custom-style-using-shared-folder/">OBIEE 12c Custom Style using shared folder (analyticsRes)</a> appeared first on <a rel="nofollow" href="https://gianniceresa.com">Gianni&#039;s world: things crossing my mind</a>.</p> Gianni Ceresa https://gianniceresa.com/?p=336 Mon Feb 27 2017 04:44:14 GMT-0500 (EST) Data Preparation for "Analysing Elections Data with Oracle Data Visualisation Desktop" http://www.rittmanmead.com/blog/2017/02/data-preparation-for-analyse-elections-with-oracle-data-visualisation-desktop/ <p>In the <a href="https://www.rittmanmead.com/blog/2017/02/analysing-elections-data-with-oracle-data-visualisation-desktop/">previous post</a> I wrote about some interesting insights we can get from the elections data. And this post concentrates on the data preparation for it. As the first one, it doesn't work as a guide and aimed to show some data manipulation things end-user can do without IT department and coding. As data preparation is not absolutely needed for the understanding of the visual part but still a piece of the story it was extracted as a separate post.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/KDPV-1.png" alt=""></p> <h2 id="thedata">The Data</h2> <p>From the logical point of view I have two datasets. </p> <ol> <li><strong>Voting results</strong> by election commissions: number of votes for every political party and a lot of technical measures like number of registered voters, number of good and damaged voting ballots and so on. </li> <li><strong>Turnout figures</strong> at given times throughout the day.</li> </ol> <p>From the physical point of view, both datasets are big files (about 500 Mb combined) each line of which is a single record. These records represent information at various levels of aggregation. I will use this fact to show some of <strong>Data flows</strong> features (<a href="https://www.rittmanmead.com/blog/2016/10/data-visualisation-desktop-data-loading-2/">great introduction</a> from Francesco Tisiot).</p> <p>Generally, each record is a <strong>JSON</strong> which looks like this: </p> <pre><code>{ [...] "Data":{ "1 | Number of voters included in the voters list at the time of the end of voting":"102", "2 | The number of ballots received by the precinct election commission":"102", "3 | The number of ballots issued to voters who voted early":"0", [...] "19 | 1 Russian political party 'Rodina'":"0", "20 | 2 Political party 'COMMUNISTS COMMUNIST PARTY OF RUSSIA'":"3", "21 | 3 Political party 'Russian Party of Pensioners for Justice'":"0", [...] }, "Loc":[ "Nizhny Novgorod Region", "129 Nizhny Novgorod Region - Nizhny Novgorod", "28 Krasnooktyabrskaya", "PEC #1148" ] } </code></pre> <p>You can find a full sample of the JSON <a href="https://gist.github.com/andrew-fomin/3a618fa849010234fcf781e346247489">here</a>.</p> <p><code>Data</code> part is a set of 32 measures and <code>Loc</code> is an array of one to four elements. The more detailed the record, the more elements in <code>Loc</code> array.</p> <p>The whole votes dataset is slightly smaller than 100'000 of records. As I said, records have various levels of aggregation, and this sample shows the most detailed data (its <code>Loc</code> has four elements). <code>Nizhny Novgorod Region</code> is obviously the region, <code>129 Nizhny Novgorod Oblast - Nizhny Novgorod</code> is a concatenation of district electoral commission number (<code>129</code>), region name (<code>Nizhny Novgorod Region</code>) and district electoral commission name (<code>Nizhny Novgorod</code>). <code>28 Krasnooktyabrskaya</code> is number and name of a territorial election commission, and <code>PEC #1148</code> is precinct electoral commission. For the most aggregated records <code>Loc</code> looks like: </p> <pre><code>"Loc":[ "DEC #129" ] </code></pre> <p>This is an aggregated data for a district election commission #129.</p> <p>Unfortunately, DVD doesn't work with <code>JSON</code> format directly. As one of the possibilities, we can use Apache Drill (for more information see previous posts by <a href="//www.rittmanmead.com/blog/2016/11/combining-google-analytics-and-json-data-through-apache-drill-in-oracle-data-visualization-desktop/">Francesco Tisiot</a> and <a href="https://www.rittmanmead.com/blog/2016/11/using-sql-to-query-json-files-with-apache-drill/">Robin Moffatt</a>). Apache Drill is a supported option for Oracle DV, but it isn't an end-user tool and the story is not about building a complete and reusable system. It is about the storytelling. So I did a one-time manual conversion using Excel magic and got a plain table.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/20.png" alt=""></p> <p>The second part of the data is turnout. In <code>JSON</code> form it's basically the same: one record per line, <code>Data</code> part with four values and <code>Loc</code> part based on the same principles. <code>Data</code> is significantly smaller and has only four values - <code>turnout</code> at four fixed moments. But here I need it in a more <em>dimesional</em> form. I want time as a dimension rather than pivoted.</p> <p>In my opinion, pivot/unpivot is one more highly desired feature DVD needs. We can live without it in tools like OBIEE because its models aren't built on rapidly changing user-generated data structures, but for desktop data exploration tools like DVD powerful data transformation capabilities are crucial.</p> <p>But while it isn't implemented, I made unpivot in Excel and got this.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/40-1.png" alt=""></p> <p>It wasn't obvious that I need in in this particular form in the beginning of data preparation stage, but the good news is both visualisation and data manipulation live in one product, and in reality I was able to build charts, understand that I need more data/attributes/etc, add them and go back to analysis. Very smooth and clean.</p> <h3 id="ithoughtwewerentsupposedtouseexcel">I Thought We Weren’t Supposed to Use Excel?</h3> <p>While <strong>Data flows</strong> DVD feature is powerful and very useful there are some data manipulation tasks that Excel can do just easier or better than DVD. I hope that Oracle will improve <strong>Data flows</strong> over time but right now it’s not perfect.</p> <p>I used Excel for the following:</p> <ol> <li>Splitting of long strings into fields. I could do it using <code>locate</code>+<code>substring</code>+<code>left</code>+<code>right</code> functions in DVD. But that would produce unreadable code. Excel <code>Text to columns</code> tool is a weapon of choice so far. </li> <li><code>UNION</code>. When I need to combine two datasets into one, Excel’s copy and paste are beyond competition. Adding set operations (not only <code>union</code>) will greatly improve Oracle’s tool. </li> <li>A few technical tasks like translating the data. Initially, the data was not in English and I had to translate it. I could use both Excel and DVD for this task but chose Excel in order to simplify the post. But if I did it in DVD, it would be just a few more joins. Can't say what is simpler, so no clear winner here.</li> </ol> <p><em>Note: I'm talking about static data sets. In case of a changing data that may be not true.</em></p> <h2 id="datatransformationsindvd">Data Transformations in DVD</h2> <p>While I was able to (had to) make some of the data preparation in Excel, it's better and easier to do some tasks in DVD using relatively new <code>Data flows</code> feature. I will start with building a clean dictionary of electoral commissions. </p> <p>When I finished my Excel part, I got this: <br> <img src="http://www.rittmanmead.com/blog/content/images/2017/02/50-1.PNG" alt=""></p> <p>It isn't so bad, but I can make it better in a few minutes. I want to rename <code>Location1</code> into <code>Subject</code>, split <code>Location2</code> into <code>DEC #129</code> and <code>Nizhny Novgorod</code>, remove leading digits from <code>Location3</code> and rename it to <code>TEC name</code>, and also rename <code>Location4</code> into <code>PEC #</code>.</p> <p>Here is the data flow which does it. It may not look like the simplest thing in the world, but I spent about the same time building it as you spent reading what it does. <br> <img src="http://www.rittmanmead.com/blog/content/images/2017/02/60-1-1.png" alt=""> <img src="http://www.rittmanmead.com/blog/content/images/2017/02/60-2.png" alt=""></p> <p>The second thing I want to do is to split my wide file with 32 measures into two. One for party results and another one for other let's say "technical" measures like number of voters, ballots and so on. It's not absolutely necessary but will please me and anyone else who will see it. Both data flows for this task use <em>Commissions</em> dictionary I made earlier and the same source file. I filter the source to get only the most detailed data, join with commissions, select only interesting columns and save the result. Simple and straightforward. The only difference is sets of selected columns.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/70.PNG" alt=""></p> <p>I could start building visualisations with this data, but I'd prefer to calculate some relative measures. Absolute numbers won't help me because every commission has its own number of voters. We can't compare them directly but relative measures will do the trick. <br> Data flow for these calculations is the simplest of all. <br> <img src="http://www.rittmanmead.com/blog/content/images/2017/02/80-2.png" alt=""> The only not immediately obvious part is why I placed two consequential <code>Add columns</code> steps. The first one calculates <code>Total votes</code> column as a sum of votes for all parties and the second one uses this column for calculation of a percentage.</p> <p>And it is really cool how we can use results of different flows. I took <em>Protocols</em>, made <em>Commisions</em>, joined <em>Protocols</em> and <em>Commisions</em> and got <em>Votes data</em> and later made calculations based on <em>Votes data</em>. That was very cool. </p> <p>And here I want to show how the autocomplete feature in formulas editor works (because I really like it). I hope to see it on OBIEE one day.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/90.gif" alt=""></p> <p>I have one more data flow for the turnout data, but it simply joins source file with the dictionary of commissions.</p> <h2 id="summary">Summary</h2> <p>I believe Oracle DVD is a very powerful tool for a data analyst. While many users prefer to stick with Excel exclusively, DVD can significantly increase their data preparation and transformation capabilities. Even now at the very beginning of its journey DVD allows making many data manipulation operations fast and easy. It obviously worth give it a try and include into a data analysis process. Look how the data from this post may be used for analysis and making interesting conclusions: <a href="https://www.rittmanmead.com/blog/2017/02/analysing-elections-data-with-oracle-data-visualisation-desktop/">Analyse Elections with Oracle Data Visualisation Desktop</a>.</p> Andrew Fomin 0fb590a6-00d9-49d7-88d6-534fc3da0a29 Fri Feb 24 2017 10:13:00 GMT-0500 (EST) Analysing Elections Data with Oracle Data Visualisation Desktop http://www.rittmanmead.com/blog/2017/02/analysing-elections-data-with-oracle-data-visualisation-desktop/ <p><strong>Disclaimer #1 This post is not about politics. Its dataset <em>is</em> about politics, but that's a coincidence. It could be about immunisation or transport or anything else. If you are strictly against any politics, here is a <a href="https://www.google.ru/search?q=cute+kittens&amp;newwindow=1&amp;tbm=isch&amp;tbo=u&amp;source=univ&amp;sa=X&amp;ved=0ahUKEwjhpNTo-YzSAhXEDpoKHVmiDgEQsAQIGw&amp;biw=1625&amp;bih=961">link to watch cute kittens</a>.</strong></p> <h2 id="introduction">Introduction</h2> <p>Let's pretend that I'm an analyst and got a supposedly interesting data set. Now I want to understand if the data is actually interesting or it's a total rubbish. Having been in IT for some time I can use tools and technologies which typical end-user can’t access. But this time I pretend I’m a usual analyst which has data and desktop tools. And my task is to do a research and tell if there are anomalies in the data or everything looks like it supposed to look like. <br> The main tool for this work is obviously <a href="http://www.oracle.com/technetwork/middleware/oracle-data-visualization/index.html">Oracle Data Visualisation Desktop</a> (DVD). And, as a supplementary tool, I use Excel. This post is not a guide for any particular DVD feature. It won’t give a step by step instruction or anything like that. The main idea is to show how we can use Oracle Data Visualisation for an analysis of a real dataset. Not simply show that we can build bar charts, and pie charts and other fancy <em>whatever</em> charts, but show how we can get insights from the data.</p> <h2 id="thedata">The Data</h2> <p>I should say a few words about the data. It is an official result of the Russian <a href="https://en.wikipedia.org/wiki/State_Duma">State Duma</a> (parliament) elections in 2016. Half of the Duma was elected by <a href="https://en.wikipedia.org/wiki/Russian_legislative_election,_2016#Electoral_system">party lists</a> and for this post I took that data. I should confess that I cheated a little and decided not spend my time downloading and parsing the data piece by piece from the <a href="http://www.vybory.izbirkom.ru/region/region/izbirkom?action=show&amp;root=1&amp;tvd=100100067795854&amp;vrn=100100067795849&amp;region=0&amp;global=1&amp;sub_region=0&amp;prver=0&amp;pronetvd=0&amp;vibid=100100067795854&amp;type=233">official site</a>, and took a <a href="https://drive.google.com/drive/folders/0ByFMnUnpIlrib0lETWhTNkdZRVk">prepared set</a>.</p> <p>From a bird's-eye view I have the following data:</p> <ol> <li><strong>Voting results by election commissions:</strong> number of votes for every political party and a lot of technical measures like number of registered voters, number of good and damaged voting ballots and so on. </li> <li><strong>Turnout figures</strong> at given times throughout the day.</li> </ol> <p>From a more technical point of view, the data was stored in two big files with multiple <strong>JSON</strong> in each. As the data preparation part is big enough, it was extracted to another post. This one concentrates purely on visualisation and the second one is about data flows and comparison to Excel.</p> <h2 id="analysingthedata">Analysing the Data</h2> <p>I did some cleaning, refining and enriching of the data and it's time to use it. I started with a standard <strong>Stacked bar</strong> chart. It shows percentages of parties by regions and in addition width of bars shows <em>Total votes</em>. The chart is sorted by ascending <em>Total votes</em>.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/100-2.png" alt=""></p> <p>What can we say here?</p> <p>Before I start talking I need <del>a lawyer and</del> a disclaimer #2:</p> <p><strong>Disclaimer #2 Some of the results may be interpreted in different ways. Some of them may be not so pleasant for some people. But I'm not a court and this post is only a data visualisation exercise. Therefore I'm not accusing anyone of committing any crimes. I will make some conclusions because of rules of the genre, but they should be treated as hypotheses only.</strong></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/100-1-1.png" alt=""></p> <p>That’s not a proven charge (see disclaimer #2) but for me these regions look a bit suspicious. Their results are very uncommon. United Russia ruling party (orange bars) got an extremely high result in these few regions. This <em>may</em> be a sign of some kind of interfere with an election process there. But of course, other explanations (including a measure incorrectly selected for sorting) exist.</p> <p>Just for reference so we don’t forget the names: <em>Tatarstan</em>, <em>Kemerovo</em>, <em>Dagestan</em>, <em>Chechnya</em> and <em>Mordovia</em>. There are a few more regions with similar results but their number of voters is lower so I don’t show them here.</p> <p>At this point I'm starting to suspect something. But I need more visuals to support my position, and my next hypothesis is that in these regions ballots were somehow added to voting boxes (or protocols were changed which is basically the same). From a data visualisation point of view that will mean that these regions will have higher turnout (because of added ballots) along with higher United Russia result.</p> <p>To check this I need one more measure - <em>Turnout, %</em>. It shows how many of registered voters actually voted. I can create this field without leaving visualisation mode. Cool.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/110-1.png" alt=""> <em>Note. This formula may be not absolutely correct but it works well for demonstration purposes.</em></p> <p>In order to visualise this hypothesis, I built a <strong>Scatter chart</strong>. Its horizontal axis is <strong>Turnout,%</strong> and vertical one <strong>United Russia, %</strong>. And I added a trend line to make things more obvious. Colour density shows <strong>Total votes</strong>. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/120-1.png" alt=""></p> <p>I think my hypothesis just got a strong support. As usual it is not an absolutely impossible situation. But it's hard to explain why the more people come to voting stations the higher one party result is. I'd expect either high result not depending on the turnout (more or less like <a href="https://en.wikipedia.org/wiki/Uniform_distribution_(continuous)">Uniform distribution</a>) or at least a few exceptions with high turnout and low result.</p> <p><em>I consider this result strange because in real life I'd expect that higher turnout should mean more opposition voters (a passive group indeed) coming to voting stations. But that's only my opinion. And highly arguable I should agree. What I really want to show here is that these charts highlight an oddity that should be investigated and may or may not have a rational explanation.</em></p> <p>And who are our heroes? Let’s zoom in on the chart …and we see the same regions.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/125.png" alt=""></p> <p>But maybe other parties can show the same result? We can build the same <strong>Scatter charts</strong> for every party or we can visualise all at once with a usual <strong>Line chart</strong>. Here I’ve plotted the percent of vote won by each party (Y-axis) against the overall turnout % (X-axis). <br> <img src="http://www.rittmanmead.com/blog/content/images/2017/02/130-1.png" alt=""></p> <p>United Russia is the only party that increases with turnout.</p> <p>So far all my charts were about relative measures, it's time to check some absolute values. Here is a <strong>Bar chart</strong> which shows a number of precinct commissions by results. I'd expect to see something close to <a href="https://en.wikipedia.org/wiki/Normal_distribution">normal distribution</a> - a bell-shaped chart with the maximum around 54% (average turnout). Now, look at the real chart (bin size=1.0%). Its maximum is at 36-37%.</p> <blockquote> <p><em><a href="https://en.wikipedia.org/wiki/Normal_distribution">Normal distribution</a></em></p> <p><em>In probability theory, the normal (or Gaussian) distribution is a very common continuous probability distribution. Normal distributions are important in statistics and are often used in the natural and social sciences to represent real-valued random variables whose distributions are not known.</em></p> </blockquote> <p><em>Strictly speaking all numbers I'm showing here are discrete and I should say <a href="https://en.wikipedia.org/wiki/Binomial_distribution">Binomial distribution</a> rather than Normal but right now for my purposes the diffence is not that big.</em></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/140-2.png" alt=""></p> <p>I'm definitely not Carl Gauss (and even not one of his best students) and you may ignore my opinion, but I expected something more like this:</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/140-1-3.png" alt=""></p> <p>And I don't have the slightest idea how it is possible that the most "popular" turnout is 100%.</p> <p>What if we look at the same chart with more details? The previous one was grouped by 1% bins, and this one has 0.1% bins. And I had to add <code>turnout not equal to 100%</code> filter. Even with smaller bin size, the last one is almost the same ~3K commissions. This bar is much bigger than the others and the chart doesn't show anything in that case. <br> <img src="http://www.rittmanmead.com/blog/content/images/2017/02/160.png" alt=""> What can we see here? Well, <a href="https://www.reddit.com/r/askscience/comments/3nm2kp/how_good_are_people_at_picking_random_numbers/">people aren’t really good in generating random numbers</a>. It's perfectly OK to have some runout on the chart. But hey, it's not normal to have them mostly at round values. That looks like someone was trying to fit the result to some plan.</p> <p>Here is my favourite part of the chart. I marked 1% intervals, and you can see that round turnout value is always more probable than its closest non-round neighbours. No exceptions. A possible explanation is that the number of commissions with results that high is relatively low and even the slightest manipulation is clearly visible.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/165.png" alt=""> <a id="Saratov"></a> <br> But wait. What about that 64.3 percent? It’s not round, but it is a big runaway. Let’s take a closer look at this value and check if there is anything interesting or that is a normal situation. Here is a few interesting visualisation for it. </p> <p>The first one is <strong>Tree Diagram</strong>. It shows all existing combinations of district and precinct commissions by regions for the filtered data (<code>turnout=64.3</code>). And in order to demonstrate how it works for this case I made an animation. Most of the regions have a few commissions with 64.3% turnout. But <em>Saratov region</em> beats them all.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/170-tree.gif" alt=""></p> <p>This visualisation has a serious flaw. End-user has to scroll it (I mean for this set of data) and can miss the point. Another visualisation can improve the situation. <strong>Network diagram</strong> doesn't need scrolling.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/180.png" alt=""></p> <p>Looks good and shows exactly the same. But for this chart we must ensure that every data point is unique what is not true in my case. Different precinct commissions have the same numbers and I had to create a unique field first (<code>DEC #||PEC #</code>). It's easy to forget and get unpredictable or even misleading results.</p> <p>Or if you prefer more traditional charts, here is <strong>Sunburst</strong> for you. Its sectors size shows <em>Total votes</em> and the colour is <em>PEC count</em>. It gives a good representation of how uncommon <em>Saratov's</em> result is.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/190.png" alt=""></p> <p>And the last picture for the same topic <del>boring</del> never-old classic <strong>Bar chart</strong>.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/200-1.png" alt=""></p> <p>Considering all these charts I'd say that almost exclusive concentration of commissions with 63.4% turnout in Saratov doesn't look normal for me. It's pretty weird that sibling commissions show exactly the same figures. </p> <p>A few more diagrams which could work well are <strong>Sankey</strong> and <strong>Parallel coordinates</strong>, unfortunately, they are less informative because of the high number of precinct commissions. But if the number was lower I'd consider them too.</p> <p>All previous charts are based on voting data. But I have one more dataset - official turnout. Let's check if we can find anything interesting there. And unfortunately significant part of commissions doesn't have official data, and sometimes I may use formulas that are not exactly the same as official ones, so numbers may differ slightly from what I got from the protocols data.</p> <p>The first chart shows the number of commissions (vertical axis) by the official turnout (horizontal axis). Colour shows the moment of time. Strictly saying I shouldn't have used continuous linear charts for discrete values, but coloured overlapped bars don't give that clear picture.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/210-1.png" alt=""></p> <p>Except for the 100% tail, everything is more or less natural. Graph shape looks more like <a href="https://en.wikipedia.org/wiki/Gamma_distribution">Gamma distribution</a> rather than <a href="https://en.wikipedia.org/wiki/Normal_distribution">Normal</a> but I didn't test it.</p> <p>What picture do I have for various regions? <br> <em>Moscow city</em> is known for a relatively high number of poll watchers and we may expect more clean data there. Ignoring the long tail, these look normal (or binomial if you want to be precise). <br> <img src="http://www.rittmanmead.com/blog/content/images/2017/02/220-2.png" alt=""></p> <p><em>Saratov region</em>. The one with 64.3% turnout. Look at these peaks. Do they look natural to you? <br> <img src="http://www.rittmanmead.com/blog/content/images/2017/02/230-1.png" alt=""> Do you remember <em>Tatarstan</em> (was the hero in the beginning of this story)? Here it is. I don't know how can anyone explain how it is possible (without manual results <em>adjusting</em> I mean).</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/02/240.png" alt=""></p> <h2 id="summary">Summary</h2> <p>This post shows how we can use Oracle DVD for visualisation of a real data set. And I hope I was able to convince you that this tool can be useful and can give you really interesting insights. Of course, visualisation alone doesn't answer all questions. And this time actually it was less about answers but more about questions. It helps to ask right questions.</p> <p>More reading on the topic: <a href="https://habrahabr.ru/post/313372/">1</a>, <a href="http://podmoskovnik.livejournal.com/">2</a> (Russian language). If you can read Russian, here you will find more visualisations, discussions and interesting information. And <a href="http://akarlin.com/2011/12/measuring-churovs-beard/">this article</a> is about elections in 2011. Its undisputable advantage is that it is in English.</p> Andrew Fomin 19fe2098-f600-4947-b2ce-f6164b36321b Fri Feb 24 2017 05:38:00 GMT-0500 (EST) OBIEE 12c Time Dimension: Logical Sequence Number http://www.rittmanmead.com/blog/2017/02/obiee-12c-time-dimension-logical-sequence-number/ <img src="http://www.rittmanmead.com/blog/content/images/2017/02/Time-Hierarchy.png" alt="OBIEE 12c Time Dimension: Logical Sequence Number"><p>The key component of any successful OBIEE implementation is the metadata model known as the repository (RPD). Doing it right is sometimes considered <em>"black magic"</em>, and small mistakes in the RPD can impact all the exposed Subject Areas, resulting in poor performances or, even worse, wrong results. </p> <p><em>Working an RPD requires dedicated knowledge of the tool and we are sharing it in our <a href="https://www.rittmanmead.com/obiee-12c-rpd-modeling/">RPD modelling training</a> both for <a href="https://www.rittmanmead.com/obiee-11g-rpd-modeling/">OBIEE 11g</a> and <a href="https://www.rittmanmead.com/obiee-12c-rpd-modeling/">OBIEE 12c</a>.</em></p> <p>If you ever worked on RPD modelling, one of the settings you surely encountered is the Time dimension. This <a href="https://www.rittmanmead.com/blog/2007/04/obi-ee-time-dimensions-and-time-series-calculations/">blog post</a> written back in 2007 explains the process of setting up a time dimension for OBIEE 10g. The process didn't have any major modifications until recently when, in 12.2.1, <strong>Logical Sequence Numbers</strong> <a href="https://docs.oracle.com/middleware/1221/biee/BIEMG/whatsnew.htm#CJAIDDGH">were introduced</a>. As per <a href="https://docs.oracle.com/middleware/1221/biee/BIEMG/dimensions.htm#BIEMG256">Oracle's documentation</a> this new feature <em>"optimizes time series functions and in some cases improves query time"</em>, and in this post we'll see how to configure it and its impact on the time-series calculations. The examples shown below are based on <a href="http://www.oracle.com/technetwork/middleware/bi-foundation/obiee-samples-167534.html">Oracle Sampleapp v607</a>, a really good source of modelling and front-end examples.</p> <h1 id="usualtimeseriesquerybehaviour">Usual Time-series Query Behaviour</h1> <p><a href="https://docs.oracle.com/middleware/1221/biee/BIEMG/dimensions.htm">Time-series functions</a> like <em>Ago</em>,<em>ToDate</em>, and more recently <em>PeriodRolling</em>, allow end users to compare results coming from different moments just by specifying the level in the <em>time dimension hierarchy</em> and the number of periods to look backwards or forwards. As example if you needed to compare current month sales revenue with the previous month figure you'll end up writing a formula like</p> <pre><code> AGO("F0 Sales Base Measures"."1- Revenue","H0 Time"."Month", 1) </code></pre> <p>Where:</p> <ul> <li><em>AGO</em>: is the Time-series function being called</li> <li><em>"F0 Sales Base Measures"."1- Revenue"</em>: is the metric</li> <li><em>"H0 Time"."Month"</em>: is the time hierarchy level</li> <li><em>1</em>: is the amount of periods (months in our case) to look back in history</li> </ul> <p>Once the time-series metric has been created, it can be used in an analysis like the following to compare Revenue of 2015-04 with the one of the previous month. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2016/12/Analysis.png" alt="OBIEE 12c Time Dimension: Logical Sequence Number"></p> <p>The analysis generates the following Logical SQL which basically lists the columns retrieved and the filters applied.</p> <pre><code class="language-Logical Query">SELECT 0 s_0, "A - Sample Sales"."Time"."T02 Per Name Month" s_1, "A - Sample Sales"."Base Facts"."1- Revenue" s_2, "A - Sample Sales"."Time Series"."127 Mth Ago Rev (Fix Time Lvl)" s_3 FROM "A - Sample Sales" WHERE ("Time"."T02 Per Name Month" = '2015 / 04') ORDER BY 2 ASC NULLS LAST FETCH FIRST 5000001 ROWS ONLY </code></pre> <p>The translation to source SQL hugely depends on the data model created in the RPD and on the data source type. In our example an Oracle SQL gets generated containing the following steps: </p> <ul> <li><strong>Sequence Generation</strong>: a RANK function is used to created a dense sequence based on <em>Per_Name_Month</em>, the chronological key defined in the time-hierarchy for the month level. <em>Mth_Key</em> is also part of the query since it's used in the join between dimension and fact table.</li> </ul> <pre><code>WITH OBICOMMON0 AS (select DENSE_RANK() OVER ( ORDER BY T653.Per_Name_Month) as c1, T653.Mth_Key as c2, T653.Per_Name_Month as c3 from BISAMPLE.SAMP_TIME_MTH_D T653 /* D02 Time Month Grain */ ), </code></pre> <ul> <li><strong>Period Shifting</strong>: The sequence generated above is now shifted by the number of periods defined in the column formula (<code>D1.c1 + 1</code>), in our example 1.</li> </ul> <pre><code>SAWITH0 AS (select D1.c1 + 1 as c1, D1.c2 as c2, D1.c3 as c3 from OBICOMMON0 D1), </code></pre> <ul> <li><strong>Ago Period Query</strong>: Using the period shifted query the historical record (or set of records) is retrieved.</li> </ul> <pre><code>SAWITH1 AS (select distinct D1.c1 as c1, D1.c3 as c2 from OBICOMMON0 D1), SAWITH2 AS (select sum(T418.Revenue) as c1, D3.c2 as c2 from BISAMPLE.SAMP_REVENUE_F T418 /* F10 Billed Rev */ , SAWITH0 D4, SAWITH1 D3 where ( T418.Bill_Mth_Key = D4.c2 and D3.c1 = D4.c1 and D3.c2 = '2015 / 04' ) group by D3.c2, D4.c3), </code></pre> <p>The period shifted query usage is explained visually by the image below</p> <p><img width="700px" alt="OBIEE 12c Time Dimension: Logical Sequence Number" src="http://www.rittmanmead.com/blog/content/images/2017/02/Join-GIF-3.gif"></p> <ul> <li><strong>Selected Period Query</strong>: the query for the selected period, in our case 2015-04, is executed using standard time dimension</li> </ul> <pre><code>SAWITH3 AS (select sum(T418.Revenue) as c1, T653.Per_Name_Month as c2 from BISAMPLE.SAMP_TIME_MTH_D T653 /* D02 Time Month Grain */ , BISAMPLE.SAMP_REVENUE_F T418 /* F10 Billed Rev */ where ( T418.Bill_Mth_Key = T653.Mth_Key and T653.Per_Name_Month = '2015 / 04' ) group by T653.Per_Name_Month) </code></pre> <ul> <li><strong>Resultsets joining</strong>: Results coming from <em>Ago Period</em> and <em>Selected Period</em> queries are then joined with an outer join.</li> </ul> <pre><code>select D1.c1 as c1, D1.c2 as c2, D1.c3 as c3, D1.c4 as c4 from ( select D1.c1 as c1, D1.c2 as c2, D1.c3 as c3, D1.c4 as c4 from (select 0 as c1, coalesce( D1.c2, D2.c2) as c2, D2.c1 as c3, D1.c1 as c4, ROW_NUMBER() OVER (PARTITION BY coalesce( D1.c2, D2.c2) ORDER BY coalesce( D1.c2, D2.c2) ASC) as c5 from SAWITH2 D1 full outer join SAWITH3 D2 On D1.c2 = D2.c2 ) D1 where ( D1.c5 = 1 ) order by c2 ) D1 where rownum &lt;= 5000001 </code></pre> <p>As you can see, it's a rather complex set of instructions that involves several steps including analytical functions like the <code>DENSE_RANK()</code> in the sequence generation. In our case we have been lucky that the source system provided the <code>DENSE_RANK()</code> function; with other sources the sequence generation needs to be calculated directly by the BI Server (OBIS) with a possible degradation of performances. </p> <h1 id="whatislogicalsequencenumber">What is Logical Sequence Number?</h1> <p>The <em>Sequence Generation</em> step mentioned above can sometimes be the bottleneck of the whole query especially when the time dimension is complex or huge in volume since <code>DENSE_RANK()</code> is a costly analytical function.</p> <p>All that OBIEE's Time-series need to work is a pure sequence, or in <a href="https://docs.oracle.com/middleware/1221/biee/BIEMG/dimensions.htm#BIEMG256">Oracle's words</a>: </p> <blockquote> <p>Sequence numbers are enumerations of time dimensional members at a certain level. The enumeration must be dense (no gaps) and must correspond to a real time order. For example, months in a year can be enumerated from 1 to 12.</p> </blockquote> <p>Then what if we can find a way of pre-calculating them and storing in the table or calculate them on the fly but using functions less expensive than a <code>DENSE_RANK()</code>?</p> <p>This is the idea behind the <em>Logical Sequence Number</em> (LSN): a way of avoiding the BI Server (OBIS) needing to execute the <code>DENSE_RANK()</code>, by passing either a pre-calculated sequence column in the source table or a cheaper-cost function to calculate it on the fly based on existing columns. </p> <p>The formula behind a Logical Sequence Number must resolve in a number (no varchar, or dates are allowed) and can either be:</p> <ul> <li><strong>Absolute</strong>: when the sequence is consistent and doesn't need any external reference, e.g. calendar years are a self-defined sequence</li> <li><strong>Relative</strong>: when the sequence is relative to a parent level, e.g. creating a sequence for months between 1 and 12 would need the calendar year as parent level to provide correct cross-years references</li> </ul> <p>As the word already says "Sequence Numbers" must be <em>sequential</em>, no gaps can be included. Year and month number are good examples of this. </p> <p>But what if we wanted to provide an absolute sequence number at month level? <br> One could think about using a month key in the <code>YYYYMM</code> format but this is not a sequence: <code>201701 &lt;&gt; 201612+1</code>. The best way of generating the sequence number would be to add it as a column in the database table. </p> <p>Will take as example the <code>SAMP_TIME_MTH_D</code> table that can be found in Sampleapp v607 containing <code>MONTH_KEY</code> column in the <code>YYYYMM</code> format. <br> <img src="http://www.rittmanmead.com/blog/content/images/2017/01/Month-Key.png" alt="OBIEE 12c Time Dimension: Logical Sequence Number"></p> <p>I'll add to <code>SAMP_TIME_MTH_D</code> a column <code>MONTH_ABS_SEQ</code> containing the absolute sequence number. The formula behind the column is exactly what Oracle was doing under the covers using a <code>DENSE_RANK</code>.</p> <pre><code>SELECT MTH_KEY, DENSE_RANK() OVER (ORDER BY MTH_KEY) MONTH_ABS_SEQ FROM SAMP_TIME_MTH_D </code></pre> <p>And the end result as expected being</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/01/ASN.png" alt="OBIEE 12c Time Dimension: Logical Sequence Number"></p> <h1 id="howarelogicalsequencenumberused">How are Logical Sequence Number Used?</h1> <p>Previously I described the two types of Logical Sequence Numbers: Absolute and Relative, each one has it use case:</p> <ul> <li><code>PERIODROLLING</code>: This function uses absolute LSN to calculate the starting Sequence Number based on the selected one: e.g. looking at the previous image a 6 month rolling starting from 2009-02 will include data from sequences in the range [9-14].</li> <li><code>TO_DATE</code>: uses relative LSN, e.g A YearToDate Measure shown by month will use the month relative LSN to calculate the previous months in the same year.</li> <li><code>AGO</code>: Ago function uses both absolute and relative: Absolute numbers are used if the grain of the query and the one of the AGO are at the same level e.g. Yearly analysis of Actual vs Previous Year. However when the grain of the shift in the ago is higher than the grain of the query Relative LSN are used, e.g. Monthly analysis of Actual vs Previous Year.</li> </ul> <h1 id="howtoconfigurelogicalsequencenumbers">How to Configure Logical Sequence Numbers</h1> <p>Logical Sequence Number is a new feature and as such it requires additional settings in the time dimension hierarchy to be working. In our case we'll add two sequences, an <em>absolute</em> at calendar year level and a <em>relative</em> at calendar month level. <br> We'll add the sequences directly as formulas in the repository however those formulas should be pushed down as columns in the database table if optimal performances are sought.</p> <p>In order to set the Logical Sequence Numbers we need to open the RPD (the SampleApp one in this test), and select the Time dimension we want to change. <br> <img src="http://www.rittmanmead.com/blog/content/images/2016/12/Time-Hierarchy.png" alt="OBIEE 12c Time Dimension: Logical Sequence Number"></p> <p>After selecting any level apart from the <em>Grand Total</em> (top of the hierarchy) a new tab called <em>"Sequence Numbers"</em> should be visible. However if, like in our case, none of the columns at that level are integer or doubles, the sequence number selector is disabled.</p> <p><img src="