ODTUG Aggregator ODTUG Blogs http://localhost:8080 Thu, 19 Oct 2017 08:25:11 +0000 http://aggrssgator.com/ KSQL: Streaming SQL for Apache Kafka http://www.rittmanmead.com/blog/2017/10/ksql-streaming-sql-for-apache-kafka/ <img src="http://www.rittmanmead.com/blog/content/images/2017/10/KSQL-Image-1.png" alt="KSQL: Streaming SQL for Apache Kafka"><p>Few weeks back, while I was enjoying my holidays in the south of Italy, I started receiving notifications about an imminent announcement by <a href="https://www.confluent.io">Confluent</a>. Reading the highlights almost (...I said almost) made me willing to go immediately back to work and check all the details about it. <br> The announcement regarded <a href="https://www.confluent.io/blog/ksql-open-source-streaming-sql-for-apache-kafka/">KSQL</a>: a <strong>streaming SQL engine</strong> for Apache Kafka! </p> <p><center> <br> <blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">My office today... not bad! <a href="https://twitter.com/hashtag/sea?src=hash">#sea</a> <a href="https://t.co/A7skHIcplS">pic.twitter.com/A7skHIcplS</a></p>&mdash; Francesco Tisiot (@FTisiot) <a href="https://twitter.com/FTisiot/status/894484493893079040">August 7, 2017</a></blockquote> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script> <br> </center></p> <p>Before going in detail, lets try to clarify the basics: what is KSQL? Why was it introduced and how does it complement Kafka?</p> <h1 id="whatisksql">What is KSQL?</h1> <p>We have been writing about <a href="https://www.rittmanmead.com/blog/tag/kafka/">Kafka</a> several times, including my <a href="https://www.rittmanmead.com/blog/2017/08/how-was-game-of-thrones-s07-e05-tweet-analysis-with-kafka-bigquery-and-tableau/">recent blogs</a> were I was using it as data hub to capture Game of Thrones tweets and store them in BigQuery in order to do sentiment analysis with Tableau. In all our examples Kafka has been used just for data transportation with any necessary transformation happening in the target datastore like <a href="https://www.rittmanmead.com/blog/2017/08/the-week-after-game-of-thrones-s07-e06-analysis/">BigQuery</a>, with the usage of languages like Python and engines like <a href="https://www.rittmanmead.com/blog/2017/01/getting-started-with-spark-streaming-with-python-and-kafka/">Spark Streaming</a> or directly in the querying tool like <a href="https://www.rittmanmead.com/blog/2017/07/analyzing-wimbledon-twitter-feeds-in-real-time-with-kafka-presto-and-oracle-dvd-v3/">Presto</a>. </p> <p>KSQL enables something really effective: reading, writing and transforming data in real-time and a scale using a semantic already known by the majority of the community working in the data space, the <strong>SQL</strong>!</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/09/KSQL-Image.png" alt="KSQL: Streaming SQL for Apache Kafka"></p> <p>KSQL is now available as developer preview, but the basic operations like joins, aggregations and event-time windowing are already covered.</p> <h1 id="whatproblemisksqlsolving">What Problem is KSQL Solving?</h1> <p>As anticipated before, KSQL solve the main problem of providing a SQL interface over Kafka, without the need of using external languages like Python or Java. <br> However one could argue that the same problem was solved before by the ETL operations made on the target datastores like Oracle Database or BigQuery. What is the difference then in KSQL approach? What are the benefits? </p> <p>The main difference in my opinion is the concept of <strong>continuous</strong> queries: with KSQL transformations are done continuously as new data arrives in the Kafka topic. On the other side transformations done in a database (or big data platforms like BigQuery) are one off and if new data arrives the same transformation has to be executed again.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/09/TweetFlow.gif" alt="KSQL: Streaming SQL for Apache Kafka"></p> <p>So what is KSQL good for? <a href="https://www.confluent.io/blog/ksql-open-source-streaming-sql-for-apache-kafka/">Confluent's KSQL introduction blog post</a> provides some use cases like real time analytics, security and anomaly detection, online data integration or general application development. From a generic point of view KSQL is what you should use when transformations, integrations and analytics need to happen <strong>on the fly during the data stream</strong>. KSQL provides a way of keeping Kafka as unique datahub: no need of taking out data, transforming and re-inserting in Kafka. Every transformation can be done Kafka using SQL!</p> <p>As mentioned before KSQL is now available on developer preview and the feature/function list is somehow limited compared to more mature SQL products. However in cases where very complex transformations need to happen those can still be solved either via another language like Java or a dedicated ETL (or view) once the data is landed in the destination datastore.</p> <h1 id="howdoesksqlwork">How does KSQL work?</h1> <p>So how does KSQL work under the hood? There are two concepts to keep in mind: streams and tables. A <strong>Stream</strong> is a sequence of structured data, once an event was introduced into a stream it is immutable, meaning that it can't be updated or deleted. Imagine the number of items pushed or pulled from a storage: "e.g. 200 pieces of ProductA were stocked today, while 100 pieces of ProductB were taken out". <br> A <strong>Table</strong> on the other hand represents the current situation based on the events coming from a stream. E.g. what's the overall quantity of stocks for ProductA? Facts in a table are mutable, the quantity of ProductA can be updated or deleted if ProductA is not anymore in stock.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/09/StreamVSTableAcc.gif" alt="KSQL: Streaming SQL for Apache Kafka"></p> <p>KSQL enables the definition of streams and tables via a simple SQL dialect. Various streams and tables coming from different sources can be joined directly in KSQL enabling data combination and transformation on the fly.</p> <p>Each stream or table created in KSQL will be stored in a separate topic, allowing the usage of the usual connectors or scripts to extract the informations from it.</p> <h1 id="ksqlinaction">KSQL in Action</h1> <h2 id="startingksql">Starting KSQL</h2> <p>KSQL can work both in standalone and client-server mode with the first one aimed at development and testing scenarios while the second supporting production environments. <br> With the standalone mode KSQL client and server are hosted on the same machine, in the same JVM. On the other side, in client-server mode, a pool of KSQL server are running on remote machine and the client connects to them over HTTP.</p> <p>For my test purposes I decided to use the standalone mode, the procedure is well explained in <a href="https://github.com/confluentinc/ksql/blob/0.1.x/docs/quickstart/quickstart-non-docker.md#non-docker-setup-for-ksql">confluent documentation</a> and consist in three steps:</p> <ul> <li>Clone the KSQL repository</li> <li>Compile the code</li> <li>Start KSQL using <code>local</code> parameter</li> </ul> <pre><code>./bin/ksql-cli local </code></pre> <h2 id="analysingoowtweets">Analysing OOW Tweets</h2> <p>I'll use for my example the same Twitter producer created for my <a href="https://www.rittmanmead.com/blog/2017/07/analyzing-wimbledon-twitter-feeds-in-real-time-with-kafka-presto-and-oracle-dvd-v3/">Wimbledon post</a>. If you notice I'm not using the Kafka Connect, this is due to KSQL not supporting <code>AVRO</code> formats as of now (remember is still in dev phase?). I had then to rely on the old producer which stored the tweet in <code>JSON</code> format.</p> <p>For my tests I've been filtering the tweets containing <code>OOW17</code> and <code>OOW</code> (Oracle Open World 2017), and as mentioned before, those are coming in <code>JSON</code> format and stored in a Kafka topic named <code>rm.oow</code>. The first step is then to create a <strong>Stream</strong> on top of the topic in order to structure the data before doing any transformation. <br> The guidelines for the stream definition can be found <a href="https://github.com/confluentinc/ksql/blob/0.1.x/docs/syntax-reference.md#syntax-reference">here</a>, the following is a cutdown version of the code used</p> <pre><code>CREATE STREAM twitter_raw ( \ Created_At VARCHAR, \ Id BIGINT, \ Text VARCHAR, \ Source VARCHAR, \ Truncated VARCHAR, \ ... User VARCHAR, \ Retweet VARCHAR, \ Contributors VARCHAR, \ ...) \ WITH ( \ kafka_topic='rm.oow', \ value_format='JSON' \ ); </code></pre> <p>Few things to notice:</p> <ul> <li><code>Created_At VARCHAR</code>: <em>Created_At</em> is a <code>timestamp</code>, however in the first stream definition I can't apply any date/timestamp conversion. I keep it as <code>VARCHAR</code> which is one of the allowed types (others are <code>BOOLEAN</code>, <code>INTEGER</code>, <code>BIGINT</code>, <code>DOUBLE</code>, <code>VARCHAR</code>, <code>ARRAY&lt;ArrayType&gt;</code> and <code>MAP&lt;VARCHAR, ValueType&gt;</code>).</li> <li><code>User VARCHAR</code>: the <code>User</code> field is a JSON nested structure, for the basic stream definition we'll leave it as <code>VARCHAR</code> with further transformations happening later on.</li> <li><code>kafka_topic='rm.oow'</code>: source declaration</li> <li><code>value_format='JSON'</code>: data format</li> </ul> <p>Once created the first stream we can then query it in SQL like </p> <pre><code>select Created_at, text from twitter_raw </code></pre> <p>with the output being in the form of a <strong>continuous flow</strong>: as soon as a new tweet arrives its visualized in the console.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/Tweets-raw-300.gif" alt="KSQL: Streaming SQL for Apache Kafka"></p> <p>The first part I want to fix now is the <code>Created_At</code> field, which was declared as <code>VARCHAR</code> but needs to be mutated into timestamp. I can do it using the function <code>STRINGTOTIMESTAMP</code> with the mask being <code>EEE MMM dd HH:mm:ss ZZZZZ yyyy</code>. This function converts the string to a <code>BIGINT</code> which is the datatype used by Kafka to store timestamps.</p> <p>Another section of the tweet that needs further parsing is the <code>User</code>, that as per the previous definition returns the whole nested JSON object.</p> <pre><code>{ "id":575384370, "id_str":"575384370", "name":"Francesco Tisiot", "screen_name":"FTisiot", "location":"Verona, Italy","url":"http://it.linkedin.com/in/francescotisiot", "description":"ABC" ... } </code></pre> <p>Fortunately KSQL provides the <code>EXTRACTJSONFIELD</code> function that we can then use to parse the JSON and retrieve the required fields</p> <p>I can now define a new <code>twitter_fixed</code> stream with the following code</p> <pre><code>create stream twitter_fixed as select STRINGTOTIMESTAMP(Created_At, 'EEE MMM dd HH:mm:ss ZZZZZ yyyy') AS Created_At, \ Id, \ Text, \ Source, \ ..., \ EXTRACTJSONFIELD(User, '$.name') as User_name, \ EXTRACTJSONFIELD(User, '$.screen_name') as User_screen_name, \ EXTRACTJSONFIELD(User, '$.id') as User_id, \ EXTRACTJSONFIELD(User, '$.location') as User_location, \ EXTRACTJSONFIELD(User, '$.description') as description \ from twitter_raw </code></pre> <p>An important thing to notice is that the <code>Created_At</code> is not encoded as <code>BigInt</code>, thus if I execute <code>select Created_At from twitter_fixed</code> I get only the raw number. To translate it to a readable date I can use the <code>STRINGTOTIMESTAMP</code> function passing the column and the data format.</p> <p>The last part of the stream definition I wanted to fix is the settings of <code>KEY</code> and <code>TIMESTAMP</code>: a <code>KEY</code> is the unique identifier of a message and, if not declared, is auto-generated by Kafka. However the tweet JSON contains the <code>Id</code> which is Twitter's unique identifier, so we should to use it. <code>TIMESTAMP</code> associates the message timestamp with a column in the stream: <code>Created_At</code> should be used. I can defined the two above in the <code>WITH</code> clause of the stream declaration.</p> <pre><code>create stream twitter_with_key_and_timestamp \ as \ select * from twitter_fixed \ with \ (KEY='Id', TIMESTAMP='Created_At'); </code></pre> <p>When doing a <code>select * from twitter_with_key_and_timestamp</code> we can clearly see that KSQL adds two columns before the others containing <code>TIMESTAMP</code> and <code>KEY</code> and the two are equal to <code>Created_At</code> and <code>Id</code>.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/TimeStamp-Key.png" alt="KSQL: Streaming SQL for Apache Kafka"></p> <p>Now I have all the fields correctly parsed as KSQL stream, nice but in <a href="https://www.rittmanmead.com/blog/2017/08/how-was-game-of-thrones-s07-e05-tweet-analysis-with-kafka-bigquery-and-tableau/">my previous blog post</a> I had almost the same for free using Kafka Connect. Now It's time to discover the next step of KSQL: <strong>tables</strong>! </p> <p>Let's first create a simple table containing the number of tweets by <code>User_name</code>.</p> <pre><code>create table tweets_by_users as \ select user_screen_name, count(Id) nr_of_tweets \ from twitter_with_key_and_timestamp \ group by user_screen_name </code></pre> <p>When then executing a simple <code>select * from table</code> we can see the expected result.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/Users-and-counts.png" alt="KSQL: Streaming SQL for Apache Kafka"></p> <p>Two things to notice:</p> <ul> <li>We see a new row in the console every time there is a new record inserted in the <code>oow</code> topic, the new row contains the updated count of tweets for the <code>screen_name</code> selected</li> <li>The <code>KEY</code> is automatically generated by KSQL and contains the <code>screen_name</code></li> </ul> <p>I can retrieve the list of tables define with the <code>show tables</code> command.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/List-of-tables-1.png" alt="KSQL: Streaming SQL for Apache Kafka"></p> <p>It's interesting to notice that the format is automatically set as <code>JSON</code>. The <strong>format</strong> property, configured via the <code>VALUE_FORMAT</code> parameter, defines how the message is stored in the topic and can either be <code>JSON</code> or <code>DELIMITED</code>.</p> <h2 id="windowing">Windowing</h2> <p>When grouping, KSQL provides three different windowing functions:</p> <ul> <li><strong>Tumbling</strong>: Fixed size, non overlapping. The <code>SIZE</code> of the window needs to be specified.</li> <li><strong>Hopping</strong>: Fixed size, possibly overlapping. The <code>SIZE</code> and <code>ADVANCE</code> parameters need to be specified.</li> <li><strong>Session</strong>: Fixed size, starting from the first entry for a particular Key, it remains active until a new message with the same key happens within the <code>INACTIVITY_GAP</code> which is the parameter to be specified.</li> </ul> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/Wondowing.png" alt="KSQL: Streaming SQL for Apache Kafka"></p> <p>I can create simple table definition like the number of tweets by location for each tumbling session with</p> <pre><code>create table rm.tweets_by_location \ as \ select user_location, \ count(Id) nr_of_tweets \ from twitter_with_key_and_timestamp \ WINDOW TUMBLING (SIZE 30 SECONDS) \ group by user_location </code></pre> <p>the output looks like</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/Tumbling-Window.png" alt="KSQL: Streaming SQL for Apache Kafka"></p> <p>As you can see the <code>KEY</code> of the table contains both the <code>user_location</code> and the window <code>Timestamp</code> (e.g <code>Colombes : Window{start=1507016760000 end=-}</code>)</p> <p>An example of hopping can be created with a similar query </p> <pre><code>create table rm.tweets_by_location_hopping \ as \ select user_location, \ count(Id) nr_of_tweets \ from twitter_with_key_and_timestamp \ WINDOW HOPPING (SIZE 30 SECONDS, ADVANCE BY 10 SECONDS) \ group by user_location; </code></pre> <p>With the output being like </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/Hopping-Window-1.png" alt="KSQL: Streaming SQL for Apache Kafka"></p> <p>It's interesting to notice that each entry (e.g. <code>Europe North, Switzerland</code>) is listed at least three times. This is due to the fact that in any point in time there are three overlapping windows (<code>SIZE</code> is 30 seconds and <code>ADVANCE</code> is 10 seconds). The same example can be turn into the session windows by just defining <code>WINDOW SESSION (30 SECONDS)</code>.</p> <p>The windowing is an useful option, especially when combined with <code>HAVING</code> clauses since it gives the option to define metrics for real time analysis. <br> E.g. I may be interested only items that have been ordered more than 100 times in the last hour, or, in my twitter example in <code>user_locations</code> having a <code>nr_of_tweets</code> greater than 5 in the last 30 minutes.</p> <h1 id="joining">Joining</h1> <p>So far so good, a nice set of SQL functions on top of data coming from a source (in my case twitter). In the real word however we'll need to mix information coming from disparate sources.... what if I tell you that you can achieve that in a single KSQL statement?</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/Face-KSQL.jpg" alt="KSQL: Streaming SQL for Apache Kafka"></p> <p>To show an integration example I created a simple topic <code>known_twitters</code> using the <code>kafka-console-producer</code>.</p> <pre><code>./bin/kafka-console-producer --topic known_twitters --broker-list myserver:9092 </code></pre> <p>Once started I can type in messages and those will be stored in the <code>known_twitters</code> topic. For this example I'll insert the twitter handle and real name of known people that are talking about <code>OOW</code>. The format will be:</p> <pre><code>username,real_name </code></pre> <p>like </p> <pre><code>FTisiot,Francesco Tisiot Nephentur,Christian Berg </code></pre> <p>Once inserted the rows with the producer I'm then able to create a KSQL stream on top of it with the following syntax (note the <code>VALUE_FORMAT='DELIMITED'</code>)</p> <pre><code>create stream people_known_stream (\ screen_name VARCHAR, \ real_name VARCHAR) \ WITH (\ KAFKA_TOPIC='known_twitters', \ VALUE_FORMAT='DELIMITED'); </code></pre> <p>I can now join this stream with the others streams or tables built previously. However when trying the following statement </p> <pre><code>select user_screen_name from rm.tweets_by_users a join PEOPLE_KNOWN_STREAM b on a.user_screen_name=b.screen_name; </code></pre> <p>I get a nice error </p> <pre><code>Unsupported join logical node: Left: io.confluent.ksql.planner.plan.StructuredDataSourceNode@6ceba9de , Right: io.confluent.ksql.planner.plan.StructuredDataSourceNode@69518572 </code></pre> <p>This is due to the fact that as of now KSQL supports only joins between a stream and a table, and the stream needs to be specified first in the KSQL query. If I then just swap the two sources in the select statement above:</p> <pre><code>select user_screen_name from PEOPLE_KNOWN_STREAM a join rm.tweets_by_users b on a.screen_name=b.user_screen_name; </code></pre> <p>...I get another error</p> <pre><code>Join type is not supportd yet: INNER </code></pre> <p>We have to remember that KSQL is still in developer beta phase, a lot of new features will be included before the official release.</p> <p>adding a <code>LEFT JOIN</code> clause (see <a href="https://github.com/confluentinc/ksql/issues/308">bug</a> related) solves the issue and I should be able to see the combined data. However when running </p> <pre><code>select * from PEOPLE_KNOWN_STREAM left join TWEETS_BY_USERS on screen_name=user_screen_name; </code></pre> <p>Didn't retrieve any rows. After adding a proper <code>KEY</code> to the stream definition </p> <pre><code>create stream PEOPLE_KNOWN_STREAM_PARTITIONED \ as select screen_name , \ real_name from people_known_stream \ PARTITION BY screen_name; </code></pre> <p>I was able to retrieve the correct rowset! Again, we are in early stages of KSQL, those fixes will be enhanced or better documented in future releases!</p> <h1 id="conclusion">Conclusion</h1> <p>As we saw in this small example, all transformations, summaries and data enrichments were done directly in Kafka with a dialect very easy to learn for anyone already familiar with SQL. All the created streams/tables are stored as Kafka topics thus the standard connectors can be used for sink integration. </p> <p>As mentioned above KSQL is still in developer preview but the overall idea is very simple and at the same time powerful. If you want to learn more check out the <a href="https://www.confluent.io/product/ksql/">Confluent page</a> and the <a href="https://github.com/confluentinc/ksql/tree/0.1.x/docs#ksql-documentation">KSQL github repository</a>! </p> Francesco Tisiot a58f94c2-f7fe-4fbb-a5b7-b732d8bc691b Wed Oct 18 2017 11:18:39 GMT-0400 (EDT) Your Three Must-Know EPM and Analytics Themes from OpenWorld 2017 http://blog.performancearchitects.com/wp/2017/10/18/your-three-must-know-epm-and-analytics-themes-from-openworld-2017/ <p>Author: Kirby Lunger, Performance Architects</p> <p>The <a href="https://www.oracle.com/applications/performance-management/index.html">enterprise performance management (EPM)</a> and <a href="https://www.oracle.com/solutions/business-analytics/index.html">enterprise analytics (business analytics, BI, data visualization)</a> arenas may have seemed like an afterthought at <a href="https://www.oracle.com/openworld/index.html">Oracle OpenWorld</a> this year, since the conference focus areas seemed to be <a href="https://www.oracle.com/database/autonomous-database/index.html">autonomous (self-learning) databases</a>, <a href="https://www.oracle.com/cloud/blockchain/index.html">blockchain</a> and cloud infrastructure!  Never fear!  I’ve distilled the top three themes from these areas to bring you up to speed in this arena as quickly as possible.</p> <ol> <li><strong>Everyday Low Prices: Walmart Pricing and (Less) Discounting Now Applies</strong></li> </ol> <p>One of the most attractive things about buying cloud solutions is that we can purchase “by the drop,” meaning that we can expand capacity (seats, CPUs, whatever) as we need them, at an affordable price.</p> <p>For the last several years, Oracle was dinged by analyst firms like Gartner for maintaining a sales model that wasn’t optimized for the cloud world (aka: a very large field sales force used to long, protracted negotiations with a lot of off-the-list discounting).</p> <p>The beast finally awoke!  Right around the time of OpenWorld, Oracle quietly slashed the prices of <a href="https://www.oracle.com/solutions/business-analytics/analytics-cloud.html">Oracle Analytic Cloud (OAC)</a>, their next-generation analytics platform combining BI, data visualization and analytics (Essbase!) capabilities, by 50%.  We believe this will lead to much clearer sales incentives and less required discounting on Oracle’s part moving forward…which should frankly make your life (and our experience as a partner as well) much easier.  As far as we know, this only applies to the <a href="https://cloud.oracle.com/en_US/paas">PaaS</a> arena at the moment, although we fully expect that this operating model will edge into the <a href="https://cloud.oracle.com/en_US/guided-journey">SaaS</a> and <a href="https://www.oracle.com/cloud/iaas.html">IaaS</a> areas as we look out into the coming fiscal year.</p> <p>Oracle has also spent a lot of time over the last several months clarifying and narrowing down the list of offerings in each of its SaaS, PaaS, and IaaS focus areas.  You can go to the EPM arena, for example, and <a href="https://www.oracle.com/applications/performance-management/products.html">clearly see the list of modules and their prices</a> with a “Purchase Now” button.  The days of trying to track down one of your 15 Oracle sales reps to get a quote are on their way out!</p> <p>As part of this, product naming and grouping/bundling has been simplified.  You’ll notice the “Service” is getting dropped from most of the cloud product names (e.g., Enterprise Planning and Budgeting Cloud Service or EPBCS is now often referred to as <a href="https://cloud.oracle.com/enterprise-planning-cloud">“Enterprise Planning Cloud” or “EPC” on the Oracle website</a>).</p> <ol start="2"> <li><strong>The Dashboard is Dead: Information Before You Know You Need It Is the Name of the Game</strong></li> </ol> <p>Think about all of the notifications you receive from shopping sites based on your past and predicted shopping behavior.  You don’t painstakingly create a dashboard to analyze and report on your behavior…this just happens based on the data they collect on you and alerts are pushed to you on an “as-needed” basis.</p> <p>And where do you consume your information?  On your mobile phone.  <a href="http://bgr.com/2016/11/02/internet-usage-desktop-vs-mobile/">As of November 2016, mobile web traffic overtook computer web traffic</a>…<a href="https://www.emailmonday.com/mobile-email-usage-statistics">66% of all emails are now opened on a mobile phone</a>!</p> <p>We’ve all been saying this for years…and now it’s finally happening.  Using <a href="https://www.oracle.com/artificial-intelligence/embedded-ai.html">adaptive intelligence</a> (Oracle’s term for what a bunch of other folks used to call “artificial intelligence”) and <a href="https://blogs.oracle.com/machine-learning-explained">machine learning</a>, Oracle is betting the ranch on proactive alerting throughout their solution stack to address this mobile-first, information-push world.</p> <p>In the enterprise analytics field, they’re investing heavily in mobile enhancements for the visualization capabilities in OAC and to their mobile applications (<a href="https://www.oracle.com/solutions/business-analytics/day-by-day.html">Day-by-Day</a> and <a href="https://www.oracle.com/solutions/business-analytics/synopsis.html">Synopsis</a>), while in EPM, they continue to focus on predictive modeling enhancements to the EPM product suite.</p> <ol start="3"> <li><strong>Long Live the Data Lake: “Directionally Correct” is All the Rage</strong><strong style="font-size: 1rem;"> </strong></li> </ol> <p>First of all, EPM folks, don’t freak out.  This doesn’t mean transactional systems are going away…we’ll be in world where “hybrid” data storage models rule for many years to come. It just means that the world is moving to a “directionally correct” orientation instead of a “precisely wrong” focus.</p> <p>What does this mean?  Rather than waiting for complete, tried-and-true, cause-and-effect historical relationships to be established in a traditional relational database structure that is then reported out in a dashboard, Oracle is using <a href="https://blogs.oracle.com/bigdata/the-new-data-lake-you-need-more-than-hdfs">data lake technologies</a> (which store data in its raw format until it is needed for analysis) to provide pointers to possible trends that could predict an outcome.</p> <p>A centerpiece of this is the new <a href="https://cloud.oracle.com/en_US/oac/pricing">OAC &#8211; Data Lake edition</a> (which we think signals a shift away from the Oracle “Big Data Discovery” messaging of the past few years), which launched the week of OpenWorld.</p> <p>That said…Oracle did announce a significant update to a more traditional EPM data management solution for you “structured data” fans, the <a href="https://cloud.oracle.com/en_US/enterprise-data-management-cloud">Enterprise Data Management Cloud Service (also known as Enterprise Data Management Cloud)</a>.  This is the totally-rearchitected cloud version of the on-premise <a href="http://www.oracle.com/technetwork/middleware/data-relationship-management/overview/index.html">Oracle Hyperion Data Relationship Management (DRM)</a>, and is due out by the end of 2017 calendar year.  It should make cloud-based, enterprise data management a lot easier.</p> <p>Want to learn more about the evolution of Oracle’s EPM and enterprise analytics solutions and what this means for you?  Contact us at <a href="mailto:communications@performancearchitects.com">communications@performancearchitects.com</a> and we’d be happy to set up a time to talk.</p> Melanie Mathews http://blog.performancearchitects.com/wp/?p=2195 Wed Oct 18 2017 05:38:02 GMT-0400 (EDT) Patching Essbase in OAC to 17.3.3-926 with Oracle 11g RDBMS http://blog.performancearchitects.com/wp/2017/10/18/patching-essbase-in-oac-to-17-3-3-926-with-oracle-11g-rdbms/ <p>Author: Andy Tauro, Performance Architects</p> <p>I recently applied the 17.3.3-926 patch to <a href="https://cloud.oracle.com/en_US/oac">Oracle Essbase Cloud Service (<u>ESSCS</u>) in Oracle Analytics Cloud (OAC</a>). If you have not patched OAC yet, the good news is that this process is as close to “one-click” as it can get, with the capability to perform a “pre-check” of the instance (and while we have yet to see this fail, it is good to know that we can check to see if any known conditions for failure exist).</p> <p>When the patching is initiated, it first performs a backup of the instance, just in case a rollback is needed. Once the backup is successful, the patching process begins. In our experience, this process takes about 30 minutes, including the backup. However, I fully expect that will vary depending on how much content is housed within the instance.</p> <p>When I restarted the instance after the patch, I found that Essbase would not start. Digging through the log files on the instance, I found an error message that indicated that a “schema update” failed with the error message: “ORA-02000: missing ( keyword.”</p> <p>Since the patching process in ESSCS is hidden from the customer, we contacted Oracle Support. After consulting with the product development team, we found out that the issue was because we were using <a href="http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win64soft-094461.html">Oracle Database 11g</a> as our relational data store, a.k.a. DBaaS (Database-as-a-Service). By default, the update assumes that the latest version of the Oracle database (12c) is being used. To overcome this, Oracle Support provided a fix that required an update to a server script. The script being updated (setDomainEnv.sh) is found at the location “/u01/data/domains/esscs/bin” and Oracle Support advises backing up this script before making changes.</p> <p>To change this script, one needs to change to the “Oracle” user with the command “sudo su &#8211; oracle.” Find the following words in the script: “-Dessbase.datasource=BIPlatformDatasource”</p> <p>and replace it with “-Dessbase.datasource=BIPlatformDatasource -Dessbase.schema.update.disabled=true.”</p> <p>Once the changes are made, log out of the instance and restart it using the “My Services: console. The updates will tell Essbase to skip the “Schema Update” step. As long as there isn’t anything else broken with the instance, this should allow Essbase to start up.</p> <p>Oracle confirms that there is no functionality lost in using Oracle database 11g with ESSCS, and this issue will be fixed in patch 17.4, which is expected out in a couple of months. However, this stresses the importance of having a pre-production instance to verify that the deployed patches will not introduce issues with your setup. Since a PaaS like OAC allows for a lot of flexibility in how one uses one’s environment, it is important that such system changes are tested before they are released.</p> <p>While included pre-checks can check for conditions on the Essbase server itself, when we consider the ways the instance can be connected to other services, whether in the Oracle Cloud or outside services like on-premise systems, not every possible condition can be checked for. That is because the tools included with OAC are robust and flexible enough to allow for solutions restricted only by one’s imagination.</p> Melanie Mathews http://blog.performancearchitects.com/wp/?p=2148 Wed Oct 18 2017 05:21:30 GMT-0400 (EDT) ODTUG Elections – Vote Now! http://www.odtug.com/p/bl/et/blogaid=748&source=1 Elections for the 2018-19 ODTUG Board of Directors are underway — vote now!Exercise your right as an ODTUG member and vote for the board. This may be the most important thing you can do for ODTUG. ODTUG http://www.odtug.com/p/bl/et/blogaid=748&source=1 Mon Oct 16 2017 11:19:47 GMT-0400 (EDT) Proof that Less can be More https://blog.redpillanalytics.com/proof-that-less-can-be-more-fa684363bd88?source=rss----abcc62a8d63e---4 <figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*zxbiEpJZjTor8ttGAZ8tTQ.jpeg" /></figure><p>Snowflake Data Warehouse release 2.11 (September 7, 2017) included the addition of an OVERWRITE parameter for the INSERT command. INSERT OVERWRITE effectively consolidates two commands, TRUNCATE TABLE and INSERT, into one. INSERT OVERWRITE also deletes the file load history and retains access control privileges on the target table; both of which are not insignificant details.</p><p>Give it a try by creating a table and populating with two records:</p><pre>create table test_insert_overwrite(<br> id int<br> ,first_name varchar2(250)<br> ,last_name varchar2(250))<br> ;</pre><pre>insert into test_insert_overwrite values(1,&#39;Wayne&#39;,&#39;Campbell&#39;),(2,&#39;Garth&#39;,&#39;Algar&#39;);</pre><p>Verify that the two records are present:</p><pre><strong>select</strong> * <strong>from</strong> test_insert_overwrite;</pre><pre>+----+------------+-----------+</pre><pre>| <strong>ID</strong> | <strong>FIRST_NAME</strong> | <strong>LAST_NAME</strong> |</pre><pre>+====+============+===========+</pre><pre>| 1 | Wayne | Campbell |</pre><pre>+----+------------+-----------+</pre><pre>| 2 | Garth | Algar |</pre><pre>+----+------------+-----------+</pre><pre>2 Row(s) produced. Time Elapsed: 1.038s</pre><p>Now add the OVERWRITE option to the INSERT command:</p><pre>insert overwrite into test_insert_overwrite values (3,&#39;Noah&#39;,&#39;Vanderhoff&#39;);</pre><p>Confirm the original two records have been removed and there is now one record in the table:</p><pre><strong>select</strong> * <strong>from</strong> test_insert_overwrite;</pre><pre>+----+------------+------------+</pre><pre>| <strong>ID</strong> | <strong>FIRST_NAME</strong> | <strong>LAST_NAME </strong> |</pre><pre>+====+============+============+</pre><pre>| 3 | Noah | Vanderhoff |</pre><pre>+----+------------+------------+</pre><pre>1 Row(s) produced. Time Elapsed: 1.930s</pre><p>The Query Profile for the INSERT OVERWRITE command used above shows a two-step process. First, a TRUNCATE command followed by the INSERT.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/746/1*hzgr8XOHFuqauV-beUW-AQ.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/736/1*KEd95b0FjwMaJFdaTIpsig.png" /></figure><p>While there are multiple methods to achieve the desired result, using one statement to perform a “full load” is often the most efficient for many use cases.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vFCY6uJ1Hkw7HJyO3ovWow.png" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=fa684363bd88" width="1" height="1"><hr><p><a href="https://blog.redpillanalytics.com/proof-that-less-can-be-more-fa684363bd88">Proof that Less can be More</a> was originally published in <a href="https://blog.redpillanalytics.com">Red Pill Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p> Mike Fuller https://medium.com/p/fa684363bd88 Wed Oct 11 2017 11:03:08 GMT-0400 (EDT) Proof that Less can be More http://redpillanalytics.com/proof-that-less-can-be-more/ <p><img width="300" height="199" src="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/kelly-sikkema-168787.jpg?fit=300%2C199" class="attachment-medium size-medium wp-post-image" alt="Proof that Less can be More" srcset="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/kelly-sikkema-168787.jpg?w=1920 1920w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/kelly-sikkema-168787.jpg?resize=300%2C199 300w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/kelly-sikkema-168787.jpg?resize=768%2C508 768w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/kelly-sikkema-168787.jpg?resize=1024%2C678 1024w" sizes="(max-width: 300px) 100vw, 300px" data-attachment-id="5450" data-permalink="http://redpillanalytics.com/proof-that-less-can-be-more/kelly-sikkema-168787/" data-orig-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/kelly-sikkema-168787.jpg?fit=1920%2C1271" data-orig-size="1920,1271" 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="Proof that Less can be More" data-image-description="&lt;p&gt;Proof that Less can be More&lt;/p&gt; " data-medium-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/kelly-sikkema-168787.jpg?fit=300%2C199" data-large-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/kelly-sikkema-168787.jpg?fit=1024%2C678" /></p><p class="graf graf--p">Snowflake Data Warehouse release 2.11 (September 7, 2017) included the addition of an OVERWRITE parameter for the INSERT command. INSERT OVERWRITE effectively consolidates two commands, TRUNCATE TABLE and INSERT, into one. INSERT OVERWRITE also deletes the file load history and retains access control privileges on the target table; both of which are not insignificant details.</p> <hr /> <p>&nbsp;</p> <p class="graf graf--p">Give it a try by creating a table and populating with two records:</p> <p>&nbsp;</p> <p><code>create table test_insert_overwrite(<br /> id int<br /> ,first_name varchar2(250)<br /> ,last_name varchar2(250))<br /> ;<br /> insert into test_insert_overwrite values(1,'Wayne','Campbell'),(2,'Garth','Algar');<br /> </code></p> <p>&nbsp;</p> <hr /> <p>&nbsp;</p> <p>Verify that the two records are present:</p> <p>&nbsp;</p> <p><code>select * from test_insert_overwrite;<br /> +----+------------+-----------+<br /> | ID | FIRST_NAME | LAST_NAME |<br /> +====+============+===========+<br /> | 1 | Wayne | Campbell |<br /> +----+------------+-----------+<br /> | 2 | Garth | Algar |<br /> +----+------------+-----------+<br /> 2 Row(s) produced. Time Elapsed: 1.038s</code></p> <p>&nbsp;</p> <hr /> <p>Now add the <strong>OVERWRITE</strong> option to the<strong> INSERT</strong> command:</p> <p>&nbsp;</p> <p><code>insert overwrite into test_insert_overwrite values (3,'Noah','Vanderhoff');</code></p> <p>&nbsp;</p> <hr /> <p>&nbsp;</p> <p>Confirm the original two records have been removed and there is now one record in the table:</p> <p>&nbsp;</p> <p><code>select * from test_insert_overwrite;<br /> +----+------------+------------+<br /> | ID | FIRST_NAME | LAST_NAME |<br /> +====+============+============+<br /> | 3 | Noah | Vanderhoff |<br /> +----+------------+------------+<br /> 1 Row(s) produced. Time Elapsed: 1.930s</code></p> <p>&nbsp;</p> <hr /> <p>&nbsp;</p> <p>The Query Profile for the <strong>INSERT OVERWRITE</strong> command used above shows a two-step process. First, a <strong>TRUNCATE</strong> command followed by the <strong>INSERT</strong>.</p> <p>&nbsp;</p> <p><img data-attachment-id="5453" data-permalink="http://redpillanalytics.com/proof-that-less-can-be-more/screen-shot-2017-09-21-at-11-43-04-am/" data-orig-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/Screen-Shot-2017-09-21-at-11.43.04-AM.png?fit=1920%2C863" data-orig-size="1920,863" 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="Query Profile" data-image-description="&lt;p&gt;Query Profile&lt;/p&gt; " data-medium-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/Screen-Shot-2017-09-21-at-11.43.04-AM.png?fit=300%2C135" data-large-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/Screen-Shot-2017-09-21-at-11.43.04-AM.png?fit=1024%2C460" class="size-medium wp-image-5453 aligncenter" src="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/Screen-Shot-2017-09-21-at-11.43.04-AM.png?resize=300%2C135" alt="Query Profile" srcset="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/Screen-Shot-2017-09-21-at-11.43.04-AM.png?resize=300%2C135 300w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/Screen-Shot-2017-09-21-at-11.43.04-AM.png?resize=768%2C345 768w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/Screen-Shot-2017-09-21-at-11.43.04-AM.png?resize=1024%2C460 1024w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></p> <p>&nbsp;</p> <p>While there are multiple methods to achieve the desired result, using one statement to perform a “full load” is often the most efficient for many use cases.</p> <p>&nbsp;</p> <p><img data-attachment-id="5454" data-permalink="http://redpillanalytics.com/proof-that-less-can-be-more/partytime/" data-orig-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/PartyTime.png?fit=1200%2C730" data-orig-size="1200,730" 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="PartyTime" data-image-description="&lt;p&gt;PartyTime&lt;/p&gt; " data-medium-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/PartyTime.png?fit=300%2C183" data-large-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/PartyTime.png?fit=1024%2C623" class="size-medium wp-image-5454 aligncenter" src="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/PartyTime.png?resize=300%2C183" alt="PartyTime" srcset="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/PartyTime.png?resize=300%2C183 300w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/PartyTime.png?resize=768%2C467 768w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/PartyTime.png?resize=1024%2C623 1024w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/PartyTime.png?w=1200 1200w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></p> Mike Fuller http://redpillanalytics.com/?p=5449 Wed Oct 11 2017 11:02:41 GMT-0400 (EDT) Updating Oracle EPM (Hyperion) for Struts RCE Vulnerability http://blog.performancearchitects.com/wp/2017/10/11/updating-oracle-epm-hyperion-for-struts-rce-vulnerability/ <p>Author: Andy Tauro, Performance Architects</p> <p>It is hard to not have heard of the <a href="https://struts.apache.org/">Apache Struts</a> vulnerability that affected major websites, including those of Equifax. When this happened, IT support teams scrambled to check their environments and to apply fixes as quickly as they could be found. Our customers running <a href="https://www.oracle.com/applications/performance-management/index.html">Oracle EPM</a> (Hyperion) (as well as <a href="http://www.oracle.com/technetwork/middleware/bi-enterprise-edition/overview/index.html">Oracle Business Intelligence Enterprise Edition or OBIEE</a>) on-premise inquired about how to address this as well.</p> <p>From what we can tell, certain Oracle EPM components use Struts via the WebLogic Application Server (WAS or WLS) 10.3.6 platform. While WAS 10.3.6 comes bundled with Struts 1.x &amp; 2.x, it looks like Oracle EPM only uses Struts 1.x. This particular version of Struts has not been named in the vulnerability that caught the world by storm, Oracle released a fix for WebLogic that updates the version of Struts via a Smart Update (SU) patch.</p> <p>The patch (26835212) updates the Struts version in WebLogic 10.3.6 to 1.3.9 and 2.3.34. We have applied this over the last security Patch Set Update (PSU) that Oracle released (25869650, in July 2017). To apply this, one would use the BSU utility that is available in the “Middleware Home” directory ({MW_HOME}/utils/bsu). The general steps for this are:</p> <ol> <li>Stop EPM services running</li> <li>Extract patch into the “{MW_HOME}/utils/bsu/cache_dir” directory</li> <li>From the location “{MW_HOME}/utils/bsu,” apply the patch as: “bsu.cmd/sh -install -patch_download_dir={MW_HOME}/utils/bsu/cache_dir -patchlist={PATCH_ID} -prod_dir={MW_HOME}/{WL_HOME}” and patch ID for July 2017 PSU = B25A, for 25869650 = UZCY</li> <li>Delete “cache” and “tmp” directories for each WebLogic Managed Server that runs Oracle EPM services <ul> <li>These will be found in the location “{MW_HOME}/user_projects/domains/EPMSystem/servers”</li> </ul> </li> <li>Restart Oracle EPM</li> </ol> <p>One important note: “MW_HOME” equals “Middleware Home” and “WL_HOME” equals “WebLogic Home” (usually “{MW_HOME}/wlserver_10.3”).  Also, these steps apply primarily to Oracle EPM Version 11.1.2.4.</p> <p>At this time, we have run basic tests on the various Hyperion modules and have not seen any issues. We are working with our clients to perform more thorough health checks, since every environment has some nuance that makes it unique and sometimes exposes an issue that was not thought about.</p> <p>Are you thinking of applying this patch and have questions? Feel free to drop a <a href="mailto:info@performancearchitects.com">note</a> as we would love to hear from you and share notes on this.</p> Melanie Mathews http://blog.performancearchitects.com/wp/?p=2176 Wed Oct 11 2017 05:33:29 GMT-0400 (EDT) ODC Appreciation Day: Customize style of lightweight login and VA/DV https://gianniceresa.com/2017/10/odc-appreciation-day-customize-style-of-lightweight-login-and-vadv/ <p>We are at that time of the year again&#8230;<br /> Like last year, this is my contribution for the <a href="https://oracle-base.com/blog/2017/09/25/odc-appreciation-day-2017-thanksodc/" target="_blank" rel="noopener">ODC Appreciation Day</a> (<a href="https://twitter.com/hashtag/thanksODC?src=hash" target="_blank" rel="noopener">#thanksODC</a>), promoted by Tim Hall.</p> <p>My post starts with a little rant: OTN is gone, new name is now ODC. I&#8217;m sure there are some really smart marketing people behind that name change, but &#8220;killing&#8221; a brand known and used for ages to try to promote something new/different is the kind of things I don&#8217;t like a lot (isn&#8217;t the new thing good enough to be known by itself?).<br /> I&#8217;m still calling things OTN just because that&#8217;s what it is in my mind and how most of us knows it.</p> <h2>OBIEE 12c &#8220;lightweight&#8221; login page and VA/DV customization</h2> <p>This post isn&#8217;t really about a functionality but more about a missing/removed functionality. I saw people asking about it (in OTN forums &#8230; sorry: ODC forums) so I thought it was worth to write about it explaining things a bit.</p> <div id="attachment_570" style="width: 296px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login.png"><img class="wp-image-570 size-medium" src="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-286x300.png" alt="new lightweight login (#thanksODC)" width="286" height="300" srcset="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-286x300.png 286w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login.png 576w" sizes="(max-width: 286px) 100vw, 286px" /></a><p class="wp-caption-text">The lightweight login page</p></div> <p>With OBIEE 12.2.1.3.0 there is, by default, a new login page called &#8220;lightweight SSO&#8221;. It was possible to enable it already in 12.2.1.2.0 and the role of this new page is to provide a shared session between OBIEE Answers/Dashboards (the classical interface) and Visual Analyzer.</p> <p>It has a different style when compared to the &#8220;old&#8221; classical login page, and it also ignores completely your own custom style you maybe deployed in OBIEE. In the old way of doing things a custom style was a <a href="https://gianniceresa.com/2017/02/obiee-12c-custom-style-using-shared-folder/">simple </a>and supported way of branding the interface to make OBIEE totally yours. Even if just by deploying a custom &#8220;oracle_logo.png&#8221; picture to have your own logo on the top-left header.</p> <div id="attachment_574" style="width: 310px" class="wp-caption aligncenter"><img class="size-medium wp-image-574" src="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_classic-login-300x222.png" alt="&quot;old&quot; classic OBIEE login (#thanksODC)" width="300" height="222" srcset="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_classic-login-300x222.png 300w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_classic-login-768x568.png 768w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_classic-login.png 883w" sizes="(max-width: 300px) 100vw, 300px" /><p class="wp-caption-text">The &#8220;old&#8221; classic login page uses oracle_logo.png</p></div> <p>When talking about custom style not affecting the new login page in OBIEE how to not think about Visual Analyzer?</p> <div id="attachment_573" style="width: 310px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_va-logo.png"><img class="size-medium wp-image-573" src="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_va-logo-300x108.png" alt="VA/DV logo (#thanksODC)" width="300" height="108" srcset="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_va-logo-300x108.png 300w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_va-logo-768x276.png 768w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_va-logo.png 876w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">VA/DV has it&#8217;s own logo and name, not using your OBIEE custom style</p></div> <p>Logo, name, colors: nothing coming from your own custom style is used and you get a 100% Oracle branding.</p> <h2>How to customize the style of these elements?</h2> <p>Let&#8217;s inspect the new login page a bit to find out what options you can have&#8230;</p> <div id="attachment_571" style="width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-logo.png"><img class="size-large wp-image-571" src="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-logo-1024x541.png" alt="lightweight login logo (#thanksODC)" width="1024" height="541" srcset="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-logo-1024x541.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-logo-300x159.png 300w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-logo-768x406.png 768w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-logo-1080x571.png 1080w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">The new OBIEE lightweight login page logo isn&#8217;t a picture anymore</p></div> <p>First surprise: there is no picture at all where the logo is placed. Inspecting the HTML shows a empty tag. Wait a second: not really empty &#8230;<br /> There is a CSS rule setting the <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/content" target="_blank" rel="noopener">&#8220;content&#8221; property</a> of this tag, which is a way to add content in the page. Content can be a static text or a picture or few other things, in this case it is just 1 character encoded using unicode: \e666. This isn&#8217;t really a readable (latin) character.</p> <h3>Can \e666 be the logo?</h3> <div id="attachment_581" style="width: 310px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_666.png"><img class="size-medium wp-image-581" src="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_666-300x214.png" alt="\e666 the Oracle logo (#thanksODC)" width="300" height="214" srcset="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_666-300x214.png 300w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_666-400x284.png 400w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_666.png 662w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">\e666 the Oracle logo</p></div> <p>How is it possible that \e666 (any reference to <a href="https://en.wikipedia.org/wiki/Number_of_the_Beast" target="_blank" rel="noopener">666 &#8211; the number of the beast</a> is purely coincidental?) is visible on the screen as the Oracle logo? When checking the style of the DIV element itself you can see it has a custom font-family defined: &#8220;vafont&#8221;. This for sure isn&#8217;t a standard font (like Arial, Verdana, Times New Roman etc.) and I don&#8217;t have it installed on my system.</p> <div id="attachment_575" style="width: 310px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-font.png"><img class="size-medium wp-image-575" src="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-font-300x217.png" alt="vafont.woff loading (#thanksODC)" width="300" height="217" srcset="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-font-300x217.png 300w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-font-768x555.png 768w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-font-1024x740.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-font-1080x781.png 1080w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-font.png 1311w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">The login page load a custom font (used by CSS)</p></div> <div id="attachment_572" style="width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-logo-font.png"><img class="size-large wp-image-572" src="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-logo-font-1024x584.png" alt="remove 'vafont' (#thanksODC)" width="1024" height="584" srcset="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-logo-font-1024x584.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-logo-font-300x171.png 300w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-logo-font-768x438.png 768w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-logo-font-1080x616.png 1080w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">When you remove &#8216;vafont&#8217; as the font-family for that element, no logo anymore</p></div> <p>If you disable just that attribute in the CSS the Oracle logo disappear and a square is visible instead (as I said \e666 isn&#8217;t really a readable character). As expected the &#8220;vafont&#8221; is loaded by the page itself and it isn&#8217;t a system font at all.</p> <h3>Not as simple to customize as an OBIEE custom style&#8230;</h3> <p>That&#8217;s the main reason why it&#8217;s more difficult to customize that login page, or the VA/DV interface and put your own logo there instead: it isn&#8217;t a picture anymore!<br /> The easiest way would be to edit the CSS to redefine the &#8220;content&#8221; attribute and link to your own logo stored somewhere accessible (by a url), for example to your &#8220;oracle_logo.png&#8221; deployed by your classic OBIEE custom style.</p> <p>The main problem with this approach is that, so far, there isn&#8217;t an officially supported way of doing it, so you would need to take the EARs containing these deployments, edit the CSS and redeploy the archives.<br /> At the next patch or upgrade restart again as there are good chances the EAR has been replaced again by an Oracle default one.</p> <div id="attachment_576" style="width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-custom-logo.png"><img class="size-large wp-image-576" src="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-custom-logo-1024x431.png" alt="Lightweight login with custom logo (#thanksODC)" width="1024" height="431" srcset="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-custom-logo-1024x431.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-custom-logo-300x126.png 300w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-custom-logo-768x323.png 768w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-custom-logo-1080x454.png 1080w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">In the CSS it&#8217;s possible to point to the custom style oracle_logo.png instead of \e666</p></div> <p>VA/DV uses a different custom font (bi-alta), I didn&#8217;t check if it&#8217;s the exact same with a different name, but the logo is still \e666.</p> <h3>What other icons are included in the bi-alta font?</h3> <p>I was curious to see what else was included in that font, here it&#8217;s the full list I got (and you can see many pieces of the VA/DV interface are there):</p> <div id="attachment_569" style="width: 562px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_bi-alta-font.png"><img class="size-large wp-image-569" src="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_bi-alta-font-552x1024.png" alt="bi-alta font (#thanksODC)" width="552" height="1024" srcset="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_bi-alta-font-552x1024.png 552w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_bi-alta-font-162x300.png 162w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_bi-alta-font-768x1425.png 768w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_bi-alta-font-1080x2003.png 1080w" sizes="(max-width: 552px) 100vw, 552px" /></a><p class="wp-caption-text">A view of all the icons contained in the bi-alta font loaded by VA/DV (click to zoom)</p></div> <p>The post <a rel="nofollow" href="https://gianniceresa.com/2017/10/odc-appreciation-day-customize-style-of-lightweight-login-and-vadv/">ODC Appreciation Day: Customize style of lightweight login and VA/DV</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=567 Tue Oct 10 2017 05:22:09 GMT-0400 (EDT) ODC Appreciation Day: OBIEE's Time Hierarchies http://www.rittmanmead.com/blog/2017/10/odc-appreciation-day-obiees-time-hierarchies/ <img src="http://www.rittmanmead.com/blog/content/images/2017/10/Bill-1.png" alt="ODC Appreciation Day: OBIEE's Time Hierarchies"><p>After last year successful <a href="https://oracle-base.com/blog/2016/10/12/otn-appreciation-day-summary/">OTN Appreciation Day</a>, it's time again to show our love for a particular feature in any Oracle's tool we use in our work. You may have noted a name change with OTN now becoming ODC: Oracle Developer Community.</p> <h1 id="what">What</h1> <p>The feature I want to speak about is <strong>OBIEE's Time Hierarchies</strong>. <br> For anybody in the BI business the time dimension(s) are the essence of the <em>intelligence</em> bit: being able to analyze trends, compare current period with previous one, plot year to date or rolling measures are just some of the requirements we get on daily basis. <br> A time hierarchy definition allows the administrator to set which time levels are exposed, how the rollup/drill down works and how previous/following members of the level are calculated. <br> Once the hierarchy is defined, all the related calculations are simple as calling a function (e.g. <code>AGO</code>), defining the level of detail necessary (e.g. <code>Month</code>) and the number of items to take into account (e.g. <code>-1</code>).</p> <p>A Time hierarchy definition is necessary in the following cases:</p> <ul> <li><strong>Time comparisons</strong> - e.g. current vs previous month</li> <li><strong>Time related rollups</strong> - e.g. Year to date</li> <li><strong>Drill path definition</strong> - e.g. Year-Month-Day</li> <li><strong>Fact Tables at various level of details</strong> - e.g. daily fact table and monthly pre-aggregated rollup</li> <li><strong>Time related level based measures</strong> - e.g. monthly sum of sales coming from a fact table at daily level</li> </ul> <h1 id="why">Why</h1> <p>Why do I like time hierarchies? Simple! It's a very clever concept in the RPD, which requires particular knowledge and dedicated attention.</p> <p>If done wright, once defined, is available in every related table and makes the time comparison formulas easy to understand and to create. If done wrong, errors or slowness in the related analysis can be difficult to spot and improve/fix.</p> <p>Still time hierarchies are a central piece in <strong>every</strong> BI implementation, so once understood and implemented correctly give a massive benefit to all developers.</p> <h1 id="how">How</h1> <p>We blogged about <a href="https://www.rittmanmead.com/blog/2007/04/obi-ee-time-dimensions-and-time-series-calculations/">time dimensions and calculations</a> back in 2007 when OBI was still on version 10! The original functionality is still there and the process to follow is pretty much the same. <br> Recently was introduced the concept of <a href="https://www.rittmanmead.com/blog/2017/02/obiee-12c-time-dimension-logical-sequence-number/">Logical Sequence Number</a>, a way of speeding up some time series calculations by removing the ranking operations needed to move back (or forth) in history.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/Bill.png" alt="ODC Appreciation Day: OBIEE's Time Hierarchies"></p> <p>I wanted to keep the blog post short, since the time hierarchies information can be found in millions of blog posts. I just wanted the to give few hints to follow when creating a time hierarchy:</p> <ul> <li>It can be created on <strong>any data</strong> with a predefined order, no need to be a date! you could compare for example a certain product with another in the inventory having the previous code.</li> <li>The <strong>Chronological Key</strong> defines the sorting of the level, for example how years, months or dates are ordered. Ordering months alphabetically with a format like <code>YYYY-MM</code> it's correct while using <code>MM-YYYY</code> provides wrong results. </li> <li>Double check the hierarchies, something like <code>YEAR</code>-> <code>MONTH</code> -> <code>WEEK</code> -> <code>DATE</code> can be incorrect since a week can be split in different months!</li> <li>Set appropriately the <strong>number of elements</strong> for each level. This is useful, especially when the hierarchy is complex or pre-aggregated facts, for OBIEE to understand which table to query depending on the level of the analysis.</li> <li>Setup the <a href="https://www.rittmanmead.com/blog/2017/02/obiee-12c-time-dimension-logical-sequence-number/">Logical Sequence Number</a>. <strong>LSN</strong>s are useful if you are looking to reduce the impact of the time series processing at a minimum.</li> <li>If you are looking for very optimal performances for a specific report, e.g. current year vs previous, physicalizing the time series result, previous year, directly in the table alongside with the current year will give what you're looking for.</li> </ul> <p>This was just a quick overview of OBIEE's Time Hierarchies, why are so useful and what you should be looking after when creating them! Hope you found this short post useful. </p> <p>Follow the <strong>#ThanksODC</strong> hashtag on Twitter to check which post have been published on the same theme!</p> Francesco Tisiot 90d0ac9b-6a21-438c-a22b-fa8427c3720e Tue Oct 10 2017 02:58:57 GMT-0400 (EDT) How to build Fusion Apps Security in BI Apps https://blogs.oracle.com/biapps/how-to-build-fusion-apps-security-in-bi-apps <span style="color:#000000;">General guidelines for Customization,Configuration and Administration</span> <p>&nbsp;</p> <a name="_Toc494896789"><span style="font-family: Garamond, serif; color: windowtext;">SSO Authentication</span></a> <p class="MsoListParagraph" style="margin: 0in 0in 8pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">Implementers can refer to the steps to integrate SSO with IDM as explained in &lsquo;<a href="https://docs.oracle.com/cd/E29542_01/bi.1111/e10543/toc.htm"><i>Security Guide for Oracle Business Intelligence Enterprise Edition</i></a>&rsquo;.</span></p> <a name="_Toc494896790"><span style="font-family: Garamond, serif; color: black;">FA Security Metadata Extraction steps</span></a> <a name="_Toc494896791" style=""><span style="font-family: Garamond, serif; font-size: 12pt; color: black;">Identify the Data Objects to secure</span></a> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 120px; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">e.g.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 120px; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">Supervisor Person, Department, Position, etc are typical Data security objects</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 120px; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">HR Line Manager, Payroll Administrator, etc are typical Object Security Roles*.</span></p> <a name="_Toc494896792" style=""><span style="font-family: Garamond, serif; font-size: 12pt; color: black;">Fusion Apps (FA) Source Objects</span></a> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 120px; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">Identify the Data Security Roles and Object Security Roles (AoR or Area of responsibility roles) associated to these objects.</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 120px; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">For data security implementer requires&nbsp;to identify tables containing User to Data Object ID mapping.</span></p> <a name="_Toc494896793" style=""><span style="font-family: Garamond, serif; font-size: 12pt; color: black;">Finalize SQLs list for the above requirements.</span></a> <p class="MsoListParagraph" style="margin: 0in 0in 8pt 120px; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">Form SQL&rsquo;s to extract data which can be extracted from source for Data and Object Security. Example target format in next section (Creating DWH side security metadata Table inherited from FA)</span></p> <a name="_Toc494896794" style=""><span style="font-family: Garamond, serif; color: black;">Security Table Object List</span></a> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 120px; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">Some of Fusion Apps security tables and SQLs to extract security information are provided in&nbsp;</span><a href="file:///C:/Users/smohapat.ORADEV/Desktop/DataSecurity.htm#_APPENDIX_of_Fusion" style="color: rgb(149, 79, 114);"><span style="font-family: Garamond, serif;">appendix</span></a><span style="font-family: Garamond, serif;">. Additional data objects can be obtained from Fusion Apps implementation team as per requirement.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">*</span><span style="font-family: Garamond, serif;">Note, OLAP and OLTP roles may not necessarily converge on most occasions. Extract only those roles, which makes business sense for BI, and not just every role present in Fusion Apps.</span></p> <p class="MsoNormal" style="margin: 0in 0in 8pt; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">&nbsp;</span></p> <a name="_Toc494896795"><span style="font-family: Garamond, serif; color: black;">FA Security Metadata ETL to Warehouse</span></a> <a name="_Toc494896796" style=""><span style="color: black;">&nbsp;</span><span style="font-family: Garamond, serif; color: black;">Creating warehouse side security metadata Table extracted from FA</span></a> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">Data extracted from FA security tables must be loaded in certain format for ease of query by the RPD init blocks.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.25in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.25in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">As an example, for on-prem customers we could possibly use 3 tables to store data effectively . Table structure is as follows. The columns and tables can be modified or extended based on additional requirements.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: &quot;Courier New&quot;;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><b><span style="font-family: Garamond, serif;">Roles Table (Role type : Data Security or Object Security)</span></b><span style="font-family: Garamond, serif;">&nbsp;: w_sec_roles</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">Attributes: Role Name, Role Description, Role Type</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">Role Name</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">Role Description</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">Role Type</span></b></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">DSN</span></b></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">DEPT_LINE_MGR</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">Department Line Manager</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">Area of Responsibility(AOR)</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">210</span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">DEPT_TOP_MGR</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">Department Top Manager</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">Data Security(DS)</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">210</span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 1.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: &quot;Courier New&quot;;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><b><span style="font-family: Garamond, serif;">Roles+User Table</span></b><span style="font-family: Garamond, serif;">&nbsp;: w_sec_role_users</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0.25in;"><span style="font-family: Garamond, serif;">Attributes: Username, Role Name, DSN</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">USERNAME</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">Role Name</span></b></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">DSN</span></b></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">JOHNDOE</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">DEPT_LINE_MGR</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">210</span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">GWILLIAMS</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">DEPT_TOP_MGR</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">210</span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0.25in;"><span style="font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: &quot;Courier New&quot;;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><b><span style="font-family: Garamond, serif;">User+Data Object Table</span></b><span style="font-family: Garamond, serif;">&nbsp;: w_sec_user_objects</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0.25in;"><span style="font-family: Garamond, serif;">Attributes: Username, Object Name, Object ID,DSN</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">USERNAME</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">Object Name</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">Object ID</span></b></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">DSN</span></b></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">JOHNDOE</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">DEPARTMENT</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">1002</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">210</span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">GWILLIAMS</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">SUPERVISOR</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">31052</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">210</span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0.25in;"><span style="font-family: Garamond, serif;">Note here that Object refers to Securing Object to be used in BI side.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0.25in;"><span style="font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: &quot;Courier New&quot;;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><b><span style="font-family: Garamond, serif;">Useful SQL&rsquo;s based above tables containing extracted security data</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 10pt; font-family: Garamond, serif; color: black;">SQL Description</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 10pt; font-family: Garamond, serif; color: black;">Physical SQL</span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 10pt; font-family: Garamond, serif; color: black;">User to Data Security Role</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">Select username,role_description</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">from w_sec_roles rol, w_sec_role_users rol_usr</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">where rol.role_name = rol_usr. role_name</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and rol_usr.dsn = rol.dsn</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and role_type=&rsquo;DS&rsquo;</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;</span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 10pt; font-family: Garamond, serif; color: black;">User to Data AOR&nbsp; Role</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">Select rol_usr.username,rol.role_description</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">from w_sec_roles rol, w_sec_role_users rol_usr</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">where rol.role_name = rol. role_name</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and rol_usr.dsn = obj.dsn</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and role_type=&rsquo;AOR&rsquo;</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;</span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 10pt; font-family: Garamond, serif; color: black;">User to Object(Supervisor)</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">select username,object_id</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">from w_sec_role_users rol_usr,w_sec_user_objects obj</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">where rol_usr.username = obj.username</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and rol_usr.dsn = obj.dsn</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and object_name = &lsquo;SUPERVISOR&rsquo;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;</span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-family: Garamond, serif; color: black;">User to Object(Department)</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">select username,object_id</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">from w_sec_role_users rol_usr,w_sec_user_objects obj</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">where rol_usr.username = obj.username</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and rol_usr.dsn = obj.dsn</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and object_name = &lsquo;DEPARTMENT&rsquo;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;</span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><b><span style="font-family: Garamond, serif;">&nbsp;</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: &quot;Courier New&quot;;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><b><span style="font-family: Garamond, serif;">NOTE</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">Data Security objects like Department and Supervisor are hierarchical objects.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">OBIA expects the following in w_sec_user_objects table:</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">Provide top and all its child Dept ids for assigned user. Only top dept ID for an user not sufficient.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><img alt="" src="https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/ed098aee-234e-477a-841f-4fb0881cb43c/Image/d40b25c7fd4847a52bf5607f4dc04b7a/image001.jpg" style="width: 399px; height: 153px;" /></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">Provide top Supervisor Person ID,that is sufficient for Supervisor security for assigned user</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><img alt="" src="https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/ed098aee-234e-477a-841f-4fb0881cb43c/Image/ccf33958210cb325f166eb8666285b15/image002.jpg" style="width: 398px; height: 118px;" /></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0.25in;"><span style="font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.25in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">Indexing table for quicker access</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: &quot;Courier New&quot;;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">The table which is expected to be used most frequently must be indexed.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: &quot;Courier New&quot;;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">User+Data Object table will get accessed each time an user runs a report.</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 1.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: &quot;Courier New&quot;;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">This table must be indexed for optimal query for security&nbsp;<i>&ldquo;where clauses&rdquo;</i>.</span></p> <a name="_Toc494896797"><span style="font-family: &quot;Courier New&quot;; color: black;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif; color: black;">Use BI Publisher to extract security metadata in csv format using SQL based reports from Fusion Apps security tables. (</span></a><b><span style="font-family: Garamond, serif; color: red;">*</span></b><span style="font-family: Garamond, serif; color: black;">)</span> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Wingdings;">&sect;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">Log in to BI Publisher using a&nbsp;<b>Fusion Apps super user having access to &ldquo;all&rdquo; Security data sources that are required for the customer&rsquo;s security model</b>. Its possible that ETL user used for data extraction won&rsquo;t have access to the FA security tables required, so those users may not work. Work with Fusion Apps administrator to create such an user.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Wingdings;">&sect;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">Schedule a BI publisher job for each SQL report using the link&nbsp;</span><a href="https://docs.oracle.com/cd/E28280_01/bi.1111/e22257/create_rpt_jobs.htm#BIPUG213" style="color: rgb(149, 79, 114);"><span style="font-family: Garamond, serif; color: black;">https://docs.oracle.com/cd/E28280_01/bi.1111/e22257/create_rpt_jobs.htm#BIPUG213</span></a></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Wingdings;">&sect;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">The report outputs in csv format must be uploaded to ftp location of the ETL server for ODI to consume.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><a href="https://docs.oracle.com/middleware/12211/bip/BIPAD/GUID-52398FBA-CB92-4A8D-9187-770A98C657E4.htm#BIPAD306" style="color: rgb(149, 79, 114);"><span style="font-family: Garamond, serif; color: black;">https://docs.oracle.com/middleware/12211/bip/BIPAD/GUID-52398FBA-CB92-4A8D-9187-770A98C657E4.htm#BIPAD306</span></a></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">&nbsp;</span></p> <a name="_Toc494896798"><span style="font-family: &quot;Courier New&quot;; color: black;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif; color: black;">Use the csv output file to load warehouse table via ODI.(Runs in full mode always, i.e. truncate and load).</span></a> <p class="MsoNormal" style="margin: 0in 0in 8pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><b><span style="font-family: Garamond, serif; color: red;">* Note:&nbsp;</span></b><span style="font-family: Garamond, serif; color: red;">The customer will have to ensure that access to Fusion Apps security data table is always available for BI publisher to query. While getting access ensure that security policies are adhered to.</span></p> <a name="_Toc494896799"><span style="font-family: Symbol; color: black;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif; color: black;">OBIA Metadata configuration</span></a> <a name="_Toc494896800" style=""><span style="color: black;">&nbsp;</span><span style="font-family: Garamond, serif; color: black;">Identify Security Objects to be implemented (Supervisor Person, Department, Position, etc.)</span></a> <a name="_Toc494896801" style=""><span style="color: black;">&nbsp;</span><span style="font-family: Garamond, serif; color: black;">Configure LDAP as Authentication Provider to Store extracted Fusion Apps Roles as LDAP Groups, refer to link below.</span></a> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><a href="https://docs.oracle.com/cd/E23943_01/bi.1111/e10543/privileges.htm#CJAFBFID" style="color: rgb(149, 79, 114);"><span style="font-family: Garamond, serif; color: black;">https://docs.oracle.com/cd/E23943_01/bi.1111/e10543/privileges.htm#CJAFBFID</span></a></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Wingdings;">&sect;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">Use weblogic security provider BISQLGroupProvider (installed and configured on BI Server) to get Roles from DB to weblogic.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Wingdings;">&sect;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">Create new Role or use existing pre-shipped OBIA roles as parents of these DB imported groups and link with Fusion Apps roles procured via LDAP. Refer to the flow below:</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><img alt="" src="https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/ed098aee-234e-477a-841f-4fb0881cb43c/Image/c7141a2a6528e30adfbba7fee976c3a4/image003.jpg" style="width: 522px; height: 179px;" /></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Wingdings;">&sect;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">The FA roles extracted must have Object Role as well as Data security Role mapping done in Enterprise Manager. Example provided below.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 9pt; font-family: Garamond, serif; color: black;">FA Role</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 9pt; font-family: Garamond, serif; color: black;">Existing WLS Role/OBIA Role</span></b></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 9pt; font-family: Garamond, serif; color: black;">Type</span></b></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: Garamond, serif; color: black;">HR Line Manager</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: Garamond, serif; color: black;">BI Author</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: Garamond, serif; color: black;">Object Security(AOR)</span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: Garamond, serif; color: black;">HR Line Manager</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: Garamond, serif; color: black;">OBIA HR Data Sec Role(Dept)</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: Garamond, serif; color: black;">Data Security</span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 0.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: &quot;Courier New&quot;;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">Seed Init blocks/variables in rpd or modify existing ones.&nbsp;</span><a href="https://docs.oracle.com/middleware/11119/biee/BIEMG/variables.htm#BIEMG373" style="color: rgb(149, 79, 114);"><span style="font-family: Garamond, serif; color: black;">https://docs.oracle.com/middleware/11119/biee/BIEMG/variables.htm#BIEMG373</span></a></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-size: 12pt; line-height: 17.12px; font-family: &quot;Courier New&quot;;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">Data Security uptake steps in RPD</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 0.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Wingdings;">&sect;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;</span></span><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">Create init blocks in rpd to read&nbsp;</span><span style="font-family: Garamond, serif;">w_sec_user_objects table for each user. An example to create init block and associated variable is shown below</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">Example query for init block for the data security session variable could be as follows:</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 9pt; line-height: 12.84px; font-family: &quot;Courier New&quot;;">select object_id</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 9pt; line-height: 12.84px; font-family: &quot;Courier New&quot;;">from w_sec_role_users rol_usr,w_sec_user_objects obj</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 9pt; line-height: 12.84px; font-family: &quot;Courier New&quot;;">where rol_usr.username = obj.username</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 9pt; line-height: 12.84px; font-family: &quot;Courier New&quot;;">and rol_usr.dsn = obj.dsn</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 9pt; line-height: 12.84px; font-family: &quot;Courier New&quot;;">and object_name = &lsquo;DEPARTMENT&rsquo;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 9pt; line-height: 12.84px; font-family: &quot;Courier New&quot;;">and upper(username) = upper(&lsquo;:USER&rsquo;)</span><span style="font-family: Garamond, serif; font-size: 12pt;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Wingdings;">&sect;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">Use existing RPD Role filters for logged in user using init blocks/variables or create new role filters if new roles were added in EM to extend OBIA security Role list. Example below shows use of an existing Data Security role to add a data security filter for a Subject Area.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><img alt="" src="https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/ed098aee-234e-477a-841f-4fb0881cb43c/Image/f8660ca31370537860084ecc642ca23c/image004.jpg" style="width: 525px; height: 258px;" /></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Wingdings;">&sect;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">Use the User to Data Object filter directly to control data filter in physical layer. This can be done for existing or new Roles extracted from Fusion Apps.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><img alt="" src="https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/ed098aee-234e-477a-841f-4fb0881cb43c/Image/d5a4ee347ac09f5e28e6b909ae8631af/image005.jpg" style="width: 493px; height: 189px;" /></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-size: 12pt; line-height: 17.12px; font-family: &quot;Courier New&quot;;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">Data Security Roles in physical SQL(rpd access needed for this, for on prem customers)</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Wingdings;">&sect;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;</span></span><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">Roles apply data filters dynamically</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Wingdings;">&sect;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;</span></span><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">If a user has 2 roles ROLE_HR_LOC and ROLE_HR_PAYROLL, the filters are appended to queries using &nbsp;OR not AND</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">E.g. if user has access to Location ID : 100,101,102 and Payroll ID 2000,2001 then filter will be&nbsp;</span><b><span style="font-size: 9pt; line-height: 12.84px; font-family: &quot;Courier New&quot;;">where location_id in (100,101,102) OR payroll_id in (2000,2001)</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-size: 12pt; line-height: 17.12px; font-family: &quot;Courier New&quot;;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">Object Security Roles (rpd access needed for this, for on prem customers)</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Wingdings;">&sect;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;</span></span><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">Object Security roles extracted from FA (also called AoR in Fusion Apps) as groups into weblogic,must be either be:</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">Mapped to BIAuthor,BIAdministrator or BIConsumer roles which are preshipped BI data security roles</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">OR</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">Mapped to newly created custom Roles in Enterprise manager.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">Object Permissions can be changed for those roles as follows.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 0.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><img alt="" src="https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/ed098aee-234e-477a-841f-4fb0881cb43c/Image/e9250c72522e516a2743f5e94823991f/image006.jpg" style="width: 578px; height: 331px;" /></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 0.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-size: 12pt; line-height: 17.12px; font-family: &quot;Courier New&quot;;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">Web catalog Object security can be done for all object security roles, extracted/pre-seeded as follows.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><img alt="" src="https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/ed098aee-234e-477a-841f-4fb0881cb43c/Image/6ed1eee76e0292731b66dc5d721ebc11/image007.png" /></p> <p class="MsoNormal" style="margin: 0in 0in 8pt; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><b><span style="font-family: Garamond, serif;">&nbsp;</span></b></p> <a name="_Toc494896802"></a><a name="_APPENDIX_of_Fusion"></a><span style="font-family: Symbol; color: black;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif; color: black;">APPENDIX of some useful Fusion Apps security tables</span> <a name="_Toc494896803"><span style="font-family: Garamond, serif; color: black;">User assignments</span></a> <p class="MsoListParagraph" style="margin: 0in 0in 8pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">PER_ASG_RESPONSIBILITIES</span></p> <a name="_Toc494896804"><span style="font-family: Garamond, serif; color: black;">Person,User</span></a> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 72.3pt; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">PER_USERS</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 72.3pt; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">PER_PERSON_NAMES_F</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 72.3pt; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">PER_ALL_PEOPLE_F</span></p> <a name="_Toc494896805"><span style="font-family: Garamond, serif; color: black;">Org,Department</span></a> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">FND_TREE_VERSION</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">PER_ORG_TREE_NODE_RF</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">PER_ORG_TREE_NODE_CF</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">HR_ORGANIZATION_UNITS&nbsp;</span></p> <a name="_Toc494896806"><span style="font-family: Garamond, serif; color: black;">Roles</span></a> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">PER_USER_ROLES</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">PER_GENERATED_DATA_ROLES</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">PER_ROLES_DN</span></p> <a name="_Toc494896807"><span style="font-family: Garamond, serif; color: black;">FND table for deriving Security clause</span></a> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">FND_GRANTS</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">FND_OBJECT_INSTANCE_SETS_VL</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">FND_COMPILED_MENU_FUNCTIONS</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">FND_FORM_FUNCTIONS_VL</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">FND_OBJECTS</span></p> <p class="MsoNormal" style="margin: 0in 0in 8pt 0.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">More table and columns information in this link:&nbsp;</span><a href="https://docs.oracle.com/cloud/latest/globalcs_gs/OEDMH/TablesOverview.htm#TablesOverview" style="color: rgb(149, 79, 114);"><span style="font-size: 10pt; line-height: 14.2667px; font-family: Garamond, serif; color: black;">https://docs.oracle.com/cloud/latest/globalcs_gs/OEDMH/TablesOverview.htm#TablesOverview</span></a></p> <p class="MsoNormal" style="margin: 0in 0in 8pt 0.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><b><span style="font-family: Garamond, serif;"><span style="color:#FF0000;">Note:</span>If customers require additional security predicates or objects, the same must be discussed with the Fusion Apps source team to identify the underlying tables and the corresponding SQL&rsquo;s.</span></b></p> <p class="MsoNormal" style="margin: 0in 0in 8pt; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 13pt; line-height: 18.5467px; font-family: Garamond, serif;">&nbsp;</span></p> <a name="_Toc494896808"><span style="font-family: Symbol; color: black;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif; color: black;">APPENDIX for some of the useful SQL&rsquo;s</span></a> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-family: Garamond, serif; color: black;">User to Person ID/Supervisor ID link</span></b></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">select distinct username ,&nbsp;&nbsp; prsn.person_id from&nbsp; per_users usr,per_person_names_f prsn</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">where&nbsp; usr.person_id = prsn.person_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and username = &lsquo;:USER&rsquo;</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-family: Garamond, serif; color: black;">User to Top Org ID</span></b></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">select distinct pu.username,par.top_organization_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">from per_all_people_f papf,</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">per_users pu,</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">per_person_names_f ppnf,</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">per_asg_responsibilities par</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">where pu.username = &lsquo;:USER&rsquo;</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and PAR.person_id = PAPF.person_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and PAPF.Person_id = PU.person_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and PAPF.person_id = PPNF.person_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-family: Garamond, serif; color: black;">Job Roles</span></b></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">select distinct per_generated_data_roles.base_role_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; ,per_roles_dn_base_role.role_common_name job_role_common_name</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; ,per_roles_dn_tl.role_name job_role_name</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; ,per_roles_dn_tl.description job_role_desc</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">from per_generated_data_roles&nbsp; per_generated_data_roles ,per_roles_dn per_roles_dn_base_role&nbsp;&nbsp; , per_roles_dn_tl</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">where per_roles_dn_base_role.role_id = per_generated_data_roles.base_role_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and per_generated_data_roles.base_role_id = per_roles_dn_tl.role_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and&nbsp; per_roles_dn_tl.language = &#39;US&#39;</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-family: Garamond, serif; color: black;">Job Data Roles</span></b></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">select distinct per_user_roles.user_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; ,per_users.username</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; ,per_person_names_f.first_name</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; ,per_person_names_f.last_name</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; ,per_generated_data_roles.base_role_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; ,per_roles_dn_base_role.role_common_name job_role_common_name</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; ,per_roles_dn_tl.role_name job_role_name</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; ,per_roles_dn_tl.description job_role_desc</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">from per_user_roles&nbsp; ,&nbsp; per_users , per_person_names_f&nbsp; , per_generated_data_roles ,per_roles_dn per_roles_dn_base_role , per_roles_dn_tl</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">where per_user_roles.user_id = per_users.user_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and&nbsp;&nbsp; per_person_names_f.person_id = per_users.person_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and&nbsp;&nbsp; per_generated_data_roles.data_role_id = per_user_roles.role_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and&nbsp;&nbsp; per_roles_dn_base_role.role_id = per_generated_data_roles.base_role_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and&nbsp;&nbsp;&nbsp; per_generated_data_roles.base_role_id = per_roles_dn_tl.role_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and&nbsp;&nbsp; per_roles_dn_tl.language = &#39;us&#39;</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-family: Garamond, serif; color: black;">Table level data Filters along with roles</span></b></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">SELECT o.obj_name table_name,</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp; g.grant_type,</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp; g.instance_type,</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp; g.role_name,</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp; s.instance_set_id,</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp; f.function_name,</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp; s.predicate filter_clause</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">FROM fnd_grants g,</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; fnd_object_instance_sets_vl s,</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; fnd_compiled_menu_functions m,</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; fnd_form_functions_vl f,</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; fnd_objects o</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">WHERE</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">o.object_id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = s.object_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">AND g.instance_set_id = s.instance_set_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">AND g.menu_id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = m.menu_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">AND m.function_id&nbsp;&nbsp;&nbsp;&nbsp; = f.function_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">order by g.role_name</span></p> <p class="MsoNormal" style="margin: 0in 0in 8pt; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><b><span style="font-family: Garamond, serif;">&nbsp;</span></b></p> Saurav Mohapatra https://blogs.oracle.com/biapps/how-to-build-fusion-apps-security-in-bi-apps Mon Oct 09 2017 07:00:35 GMT-0400 (EDT) An Intensive Week in Colorado https://danischnider.wordpress.com/2017/10/08/an-intensive-week-in-colorado/ <p>In the last couple of days, I joined several interesting events in Colorado. First, I was able to take part of the “Advanced Data Vault &amp; Ensemble Modeling Summit” at Genesee Academy. After that, I attended the first “Global Data Summit” conference in Golden, Colorado. And finally, I was invited to a very special dinner of the “Boulder Business Intelligence Brain Trust”.</p> <p><span id="more-454"></span></p> <p><a href="https://twitter.com/GeneseeLabs/status/913447588019322880"><img title="advems_1.jpg" src="https://danischnider.files.wordpress.com/2017/10/iadvems_1.jpg?w=599&#038;h=324" alt="Advems 1" width="599" height="324" border="0" /><br /></a><em>All photos from Twitter (click on the photos to see original tweets)</em></p> <h1>Advanced Data Vault &amp; Ensemble Modeling Summit</h1> <p>Twelve Data Vault experts from different parts of the world met in Colorado for two days to exchange knowledge about Data Vault and Ensemble modeling. I expected a course where the two trainers, <a href="https://twitter.com/gohansgo">Hans Hultgren</a> and <a href="https://twitter.com/RemcoBroekmans">Remco Broekmans</a>, will explain us some special patterns of Data Vault modeling. Actually, the idea of this class was more to have an interactive discussion about some new ideas and modeling patterns and to find a common sense for future extensions of Ensemble Modeling and the next version of the CDVDM (Certified Data Vault Data Modeler) training material.</p> <p>In these two intensive days, we had a lot of interesting discussions about Ensemble Logical Modeling (ELM), integrated Hubs, special types of Satellites, key concatenation, Keyed-Instance Links, status tracking Satellites and much more. It was not possible to discuss all topics in detail, but for some of the subjects, we had long and detailed discussions.</p> <p>For me, the best parts of the course were the conversations with the other attendees during the coffee breaks (the coffee was “american-style”, i.e. watery, but the chats were good) and in the evening (with some self-brewed beers of <a href="https://twitter.com/geneseelabsbrew">Genesee Labs Brewing</a>). Because there were so many interesting things to be discussed, we even organized a “bonus track” on Sunday afternoon, where we had an extensive session with <a href="https://twitter.com/DV_Modeling">Dirk Lerner</a> about bi-temporal Satellites and PIT tables. Very complex, but interesting stuff!</p> <p><a href="https://twitter.com/DV_Modeling/status/913564376770142209"><img title="advems_2.jpg" src="https://danischnider.files.wordpress.com/2017/10/iadvems_2.jpg?w=600&#038;h=302" alt="Advems 2" width="600" height="302" border="0" /></a></p> <p>The weekend was also fully organized with hiking (harder than expected with my jet lag and the high altitude in Colorado), karaoke party (I missed that one), bi-temporal discussions (see above), escape room (we finished it in 55 minutes) and of course some nice craft beers (my favorite was the &#8220;I(70)PA&#8221; of <a href="http://www.elranchobrewing.com">El Rancho Brewing Company</a>).</p> <h1>Global Data Summit</h1> <p>After the weekend, the next interesting event started: The first “<a href="https://globaldatasummit.com">Global Data Summit</a>” took place in Golden, Colorado. It was a small, but exciting conference with more than 20 presentations and client cases about data modeling, data science, big data, streaming, data warehouse automation and much more. Two keynote were presented by <a href="https://www.linkedin.com/in/stephen-brobst-70127956/">Stephen Brobst</a> (CTO of Teradata) and <a href="https://twitter.com/rick_vanderlans">Rick van der Lans</a> (Founder of R20/Consultancy BV).</p> <p><a href="https://twitter.com/srobijns/status/914888164644331521"><img title="gds17_keynote_1.jpg" src="https://danischnider.files.wordpress.com/2017/10/igds17_keynote_1.jpg?w=213&#038;h=250" alt="Gds17 keynote 1" width="213" height="250" border="0" /></a> <a href="https://twitter.com/dani_schnider/status/915231720563023872"><img title="gds17_keynote_2.jpg" src="https://danischnider.files.wordpress.com/2017/10/igds17_keynote_2.jpg?w=326&#038;h=250" alt="Gds17 keynote 2" width="326" height="250" border="0" /><br /></a><em>Keynotes of Stephen Brobst and Rick van der Lans</em></p> <p>A highlight for me were the “5 x 5 presentations”, similar to TED talks. Twice a day, five speakers had to present an individual topic in five minutes. I know that it is much harder to speak for 5 minutes than for 45 or more minutes, and I was impressed that most of the speakers managed this challenge excellent.</p> <p><a href="https://twitter.com/dani_schnider/status/915344786386690048"><img title="gds17_5x5_1.jpg" src="https://danischnider.files.wordpress.com/2017/10/igds17_5x5_1.jpg?w=400&#038;h=300" alt="Gds17 5x5 1" width="400" height="300" border="0" /><br /></a><em><a href="https://twitter.com/lensilverston">Len Silverston</a> demonstrates (with his “victim” <a href="https://twitter.com/gohansgo">Hans Hultgren</a>) what to do with all the data that is coming.</em></p> <p><a href="https://twitter.com/dani_schnider/status/915346828547067905"><img title="gds17_5x5_2.jpg" src="https://danischnider.files.wordpress.com/2017/10/igds17_5x5_2.jpg?w=399&#038;h=236" alt="Gds17 5x5 2" width="399" height="236" border="0" /><br /></a><em><a href="https://twitter.com/Claudia_Imhoff">Claudia Imhoff</a> explains in 5 minutes how to lie with statistics.</em></p> <p><a href="https://twitter.com/dani_schnider/status/915350378920648704"><img title="gds17_5x5_3.jpg" src="https://danischnider.files.wordpress.com/2017/10/igds17_5x5_3.jpg?w=400&#038;h=206" alt="Gds17 5x5 3" width="400" height="206" border="0" /><br /></a><em><a href="https://twitter.com/gohansgo">Hans Hultgren</a> finishes the 5 x 5 presentations with a “psychiactric&#8221; speech.</em></p> <h1>BBBT Dinner</h1> <p>After the conference, we were invited by Claudia and Dave Imhoff to a dinner with some of the members of <a href="http://www.bbbt.us">BBBT</a> (Boulder Business Intelligence Brain Trust). The BBBT organization was founded by Claudia Imhoff in 2006 and organizes frequent product presentations with BI tool vendors for the BBBT members. The members are independent BI analysts, experts, consultants, graduate students or educators. Many of them live in Boulder and other parts of Colorado, but BBBT has members worldwide.</p> <p><a href="https://twitter.com/Claudia_Imhoff/status/915377721227792385"><img title="bbbt_dinner.jpg" src="https://danischnider.files.wordpress.com/2017/10/ibbbt_dinner.jpg?w=386&#038;h=415" alt="Bbbt dinner" width="386" height="415" border="0" /></a></p> <p>The seven days in Colorado were intensive, but very interesting for me. I think I need some time to process all these impressions and to have a look at the conference presentations (especially those I missed during the conference). Finally, it was a pleasure to meet a lot of interesting people that I knew before or get to know during the different events.</p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/danischnider.wordpress.com/454/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/danischnider.wordpress.com/454/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=danischnider.wordpress.com&#038;blog=80273571&#038;post=454&#038;subd=danischnider&#038;ref=&#038;feed=1" width="1" height="1" /> Dani Schnider http://danischnider.wordpress.com/?p=454 Sun Oct 08 2017 12:31:30 GMT-0400 (EDT) Oracle Essbase On-Premise versus Oracle Essbase Cloud Service http://blog.performancearchitects.com/wp/2017/10/04/oracle-essbase-on-premise-versus-oracle-essbase-cloud-service/ <p>Author: Andrew Tauro, Performance Architects</p> <p>By now you have most likely seen a lot of material (including posts on our <a href="http://blog.performancearchitects.com/wp/tag/oac/">blog</a><u>) </u>regarding how <a href="https://www.oracle.com/solutions/business-analytics/business-intelligence/essbase/index.html">Essbase</a> has moved to the cloud as <a href="https://cloud.oracle.com/en_US/essbase">Essbase Cloud Service (ESSCS)</a>, which is part of the new <u>Oracle Analytics Cloud (OAC)</u>. You may still be wondering how the feature sets between the two versions of Essbase compare. The good news is that they compare very favorably.</p> <p>Essbase Cloud Service offers the next generation of Essbase product functionality. It is deployed on <a href="https://www.oracle.com/middleware/weblogic/index.html">WebLogic Application Server (WAS)</a>, with a Java-based Essbase Agent. This improves availability and monitoring capabilities via WAS, with most of the features of the old-school, C-based version of Essbase ported over.</p> <p>The solutions are very similar, but also differ in some key areas. Similarities include:</p> <ul> <li>Works with <a href="http://www.oracle.com/technetwork/middleware/smart-view-for-office/overview/index.html">Smart View</a> and other tools that connect to Essbase via the Essbase client toolkit or API, such as <a href="http://www.oracle.com/technetwork/middleware/data-integrator/overview/index.html">Oracle Data Integrator (ODI)</a></li> <li>Supports transparent partitions</li> <li>Supports both Block Storage Option (BSO) and Aggregate Storage Option (ASO) (see our <a href="http://blog.performancearchitects.com/wp/2017/09/13/defining-essbase-storage-options-aso-versus-bso/">blog post</a> on what these options offer for your solution design)</li> <li>Uses Location Aliases, Substitution Variables, Calculation Scripts, and load rules</li> <li>Loads dimensions, data, or both via flat files or relational tables</li> <li>Restricts access via firewall rules, SSL and VPN services</li> </ul> <p>Differences include:</p> <p>&nbsp;</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/Essbase-vs-ESSCS-1.png"><img class="alignnone size-medium wp-image-2143" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/Essbase-vs-ESSCS-1-300x278.png" alt="" width="300" height="278" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/Essbase-vs-ESSCS-1-300x278.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/Essbase-vs-ESSCS-1-768x711.png 768w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/Essbase-vs-ESSCS-1-624x578.png 624w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/Essbase-vs-ESSCS-1.png 879w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Essbase Cloud (ESSCS), while based on a mature product, has not been out for long. However, the product team has been working on releasing additional capabilities at a steady pace. Due to this, we expect some of these differences to disappear soon. In the very near future, ESSCS will open up Essbase as a solution to more customers, just like on-premise Essbase has been doing for years.</p> Melanie Mathews http://blog.performancearchitects.com/wp/?p=2139 Wed Oct 04 2017 05:00:45 GMT-0400 (EDT) Voting Now Open for the 2018 - 2019 Board of Directors http://www.odtug.com/p/bl/et/blogaid=747&source=1 I've written about the values of being a member of ODTUG many times in the past. Today the message I have for you, the paid ODTUG member, is this – you should vote. Voting is now open (9:00 a.m. EDT on October 3, 2017). It ends at 11:59 p.m. EDT on Tuesday October 24, 2017. ODTUG http://www.odtug.com/p/bl/et/blogaid=747&source=1 Tue Oct 03 2017 09:49:25 GMT-0400 (EDT) OBIEE 12c in Docker from scratch https://gianniceresa.com/2017/09/obiee-12c-docker-from-scratch/ <p>I already wrote about Docker and OBIEE in Docker in relation to my <a href="https://github.com/gianniceresa/docker-images" target="_blank" rel="noopener">OBIEE Docker image</a> I published on GitHub.<br /> As it isn&#8217;t always obvious to get started with it, mainly if aren&#8217;t familiar with Docker, I decided to write this post which will cover from A to Z how you can get OBIEE running Docker covering: building the images, running the DB, start / stop OBIEE.<br /> All you will need for it is a host (a PC running linux, a server, a VM) with Docker installed.</p> <p>The process is covered with screenshots for each step and has been based on Oracle Database 12c R1 Docker container using the image provided on <a href="https://github.com/oracle/docker-images/tree/master/OracleDatabase" target="_blank" rel="noopener">https://github.com/oracle/docker-images/tree/master/OracleDatabase</a> and OBIEE 12.2.1.2 using the image provided on <a href="https://github.com/gianniceresa/docker-images/tree/master/OracleBIEE" target="_blank" rel="noopener">https://github.com/gianniceresa/docker-images/tree/master/OracleBIEE</a>.</p> <p>You can freely use another version of OBIEE (12.2.1.0.0, 12.2.1.1.0 or 12.2.1.3.0) or database (make sure it&#8217;s supported by the selected OBIEE version looking at the relative <a href="http://www.oracle.com/technetwork/middleware/ias/downloads/fusion-certification-100350.html" target="_blank" rel="noopener">certification matrix</a>.<br /> You can also use a different version of Java if wanted (again check the certification matrix). If you decide to use a different Java make sure you update the Checksum.md5 file with the new name and checksum and the filename inside the Dockerfile (&#8220;INSTALL_FILE_JDK&#8221; variable).</p> <blockquote><p>The Oracle Database Docker image hosted on GitHub can change at any time, so the parameters required by the container can be different than the ones used here. Have a look at the GitHub page to read through the various parameters.</p> <p>&nbsp;</p> <h4>More options available</h4> <p>There are various parameters accepted by both the OBIEE and database Docker images, you find examples and list of variables on GitHub.</p></blockquote> <h2>Getting the binaries</h2> <div id="attachment_443" style="width: 715px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_01.png"><img class="size-full wp-image-443" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_01.png" alt="Docker OBIEE12c from scratch: empty folders" width="705" height="218" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_01.png 705w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_01-300x93.png 300w" sizes="(max-width: 705px) 100vw, 705px" /></a><p class="wp-caption-text">Before to start I just created few empty folders to keep things &#8220;clean&#8221; (and easy to delete once done).</p></div> <div id="attachment_444" style="width: 1542px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_02.png"><img class="size-full wp-image-444" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_02.png" alt="Docker OBIEE12c from scratch: download database" width="1532" height="1253" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_02.png 1532w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_02-300x245.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_02-768x628.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_02-1024x838.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_02-1080x883.png 1080w" sizes="(max-width: 1532px) 100vw, 1532px" /></a><p class="wp-caption-text">Download the Oracle Database binaries. Version 12.1.0.2.0 will be good, binaries for Linux x86-64.</p></div> <div id="attachment_445" style="width: 1544px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_03.png"><img class="size-full wp-image-445" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_03.png" alt="Docker OBIEE12c from scratch: download OBIEE" width="1534" height="1060" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_03.png 1534w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_03-300x207.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_03-768x531.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_03-1024x708.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_03-1080x746.png 1080w" sizes="(max-width: 1534px) 100vw, 1534px" /></a><p class="wp-caption-text">Download the OBIEE binaries for the installation. Weblogic and OBIEE for Linux x86-64-bit.</p></div> <div id="attachment_446" style="width: 1547px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_04.png"><img class="size-full wp-image-446" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_04.png" alt="Docker OBIEE12c from scratch: download Oracle JDK" width="1537" height="564" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_04.png 1537w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_04-300x110.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_04-768x282.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_04-1024x376.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_04-1080x396.png 1080w" sizes="(max-width: 1537px) 100vw, 1537px" /></a><p class="wp-caption-text">Download Oracle JDK 8. Version 8u101, RPM installer for Linux x64.</p></div> <div id="attachment_447" style="width: 993px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_05.png"><img class="size-full wp-image-447" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_05.png" alt="Docker OBIEE12c from scratch: waiting downloads" width="983" height="1181" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_05.png 983w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_05-250x300.png 250w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_05-768x923.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_05-852x1024.png 852w" sizes="(max-width: 983px) 100vw, 983px" /></a><p class="wp-caption-text">Wait for all the binaries to be downloaded, it&#8217;s few Gb of download, will take some time.</p></div> <h2>Building the Docker images for Oracle Database 12c R1 and OBIEE</h2> <div id="attachment_448" style="width: 901px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_10.png"><img class="size-full wp-image-448" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_10.png" alt="Docker OBIEE12c from scratch: clone database images from GIT" width="891" height="360" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_10.png 891w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_10-300x121.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_10-768x310.png 768w" sizes="(max-width: 891px) 100vw, 891px" /></a><p class="wp-caption-text">Clone the GitHub Oracle repository containing Docker images build files. A &#8220;docker-images&#8221; folder is created.</p></div> <div id="attachment_449" style="width: 1072px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_11.png"><img class="size-full wp-image-449" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_11.png" alt="Docker OBIEE12c from scratch: database files before to build" width="1062" height="526" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_11.png 1062w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_11-300x149.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_11-768x380.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_11-1024x507.png 1024w" sizes="(max-width: 1062px) 100vw, 1062px" /></a><p class="wp-caption-text">Copy the binaires for the database in the 12.1.0.2 folder, this is the final content of the folder before to build the image.</p></div> <div id="attachment_450" style="width: 909px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_12.png"><img class="size-full wp-image-450" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_12.png" alt="Docker OBIEE12c from scratch: build database image" width="899" height="712" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_12.png 899w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_12-300x238.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_12-768x608.png 768w" sizes="(max-width: 899px) 100vw, 899px" /></a><p class="wp-caption-text">To build the database image a script is provided. By calling &#8220;buildDockerImage.sh&#8221; you first see the parameters available.</p></div> <div id="attachment_451" style="width: 996px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_13.png"><img class="size-full wp-image-451" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_13.png" alt="Docker OBIEE12c from scratch: database image built successfully" width="986" height="317" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_13.png 986w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_13-300x96.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_13-768x247.png 768w" sizes="(max-width: 986px) 100vw, 986px" /></a><p class="wp-caption-text">The Oracle database 12.1.0.2 image is successfully built.</p></div> <div id="attachment_452" style="width: 969px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_20.png"><img class="size-full wp-image-452" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_20.png" alt="Docker OBIEE12c from scratch: clone OBIEE images from GIT" width="959" height="360" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_20.png 959w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_20-300x113.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_20-768x288.png 768w" sizes="(max-width: 959px) 100vw, 959px" /></a><p class="wp-caption-text">Clone my GitHub repository containing Docker images build files for OBIEE. A &#8220;docker-images&#8221; folder is created.</p></div> <div id="attachment_453" style="width: 1177px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_21.png"><img class="size-full wp-image-453" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_21.png" alt="Docker OBIEE12c from scratch: OBIEE files before to build" width="1167" height="431" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_21.png 1167w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_21-300x111.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_21-768x284.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_21-1024x378.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_21-1080x399.png 1080w" sizes="(max-width: 1167px) 100vw, 1167px" /></a><p class="wp-caption-text">Copy the binaires for OBIEE (including the JDK) in the 12.2.1.2.0 folder, this is the final content of the folder before to build the image.</p></div> <div id="attachment_454" style="width: 787px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_22.png"><img class="size-full wp-image-454" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_22.png" alt="Docker OBIEE12c from scratch: build OBIEE image" width="777" height="609" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_22.png 777w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_22-300x235.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_22-768x602.png 768w" sizes="(max-width: 777px) 100vw, 777px" /></a><p class="wp-caption-text">To build the OBIEE image a script is provided. By calling &#8220;buildDockerImage.sh&#8221; you first see the parameters available.</p></div> <div id="attachment_455" style="width: 1081px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_23.png"><img class="size-full wp-image-455" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_23.png" alt="Docker OBIEE12c from scratch: OBIEE image built successfully" width="1071" height="315" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_23.png 1071w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_23-300x88.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_23-768x226.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_23-1024x301.png 1024w" sizes="(max-width: 1071px) 100vw, 1071px" /></a><p class="wp-caption-text">The Oracle OBIEE 12.2.1.2.0 image is successfully built.</p></div> <h2>Run a database container and an OBIEE container</h2> <div id="attachment_456" style="width: 1064px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_30.png"><img class="size-full wp-image-456" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_30.png" alt="Docker OBIEE12c from scratch: list available images" width="1054" height="157" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_30.png 1054w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_30-300x45.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_30-768x114.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_30-1024x153.png 1024w" sizes="(max-width: 1054px) 100vw, 1054px" /></a><p class="wp-caption-text">Check the available Docker images on your host: the freshly built database and OBIEE are there as well as oraclelinux:7-slim, which is the base image used by both the database and OBIEE.</p></div> <div id="attachment_457" style="width: 1329px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_31.png"><img class="size-full wp-image-457" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_31.png" alt="Docker OBIEE12c from scratch: start database container" width="1319" height="183" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_31.png 1319w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_31-300x42.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_31-768x107.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_31-1024x142.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_31-1080x150.png 1080w" sizes="(max-width: 1319px) 100vw, 1319px" /></a><p class="wp-caption-text">Create and run the Oracle database Docker container for the first time. Few parameters are required. Check the logs of the container to see what happen inside.</p></div> <div id="attachment_458" style="width: 910px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_32.png"><img class="size-full wp-image-458" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_32.png" alt="Docker OBIEE12c from scratch: database ready, change password" width="900" height="530" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_32.png 900w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_32-300x177.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_32-768x452.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></a><p class="wp-caption-text">Once the message &#8220;DATABASE IS READY TO USE!&#8221; is visible it means your database is ready. It&#8217;s time to set a new password replacing the random one generated. (Ctrl+C to exit the log command)</p></div> <div id="attachment_459" style="width: 909px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_33.png"><img class="size-full wp-image-459" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_33.png" alt="Docker OBIEE12c from scratch: start OBIEE container" width="899" height="306" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_33.png 899w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_33-300x102.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_33-768x261.png 768w" sizes="(max-width: 899px) 100vw, 899px" /></a><p class="wp-caption-text">Create and run the OBIEE Docker container for the first time. Few parameters are required. Check the logs of the container to see what happen inside. Remember to replace &#8220;192.168.120.81&#8221; the IP address of the host where Docker is running (but not 127.0.0.1 as this means the Docker container itself).</p></div> <div id="attachment_460" style="width: 964px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_34.png"><img class="size-full wp-image-460" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_34.png" alt="Docker OBIEE12c from scratch: OBIEE container ready" width="954" height="388" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_34.png 954w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_34-300x122.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_34-768x312.png 768w" sizes="(max-width: 954px) 100vw, 954px" /></a><p class="wp-caption-text">Once you see the status of components as &#8220;RUNNING&#8221; it means OBIEE is ready. (Exit the log command by pressing Ctrl+C)</p></div> <div id="attachment_461" style="width: 595px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_35.png"><img class="size-full wp-image-461" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_35.png" alt="Docker OBIEE12c from scratch: find mapped port for OBIEE" width="585" height="436" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_35.png 585w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_35-300x224.png 300w" sizes="(max-width: 585px) 100vw, 585px" /></a><p class="wp-caption-text">Get the ports Docker mapped for the OBIEE container (dynamic mapping). 9502 is the OBIEE front-end.</p></div> <div id="attachment_462" style="width: 1408px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_36.png"><img class="size-full wp-image-462" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_36.png" alt="Docker OBIEE12c from scratch: open OBIEE in a browser" width="1398" height="781" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_36.png 1398w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_36-300x168.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_36-768x429.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_36-1024x572.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_36-1080x603.png 1080w" sizes="(max-width: 1398px) 100vw, 1398px" /></a><p class="wp-caption-text">Open the address (ip + port) in your browser and test if OBIEE works. By default the login is &#8220;weblogic&#8221; and the password &#8220;Admin123&#8221;.</p></div> <h2>Stop the OBIEE container and the database container</h2> <div id="attachment_463" style="width: 1109px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_40.png"><img class="size-full wp-image-463" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_40.png" alt="Docker OBIEE12c from scratch: check status of containers and stop OBIEE and database" width="1099" height="218" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_40.png 1099w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_40-300x60.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_40-768x152.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_40-1024x203.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_40-1080x214.png 1080w" sizes="(max-width: 1099px) 100vw, 1099px" /></a><p class="wp-caption-text">Check the status of the Docker containers, both OBIEE and the database must be up. Stop the containers in the right order: OBIEE first, database after.</p></div> <div id="attachment_464" style="width: 1254px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_41.png"><img class="size-full wp-image-464" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_41.png" alt="Docker OBIEE12c from scratch: check status of containers once stopped" width="1244" height="128" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_41.png 1244w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_41-300x31.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_41-768x79.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_41-1024x105.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_41-1080x111.png 1080w" sizes="(max-width: 1244px) 100vw, 1244px" /></a><p class="wp-caption-text">Checking the new status of the Docker containers show both are &#8220;exited&#8221;.</p></div> <h2>Restart the containers: content is persisted, nothing is lost</h2> <div id="attachment_465" style="width: 1233px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_42.png"><img class="size-full wp-image-465" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_42.png" alt="Docker OBIEE12c from scratch: restart database and check logs" width="1223" height="169" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_42.png 1223w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_42-300x41.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_42-768x106.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_42-1024x142.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_42-1080x149.png 1080w" sizes="(max-width: 1223px) 100vw, 1223px" /></a><p class="wp-caption-text">Restart the containers in the right order: database first and OBIEE after. OBIEE must be started only when the database is ready.</p></div> <div id="attachment_466" style="width: 987px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_43.png"><img class="size-full wp-image-466" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_43.png" alt="Docker OBIEE12c from scratch: database ready" width="977" height="260" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_43.png 977w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_43-300x80.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_43-768x204.png 768w" sizes="(max-width: 977px) 100vw, 977px" /></a><p class="wp-caption-text">The database is ready again so it&#8217;s now possible to start OBIEE.</p></div> <div id="attachment_467" style="width: 995px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_44.png"><img class="size-full wp-image-467" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_44.png" alt="Docker OBIEE12c from scratch: restart OBIEE and check logs" width="985" height="168" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_44.png 985w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_44-300x51.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_44-768x131.png 768w" sizes="(max-width: 985px) 100vw, 985px" /></a><p class="wp-caption-text">Start the OBIEE container and check the logs.</p></div> <div id="attachment_468" style="width: 814px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_45.png"><img class="size-full wp-image-468" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_45.png" alt="Docker OBIEE12c from scratch: OBIEE ready again, find new port" width="804" height="865" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_45.png 804w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_45-279x300.png 279w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_45-768x826.png 768w" sizes="(max-width: 804px) 100vw, 804px" /></a><p class="wp-caption-text">The OBIEE Docker container is up again, find the new mapped port. Every time you restart the container the OBIEE ports can be mapping to different port numbers.</p></div> <div id="attachment_469" style="width: 1136px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_46.png"><img class="size-full wp-image-469" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_46.png" alt="Docker OBIEE12c from scratch: check status of containers, all UP again" width="1126" height="128" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_46.png 1126w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_46-300x34.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_46-768x87.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_46-1024x116.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_46-1080x123.png 1080w" sizes="(max-width: 1126px) 100vw, 1126px" /></a><p class="wp-caption-text">The status shows both containers up again.</p></div> <p>That&#8217;s it, you now have a Docker based OBIEE environment. You can run multiple containers in parallel, run multiple versions. Once you are done or you destroyed an environment while trying things just remove the container (&#8220;docker rm&#8221;) and start a new one.</p> <h2>tl;dr</h2> <p>If you just need the piece of code :</p><pre class="crayon-plain-tag"># - Build database image cd ~ mkdir db cd db git clone https://github.com/oracle/docker-images.git cd docker-images/OracleDatabase/dockerfiles # ToDo: copy binaries into ./12.1.0.2 ./buildDockerImage.sh -v 12.1.0.2 -e # - Build OBIEE image cd ~ mkdir bi cd bi git clone https://github.com/gianniceresa/docker-images.git cd docker-images/OracleBIEE # ToDo: copy binaries into ./12.2.1.2.0 ./buildDockerImage.sh -v 12.2.1.2.0 cd ~ # ToDo: delete ./db and ./bi and all their content (not needed anymore) # - Run containers docker run -d -p 1521:1521 --stop-timeout 600 --name database oracle/database:12.1.0.2-ee docker logs -f database # Ctrl+C when the message "DATABASE IS READY TO USE!" is visible docker exec database ./setPassword.sh Admin123 # replace 192.168.120.81 by your docker host address docker run -d -P \ --name obiee_12.2.1.2.0 \ --stop-timeout 600 \ -e "BI_CONFIG_RCU_DBSTRING=192.168.120.81:1521:orclpdb1" \ -e "BI_CONFIG_RCU_PWD=Admin123" \ oracle/obiee:12.2.1.2.0 docker logs -f obiee_12.2.1.2.0 # Ctrl+C when the components status "RUNNING" is visible docker port obiee_12.2.1.2.0</pre><p>&nbsp;</p> <p>The post <a rel="nofollow" href="https://gianniceresa.com/2017/09/obiee-12c-docker-from-scratch/">OBIEE 12c in Docker from scratch</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=470 Sat Sep 30 2017 11:45:06 GMT-0400 (EDT) OAC Datasets and Connections in Synopsis http://beyond-just-data.blogspot.com/2017/09/oac-datasets-and-connections-in-synopsis.html <span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">it is late in the evening of Sept. 29, 2017 or early in the morning of Sept. 30, 2017...Regardless...I cannot sleep!</span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">I noticed that my Galaxy Note 8 updated my Oracle Synopsis App.&nbsp; I see that it is a 2.0 release...I am not one to read manuals and updates right off so I started looking around on the app to see what was new.&nbsp; The first thing that caught my eye was in the Settings.&nbsp; Something new stood out...Smart Lock on OAC</span><br /><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><a href="https://4.bp.blogspot.com/-Rb5wNi-CxUE/Wc8Zhbmat8I/AAAAAAAALEI/a0u_-uNxXgs1y9GVAWz4nJOGePnZreSagCLcBGAs/s1600/20170929_185830.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="779" height="400" src="https://4.bp.blogspot.com/-Rb5wNi-CxUE/Wc8Zhbmat8I/AAAAAAAALEI/a0u_-uNxXgs1y9GVAWz4nJOGePnZreSagCLcBGAs/s400/20170929_185830.jpg" width="193" /></a></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Well that really got me wondering...Can my Synopsis connect to my OAC instance and if so what can I access.&nbsp; So I went to the main screen and created a new project and there was an option to connect to OAC.</span><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><a href="https://2.bp.blogspot.com/-Evl5c5CNudE/Wc8aWFER-oI/AAAAAAAALEQ/0ijfmSv4l7Q6XKelhaZkrG1ss2lJVAWVACLcBGAs/s1600/20170929_185635.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="779" height="400" src="https://2.bp.blogspot.com/-Evl5c5CNudE/Wc8aWFER-oI/AAAAAAAALEQ/0ijfmSv4l7Q6XKelhaZkrG1ss2lJVAWVACLcBGAs/s400/20170929_185635.jpg" width="193" /></a></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">So I figured, in for a penny in for a pound.&nbsp; I tapped (because we all know you do not click on a tablet) and I got a sign on screen.</span><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><a href="https://2.bp.blogspot.com/-2OxpFDuxOa4/Wc8asQTAFXI/AAAAAAAALEU/hY8iWc8c-NM3RtEAOdbX0q0MJhvEkUp0QCLcBGAs/s1600/Screenshot_20170929-230102.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="779" height="400" src="https://2.bp.blogspot.com/-2OxpFDuxOa4/Wc8asQTAFXI/AAAAAAAALEU/hY8iWc8c-NM3RtEAOdbX0q0MJhvEkUp0QCLcBGAs/s400/Screenshot_20170929-230102.jpg" width="193" /></a></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">I provided my credentials and I was presented with a list of data sources. I had just created a data file named <b>Kool Kart Dataset</b> from a Data Flow I was working on and I noticed it was in my list.</span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-JIPPm2hi5_8/Wc8wlyedmlI/AAAAAAAALEk/S93b6Z29iA0N4Jx7TRuzx1283_kpNItHACEwYBhgL/s1600/20170929_234137.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="779" height="400" src="https://3.bp.blogspot.com/-JIPPm2hi5_8/Wc8wlyedmlI/AAAAAAAALEk/S93b6Z29iA0N4Jx7TRuzx1283_kpNItHACEwYBhgL/s400/20170929_234137.jpg" width="193" /></a></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Checking my Data Sources in OAC i see most of the same list...</span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-cqurjVQslw0/Wc8w7HHjC3I/AAAAAAAALEs/UbwZcKLfiUkZ3J6oKPzCSRdapVdiorf8ACEwYBhgL/s1600/2017-09-29_23-27-50.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="828" data-original-width="933" height="353" src="https://3.bp.blogspot.com/-cqurjVQslw0/Wc8w7HHjC3I/AAAAAAAALEs/UbwZcKLfiUkZ3J6oKPzCSRdapVdiorf8ACEwYBhgL/s400/2017-09-29_23-27-50.png" width="400" /></a></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">The only difference is that my Subject Areas (the purple icons at the top of the list) are not listed in my Synopsis menu...This seems right since Synopsis seems top operate from a data file based on columns of Dimensions and Facts.&nbsp; So what happens if I try to load up one of the Essbase Connections...I tapped on Sample.Basic and...</span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><a href="https://3.bp.blogspot.com/-yKFq7Zxt4tw/Wc8wnLxLi0I/AAAAAAAALEw/BptRUlIJm3IHnisEzcT55w6rstGbe7WmQCEwYBhgL/s1600/Screenshot_20170929-231947.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="779" height="400" src="https://3.bp.blogspot.com/-yKFq7Zxt4tw/Wc8wnLxLi0I/AAAAAAAALEw/BptRUlIJm3IHnisEzcT55w6rstGbe7WmQCEwYBhgL/s400/Screenshot_20170929-231947.jpg" width="193" /></a></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Well that was educational.</span><br /><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">So I tapped on my </span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><b>Kool Kart Dataset</b>.&nbsp; And it loaded up into Synopsis with some quick analyses based on the data in the file.</span><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-q0qgGE4Ymqk/Wc8z_cH8R6I/AAAAAAAALE4/uC0R9MvbUg4H3P6RkcxKZmHTH5PjIu3bACLcBGAs/s1600/Screenshot_20170930-010159.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="779" height="400" src="https://3.bp.blogspot.com/-q0qgGE4Ymqk/Wc8z_cH8R6I/AAAAAAAALE4/uC0R9MvbUg4H3P6RkcxKZmHTH5PjIu3bACLcBGAs/s400/Screenshot_20170930-010159.jpg" width="193" /></a></div><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">While it did a pretty good job of interpreting the data in the data file it treated the <b>Year </b>column as a measure as indicated by it being displayed on the X-axis with <b>Revenue </b>and<b> Number of Orders</b>.</span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /><b></b></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Well that is something to investigate further.&nbsp;&nbsp;</span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /><b></b></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">The ability to connect to OAC, display content in Synopsis is a huge leap forward in mobile analytics.&nbsp; Oh and by the way, did you know Synopsis is FREE...Look for it on Apple iTunes and Google Play.</span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /><b></b></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /><b></b></span> Wayne D. Van Sluys tag:blogger.com,1999:blog-7768091516190336427.post-439100396311606439 Sat Sep 30 2017 02:12:00 GMT-0400 (EDT) Irish people presenting at OOW http://www.oralytics.com/2017/09/irish-people-presenting-at-oow.html <p>Here is a list of presentations at Oracle Open World and JavaOne in 2017, that will be given by people and partners based in Ireland.</p> <p>(I'll update this list if I find additional presentations)</p> <style type="text/css">table.myTable { border-collapse:collapse; } table.myTable td, table.myTable th { border:1px solid black;padding:5px; } </style> <table class="myTable"><th width="50">Day</th><th width="80">Time</th><th width="300">Presentation</th><th width="130">Location</th></tr><tr><td style="width:30px;">Sunday</td><td>13:45-14:30</td><td>SQL: One Language to Rule All Your Data [OOW SUN1238] <p>Brendan Tierney, Oralytics</p><p>SQL is a very powerful language that has been in use for almost 40 years. SQL comes with many powerful techniques for analyzing your data, and you can analyze data outside the database using SQL as well. Using the new Oracle Big Data SQL it is now possible to analyze data that is stored in a database, in Hadoop, and in NoSQL all at the same time. This session explores the capabilities in Oracle Database that allow you to work with all your data. Discover how SQL really is the unified language for processing all your data, allowing you to analyze, process, run machine learning, and protect all your data. </p><p>Hopefully this presentation will be a bit of Fun! For those who have been working with the database for a long time, we can sometimes forget what we can really do. For those starting out in the career may not realise what the database can do. The presentation delivers an important message while having a laugh or two (probably at me).</p><td>Marriott Marquis (Golden Gate Level) - Golden Gate C1/C2</td> </tr> <tr><td style="width:30px;">Monday</td><td>16:30-17:15</td><td>ESB Networks Automates Core IT Infrastructure and Grid Operations [CON7878] <p>Simon Holt, DBA / Technical Architect, ESB Networks</p><p>Andrew Walsh, OMS Application Support, ESB</p><p>In this session learn how ESB Networks deployed Oracle Utilities Network Management System Release 1.12 on a complete Oracle SuperCluster. Hear about the collaboration between multiple Oracle business units and the in-house expertise that delivered an end-to-end solution. This upgrade is an important step toward expanding ESB Network’s future network operations vision. Her about the challenges, the process of choosing a COTS solution, cybersecurity, and implementation. The session also explores the benefits the new system delivered when managing the effects of large-scale weather events, as well as the technical challenges of deploying a combined hardware and software solution.</p></p></td><td>Park Central (Floor 2) - Metropolitan I</td> </tr> <tr><td style="width:30px;">Monday</td><td>16:45-17:30</td><td>Automation and Innovation for Application Management and Support [CON7862] <p>Raja Roy, Associate Partner, IBM Ireland</p><p>Automation and innovation are transforming the way application support and development projects are being executed. Market trends show three fundamental shifts: innovation to improve quality of service delivery, the emergence of knowledge-based systems with capabilities for self-service and self-heal, and leveraging the power of the cloud to move capital expenditures to operating expenditures for enhanced functionality. In this session see how IBM introduced innovation in deployments globally to help customers achieve employee and business productivity and enhanced quality of services.</p></p></td><td>Moscone West - Room 3022</td> </tr> <tr><td style="width:30px;">Tuesday</td><td>12:15-13:00</td><td>DMigrating Oracle E-Business Suite to Oracle IaaS: A Customer Journey [CON1848] <p>Ken MacMahon, IT, Version 1</p><p>Ken Lynch, Head of IT, Irish Life</p><p>Simon Joyce, Consultant / Contractor, Version 1 Software</p><p>In this session hear about a leading global insurance provider’s experience of migrating Oracle E-Business Suite to Oracle Cloud. This session includes a discussion of the considerations for Oracle Iaas/PaaS vs. alternatives, the total cost of ownership for Oracle IaaS vs. on-premises solutions, the key project and support issues, the benefits of IaaS, and tips and tricks. Gain insights that can help others on their journey with Oracle IaaS generally and with Oracle E-Business Suite specifically.</p></p></td><td>Moscone West - Room 2001</td> </tr> <tr><td style="width:30px;">Wednesday</td><td>14:00-14:45</td><td>Ireland's An Post: Customer Analytics Using Oracle Analytics Cloud [CON7176] <p>Tony Cassidy, CEO, Vertice</p><p>John Hagerty, Oracle</p><p>An Post, the Republic of Ireland’s state-owned provider of postal services, is an organization in transformation. It has used data and analytics to create innovations that led to cost savings and better sustainability. The current focus—customer analytics for a new line of business called Parcels and Packets—utilizes Oracle Analytics Cloud to externalize pertinent data to clients through a portal in a secure, effective, and easy-to-manage environment. In this session hear from An Post and its partner, Vertice, as they discuss the architecture and solution, along with recommendations for ensuring success using Oracle Analytics Cloud.</p></p></td><td>Moscone West - Room 3009</td> </tr> <tr><td style="width:30px;">Thursday</td><td>13:45-14:30</td><td>Is SQL the Best Language for Statistics and Machine Learning? [OOW and JavaOne CON7350] <p>Brendan Tierney, Oralytics</p><p>Did you know that Oracle Database comes with more than 300 statistical functions? And most of these statistical functions are available in all versions of Oracle Database? Most people do not seem to know this. When we hear about people performing statistical analytics, we hear them talking about Excel and R, but what if we could do statistical analysis in the database without having to extract any data onto client machines? This presentation explores the various statistical areas available in Oracle Database and gives several demonstrations. We can also greatly expand our statistical capabilities by using Oracle R Enterprise with the embedded capabilities in SQL.</p><p>This presentation is just one of the 14 presentations that are scheduled for the Thursday! I believe this session is already fully booked, but you can still add yourself to the wait list.</p></p></td><td>Marriott Marquis (Golden Gate Level) - Golden Gate B</td> </tr></table> Brendan Tierney tag:blogger.com,1999:blog-4669933501315263808.post-8917482825588471532 Fri Sep 29 2017 08:51:00 GMT-0400 (EDT) Syntax Issues with INMEMORY Column Clause https://danischnider.wordpress.com/2017/09/28/syntax-issues-with-inmemory-column-clause/ <p>With Oracle Database In-Memory, it is possible to populate individual columns of a table into the In-Memory Column Store. This is very useful for large tables, if only the frequently used columns should be populated to safe memory. The SQL syntax to define this seems to be straight-forward, but does not always work as expected.</p> <p><span id="more-439"></span></p> <p>Let’s assume we want to create a new table SALES_IM (as a copy of the SH.SALES table. The table should be configured as INMEMORY, except the rarely used columns CHANNEL_ID and PROMO_ID. The syntax diagrams of the CREATE TABLE and ALTER TABLE statements show us several options (Source: <em>Oracle Database 12c Release 2, Database SQL Language Reference</em>):</p> <p><img title="inmemory_syntax.jpg" src="https://danischnider.files.wordpress.com/2017/09/iinmemory_syntax1.jpg?w=600&#038;h=397" alt="Inmemory syntax" width="600" height="397" border="0" /></p> <p>The <em>inmemory_table_clause</em> defines whether the table is populated to the In-Memory Columns Store (IMCS) or not. With the <em>inmemory_column_clause</em>, we can turn individual columns on or off. At least, that’s what I expect. For the specific case above, I use the following statement:</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>CREATE TABLE sales_im INMEMORY</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;">NO INMEMORY (channel_id, promo_id)</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>AS SELECT * FROM sh.sales;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p>Here, we already have the first surprise: Instead of a new table SALES_IM, we will get an error message. It seems that the syntax of the <em>inmemory_column_clause</em> is not supported in the CREATE TABLE statement, neither in Oracle 12.1.0.2 nor in 12.2.0.1.</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;">ORA-00922: missing or invalid option</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p>Fortunately, this issue can be solved with two separate commands. First, the whole table must be set to INMEMORY, and in a second step, the unneeded columns are excluded. The following statements work fine:</p> <div> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>CREATE TABLE sales_im INMEMORY</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>AS SELECT * FROM sh.sales;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>ALTER TABLE sales_im NO INMEMORY (channel_id, promo_id);</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p>With a query on V$IM_COLUMN_LEVEL, we can verify that the table is now populated correctly. All columns except CHANNEL_ID and PROMO_ID are available in the IMCS.</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>SELECT column_name, inmemory_compression</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>  FROM v$im_column_level</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> WHERE table_name = &#8216;SALES_IM&#8217;;</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>COLUMN_NAME          INMEMORY_COMPRESSION</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>PROD_ID              DEFAULT             </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>CUST_ID              DEFAULT             </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>TIME_ID              DEFAULT             </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>CHANNEL_ID           NO INMEMORY         </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>PROMO_ID             NO INMEMORY         </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>QUANTITY_SOLD        DEFAULT             </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>AMOUNT_SOLD          DEFAULT             </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p>With the keywords INMEMORY and NO INMEMORY, it is possible to change the columns in the IMCS whenever you want. To show this, we turn off INMEMORY for column TIME_ID, and in a second step, turn it on for column CHANNEL_ID. Note that the first INMEMORY keyword in both statements is on table level, the second [NO] INMEMORY on column level. Actually, the first one is optional, because the table is already set to INMEMORY.</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span> </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>ALTER TABLE sales_im INMEMORY NO INMEMORY (time_id);</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>ALTER TABLE sales_im INMEMORY INMEMORY (channel_id);</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p>As expected, TIME_ID is not in the IMCS anymore, but CHANNEL_ID is now populated:</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>COLUMN_NAME          INMEMORY_COMPRESSION</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>PROD_ID              DEFAULT             </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>CUST_ID              DEFAULT             </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>TIME_ID              NO INMEMORY         </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>CHANNEL_ID           DEFAULT             </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>PROMO_ID             NO INMEMORY         </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>QUANTITY_SOLD        DEFAULT             </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>AMOUNT_SOLD          DEFAULT             </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p>This example shows that it is always possible to switch the INMEMORY behavior for each individual column of a table that is set to INMEMORY. But does it work the other way, too? I do not want to populate the whole table to IMCS, but only the three columns PROD_ID, CUST:ID and TIME_ID. Based on the syntax diagrams, the following command should be allowed:</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>ALTER TABLE sales_im NO INMEMORY INMEMORY (prod_id, cust_id, time_id);</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p>In Oracle 12.1.0.2, this statement fails with an error message. The message is clear: This feature works only if the table is set to INMEMORY. So, we first must populate the whole table and then exclude the columns we don’t want to have in the IMCS.</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;">ORA-64361: column INMEMORY clause may only be specified for an inmemory table</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;">  </p> <p>In Oracle 12.2.0.1, this restriction seems to be gone, the statement above can be executed without an error. But when we look at the result in V$IM_COLUMN_LEVEL, it’s not what we would expect:</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>SELECT column_name, inmemory_compression</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>  FROM v$im_column_level</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span> WHERE table_name = &#8216;SALES_IM&#8217;;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span><br /></span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>no rows selected</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p>When the table is set to NO INMEMORY, it is not possible to populate individual columns to the IMCS. That’s very sad.</p> <p>The workaround is to set INMEMORY on table level and then specify all columns of the table either in the INMEMORY column clause or the NO INMEMORY column clause. This works in 12.1 and 12.2:</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>ALTER TABLE sales_im INMEMORY</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>   INMEMORY (prod_id, cust_id, time_id)</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>NO INMEMORY (promo_id, channel_id, amount_sold, quantity_sold);</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p>The result is now what we wanted to define: The first three columns of the table are in IMCS, all other columns are not.</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>SELECT column_name, inmemory_compression</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>  FROM v$im_column_level</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span> WHERE table_name = &#8216;SALES_IM&#8217;;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>COLUMN_NAME          INMEMORY_COMPRESSION</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>PROD_ID              DEFAULT             </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>CUST_ID              DEFAULT             </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>TIME_ID              DEFAULT             </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>CHANNEL_ID           NO INMEMORY         </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>PROMO_ID             NO INMEMORY         </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>QUANTITY_SOLD        NO INMEMORY         </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>AMOUNT_SOLD          NO INMEMORY         </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p> </p> <h1>Summary</h1> <p>Although it is possible to define the INMEMORY clause for individual columns of a table, not all syntax combinations are allowed. With CREATE TABLE, only the whole table can be populated. With ALTER TABLE, is is allowed to define the INMEMORY or NO INMEMORY clause on column level, but only if the table is set to INMEMORY. If NO INMEMORY is set on table level, the behavior depends on the database version. In version 12.1, we get an error message (which is bad). In version 12.2, the column definitions for INMEMORY are just ignored (which is even worse).</p> <p>Hopefully, these issues will be fixed in the next versions, either with supporting all combinations, or at least with correcting the syntax diagrams in the documentation.</p> <p> </p> </div><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/danischnider.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/danischnider.wordpress.com/439/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=danischnider.wordpress.com&#038;blog=80273571&#038;post=439&#038;subd=danischnider&#038;ref=&#038;feed=1" width="1" height="1" /> Dani Schnider http://danischnider.wordpress.com/?p=439 Wed Sep 27 2017 23:26:25 GMT-0400 (EDT) Coding is Cool Again — Join us at JavaOne https://blog.redpillanalytics.com/coding-is-cool-again-join-us-at-javaone-72719dfeb2df?source=rss----abcc62a8d63e---4 <figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*b7hGvt9_POPby7P-81FD7Q.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/photos/cYNF1EdbMJk?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Umanoide</a> on <a href="https://unsplash.com/?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p>Fall is here and we are gearing up to head to <a href="http://redpillanalytics.com/oowjavaone2017/">San Francisco for Oracle OpenWorld</a>, October 1–5. However, this year Red Pill Analytics, an analytics consulting firm, will also be participating in JavaOne, October 1–5. So what is JavaOne and why are we there?</p><p>Let’s start by pointing out that Stewart Bryson, one of the co-founders of Red Pill Analytics, has roots in development. It’s no wonder that he is still drawn to the developer scene. If you are a developer in any way, you’ll want to be at JavaOne.</p><p>Compared to it’s colocated event, Oracle OpenWorld, JavaOne is a much smaller conference. The topics and focus are more for a developer audience and as you can imagine, is centered on Java, but there are other interesting sessions on general development including DevOps and Apache Kafka. The weekly content includes over 300 regular sessions, tutorials, Birds-of-a-Feather sessions, and hands-on labs. The whole conference is taking place in Moscone West this year, keeping it close to the Oracle OpenWorld action. You’ll also find great opportunities for networking with an amazing Exhibit Hall and evening events.</p><p>When you look over the website, it can be overwhelming. Here are some cool things happening at JavaOne that we think you should care about.</p><h4><a href="https://www.oracle.com/javaone/javaone4kids.html"><strong>JavaOne for Kids</strong></a><br>Saturday, October 1</h4><p>Kicking off JavaOne is JavaOne4Kids, an event exposing 500 kids to the fun of coding including Minecraft, Python, and SQL. This is an unique event that offers kids the opportunity to learn about technology in a new and exciting way. We all know that kids absorb information faster then we do. Let’s catch them early and show them how interesting and exciting development can be.</p><p>Our very own <a href="https://twitter.com/MeKolbe">Michelle Kolbe</a> will be one of the volunteers. She is actively involved in Oracle Academy and other kids coding events. We cannot wait to hear more about the fun and cool things that happen onsite. Learn more about it here. <a href="https://www.oracle.com/javaone/javaone4kids.html">https://www.oracle.com/javaone/javaone4kids.html</a></p><h4><strong>Free event: </strong><a href="https://developer.oracle.com/code/sanfrancisco-oct-2017"><strong>Oracle Code Event</strong></a><strong> <br>Tuesday, October 3</strong></h4><p>Not sure if you can commit to an entire week of JavaOne? Then check out the Oracle Code Event. Tuesday night, The Oracle Code tour is opening the doors to San Francisco at JavaOne. This developer-run event is for developers! It includes 30 sessions and 3 Hands on labs, all for free. You also get access to the keynotes and the exhibit hall.</p><h4><a href="https://www.oracle.com/javaone/developer-lounge.html?source=WWMK170331P00042:EM:IP:::LearnMore-Email11&amp;pcode=WWMK170331P00042&amp;sc=EM:IP:::LearnMore-Email11&amp;elq_mid=88292&amp;sh=14182419221515221612152522290334142403&amp;cmid=WWMK170331P00042">The Developer Lounge</a><br>Monday, October 2 — Wednesday, October 4</h4><p>Do you want to see all the cool and innovative things you can do with code, including robots, beer, games, t-shirts and code? Need we say more? Make sure to check out the Bullet Time Photo Booth. Who doesn’t want to relive one of those slo-mo scenes from “The Matrix”? See what happens when 60 Raspberry Pi cameras take your picture. We’re afraid Stewart may never leave the Matrix exhibit.</p><h4><a href="http://redpillanalytics.com/oowjavaone2017/">Can’t miss Red Pill Analytics’ Sessions at JavaOne</a></h4><h4>RDBMS to Kafka: Stories from the Message Bus Stop</h4><p><strong>Stewart Bryson, Red Pill Analytics &amp; Bjoern Rost, The Pythian Group</strong><br>Monday, Oct 2, 4:30–5:15 p.m. | Moscone West — Room 2002</p><h4>Build Happiness: Using Gradle to Build Better Software</h4><p><strong>Stewart Bryson, Red Pill Analytics<br></strong>Wednesday, Oct 4, 1:45–2:30 p.m. | Moscone West — Room 2004</p><h4>Practical Advice from a Developer Using a Cloud-Based DevOps Environment</h4><p><strong>Stewart Bryson, Red Pill Analytics<br></strong>Wednesday, Oct 4, 5:30–6:15 p.m. | Moscone West — Room 2002</p><p>We hope to see you at JavaOne. If you plan on attending, <a href="https://twitter.com/RedPillA">tweet</a> us and let’s see if we can connect onsite.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=72719dfeb2df" width="1" height="1"><hr><p><a href="https://blog.redpillanalytics.com/coding-is-cool-again-join-us-at-javaone-72719dfeb2df">Coding is Cool Again — Join us at JavaOne</a> was originally published in <a href="https://blog.redpillanalytics.com">Red Pill Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p> Lauren Prezby https://medium.com/p/72719dfeb2df Wed Sep 27 2017 09:28:23 GMT-0400 (EDT) Coding is Cool Again — Join us at JavaOne http://redpillanalytics.com/coding-is-cool-again%e2%80%8a-%e2%80%8ajoin-us-at-javaone/ <p><img width="300" height="225" src="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/umanoide-112489.jpg?fit=300%2C225" class="attachment-medium size-medium wp-post-image" alt="Coding is Cool" srcset="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/umanoide-112489.jpg?w=1920 1920w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/umanoide-112489.jpg?resize=300%2C225 300w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/umanoide-112489.jpg?resize=768%2C576 768w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/umanoide-112489.jpg?resize=1024%2C768 1024w" sizes="(max-width: 300px) 100vw, 300px" data-attachment-id="5472" data-permalink="http://redpillanalytics.com/coding-is-cool-again%e2%80%8a-%e2%80%8ajoin-us-at-javaone/umanoide-112489/" data-orig-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/umanoide-112489.jpg?fit=1920%2C1440" data-orig-size="1920,1440" 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="Coding is Cool" data-image-description="&lt;p&gt;Coding is Cool&lt;/p&gt; " data-medium-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/umanoide-112489.jpg?fit=300%2C225" data-large-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/umanoide-112489.jpg?fit=1024%2C768" /></p><p>Fall is here and we are gearing up to head to San Francisco for Oracle OpenWorld, October 1–5. However, this year Red Pill Analytics, an analytics consulting firm, will also be participating in JavaOne, October 1–5. So what is JavaOne and why are we there?</p> <p>Let’s start by pointing out that Stewart Bryson, one of the co-founders of Red Pill Analytics, has roots in development. It’s no wonder that he is still drawn to the developer scene. If you are a developer in any way, you’ll want to be at JavaOne.</p> <p>Compared to it’s colocated event, Oracle OpenWorld, JavaOne is a much smaller conference. The topics and focus are more for a developer audience and as you can imagine, is centered on Java, but there are other interesting sessions on general development including DevOps and Apache Kafka. The weekly content includes over 300 regular sessions, tutorials, Birds-of-a-Feather sessions, and hands-on labs. The whole conference is taking place in Moscone West this year, keeping it close to the Oracle OpenWorld action. You’ll also find great opportunities for networking with an amazing Exhibit Hall and evening events.</p> <p>When you look over the website, it can be overwhelming. Here are some cool things happening at JavaOne that we think you should care about.</p> <hr /> <h3><a href="https://www.oracle.com/javaone/javaone4kids.html"><strong>JavaOne for Kids</strong></a></h3> <h4><strong>Saturday, October 1</strong></h4> <p>Kicking off JavaOne is JavaOne4Kids, an event exposing 500 kids to the fun of coding including Minecraft, Python, and SQL. This is an unique event that offers kids the opportunity to learn about technology in a new and exciting way. We all know that kids absorb information faster then we do. Let’s catch them early and show them how interesting and exciting development can be.<br /> Our very own <a href="https://twitter.com/MeKolbe">Michelle Kolbe</a> will be one of the volunteers. She is actively involved in Oracle Academy and other kids coding events. We cannot wait to hear more about the fun and cool things that happen onsite. Learn more about it here. https://www.oracle.com/javaone/javaone4kids.html</p> <p>&nbsp;</p> <hr /> <h3><a href="https://developer.oracle.com/code/sanfrancisco-oct-2017"><strong>Free event: Oracle Code Event</strong></a></h3> <h4><strong>Tuesday, October 3</strong></h4> <p>Not sure if you can commit to an entire week of JavaOne? Then check out the Oracle Code Event. Tuesday night, The Oracle Code tour is opening the doors to San Francisco at JavaOne. This developer-run event is for developers! It includes 30 sessions and 3 Hands on labs, all for free. You also get access to the keynotes and the exhibit hall.</p> <hr /> <h3><a href="https://www.oracle.com/javaone/developer-lounge.html"><strong>The Developer Lounge</strong></a></h3> <h4><strong>Monday, October 2 — Wednesday, October 4</strong></h4> <p>Do you want to see all the cool and innovative things you can do with code, including robots, beer, games, t-shirts and code? Need we say more? Make sure to check out the Bullet Time Photo Booth. Who doesn’t want to relive one of those slo-mo scenes from “The Matrix”? See what happens when 60 Raspberry Pi cameras take your picture. We’re afraid Stewart may never leave the Matrix exhibit.</p> <hr /> <h3><a href="http://redpillanalytics.com/oowjavaone2017/"><strong>Can’t miss Red Pill Analytics’ Sessions at JavaOne</strong></a></h3> <h4><strong>RDBMS to Kafka: Stories from the Message Bus Stop</strong></h4> <p>Stewart Bryson, Red Pill Analytics &amp; Bjoern Rost, The Pythian Group<br /> Monday, Oct 2, 4:30–5:15 p.m. | Moscone West — Room 2002</p> <h4><strong>Build Happiness: Using Gradle to Build Better Software</strong></h4> <p>Stewart Bryson, Red Pill Analytics<br /> Wednesday, Oct 4, 1:45–2:30 p.m. | Moscone West — Room 2004</p> <h4><strong>Practical Advice from a Developer Using a Cloud-Based DevOps Environment</strong></h4> <p>Stewart Bryson, Red Pill Analytics<br /> Wednesday, Oct 4, 5:30–6:15 p.m. | Moscone West — Room 2002</p> <hr /> <p>We hope to see you at JavaOne. If you plan on attending, <a href="https://twitter.com/RedPillA">tweet</a> and let’s see if we can connect onsite.</p> Lauren Prezby http://redpillanalytics.com/?p=5471 Wed Sep 27 2017 09:27:55 GMT-0400 (EDT) How to Create a Data Source in Oracle Enterprise Performance Reporting Cloud Service (EPRCS) http://blog.performancearchitects.com/wp/2017/09/27/how-to-create-a-data-source-in-oracle-enterprise-performance-reporting-cloud-service-eprcs/ <p>Author: Mike McClean, Performance Architects</p> <p><a href="https://cloud.oracle.com/enterprise-performance-reporting-cloud">Oracle Enterprise Performance Reporting Cloud Service (EPRCS)</a> provides a solution whereby organizations can combine narrative along with management financial reporting in order to explain results.  It allows various contributors to collaborate across multiple sources and locations.</p> <p>One of the features in EPRCS is the ability to pull in data from other <a href="https://cloud.oracle.com/en_US/home">Oracle</a>-supported cloud solutions.  This is accomplished by creating data sources.  These data sources can be used in to develop reports in EPRCS.  Once these reports are created, they can then be embedded into doclets.</p> <p>To create a data source from another cloud application, navigate to the <strong><em>Library</em></strong>.  Select <strong>D<em>ata Sources -&gt; Create -&gt; Data Source</em></strong>.</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS1.png"><img class="alignnone size-medium wp-image-2137" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS1-300x107.png" alt="" width="300" height="107" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS1-300x107.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS1-768x274.png 768w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS1-1024x365.png 1024w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS1-624x223.png 624w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS1.png 1166w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>From the Data Source dialog box, enter the <strong><em>Data Source Name</em></strong>, <strong><em>Server Name</em></strong>, <strong><em>Identity Domain</em></strong>, <strong><em>Administrator User ID</em></strong>, <strong><em>Administrator Password</em></strong>, <strong><em>Application Name</em></strong> and <strong><em>Cube Name</em></strong>.  Select the <strong><em>Type</em></strong> from the drop-down box.  Test the connection.</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS2.png"><img class="alignnone size-medium wp-image-2136" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS2-300x175.png" alt="" width="300" height="175" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS2-300x175.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS2-624x364.png 624w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS2.png 688w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p><strong><em>Type</em></strong> options include:</p> <ul> <li>Oracle Planning and Budgeting Cloud Service (PBCS)</li> <li>Oracle Essbase Cloud Service (ESSCS)</li> <li>Oracle Profitability and Cost Management Cloud Service (PCMCS)</li> <li>Essbase Analytic Provider Services</li> </ul> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS3.png"><img class="alignnone size-medium wp-image-2135" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS3-300x50.png" alt="" width="300" height="50" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS3-300x50.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS3.png 452w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>If you have any other questions regarding your EPRCS needs, please contact us at <a href="mailto:communications@performancearchitects.com">communications@performancearchitects.com</a> and we’ll see what we can do to help.</p> Melanie Mathews http://blog.performancearchitects.com/wp/?p=2134 Wed Sep 27 2017 05:39:48 GMT-0400 (EDT) #DataVault Issues Resolved http://danlinstedt.com/allposts/datavaultcat/datavault-issues-resolved/ A quick update of old issues, and new solutions for Data Vault, CDVP2, data vault system of Business intelligence, and why it&#8217;s pertinent to successful enterprise data warehouses. Dan Linstedt http://danlinstedt.com/?p=2881 Mon Sep 25 2017 14:15:08 GMT-0400 (EDT) Got Lunch Plans on User Group Sunday at Oracle OpenWorld? http://redpillanalytics.com/oow17lunch/ <p><img width="300" height="200" src="https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/alexandra-gorn-308385.jpg?fit=300%2C200" class="attachment-medium size-medium wp-post-image" alt="Pizza with User Group" srcset="https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/alexandra-gorn-308385.jpg?w=1920 1920w, https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/alexandra-gorn-308385.jpg?resize=300%2C200 300w, https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/alexandra-gorn-308385.jpg?resize=768%2C512 768w, https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/alexandra-gorn-308385.jpg?resize=1024%2C683 1024w" sizes="(max-width: 300px) 100vw, 300px" data-attachment-id="5462" data-permalink="http://redpillanalytics.com/oow17lunch/alexandra-gorn-308385/" data-orig-file="https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/alexandra-gorn-308385.jpg?fit=1920%2C1281" data-orig-size="1920,1281" 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="Pizza with User Group" data-image-description="&lt;p&gt;Pizza with User Group&lt;/p&gt; " data-medium-file="https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/alexandra-gorn-308385.jpg?fit=300%2C200" data-large-file="https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/alexandra-gorn-308385.jpg?fit=1024%2C683" /></p><p class="graf graf--p">Some of the best presentations at Oracle Open World are on User Group Sunday, on Oct 1st. It can be challenging to pay attention in sessions though when your stomach is growling because there’s no conference meal that day.</p> <p class="graf graf--p"><strong class="markup--strong markup--p-strong">Regional User Groups have the solution!</strong></p> <p class="graf graf--p">Join regional user groups at the Children’s Museum next to Moscone to get some pizza, learn about why you should join the group in your area, and hear some lightning talks from some of the stellar regional speakers.</p> <p class="graf graf--p"><strong>We’ll be serving pizza from 11:30am–3pm but you <a class="markup--anchor markup--p-anchor" href="https://nocoug.wildapricot.org/widget/event-2669356" target="_blank" rel="noopener" data-href="https://nocoug.wildapricot.org/widget/event-2669356">must register</a> in advance!</strong></p> <p class="graf graf--p">Thanks to Quest as the premier sponsor of this event. Participating user groups:<br /> * Northeast Ohio Oracle Users Group (NEOOUG)<br /> * Northern California Oracle Users Group (NoCOUG)<br /> * Oregon and Southern Washington Oracle User Group (OSWOUG)<br /> * Rocky Mountain Oracle Users Group (RMOUG)<br /> * Southeast Michigan Oracle Professionals (SEMOP)<br /> * Utah Oracle Users Group (UTOUG)</p> <p class="graf graf--p"><strong class="markup--strong markup--p-strong">Keep it Local!</strong></p> <p class="graf graf--p">IOUG has regional user groups throughout the country. If you are not a member of your local group, you should join today! These are volunteer run organizations that provide full-day conferences and luncheon events throughout the year to their local audience. <a class="markup--anchor markup--p-anchor" href="http://www.ioug.org/rugs" target="_blank" rel="nofollow noopener noopener" data-href="http://www.ioug.org/rugs">http://www.ioug.org/rugs</a></p> <figure class="graf graf--figure"><img class="graf-image" src="https://i1.wp.com/cdn-images-1.medium.com/max/1600/1*VoVFRqV5EadVvuvwOy-R2A.png?resize=1000%2C597&#038;ssl=1" data-image-id="1*VoVFRqV5EadVvuvwOy-R2A.png" data-width="1000" data-height="597" data-recalc-dims="1" /><figcaption class="imageCaption">IOUG Regional User Groups by State</figcaption></figure> <p class="graf graf--p">Side note: Apologies that the above graph does not include Canada. I love how easy it is to create graphs in Tableau but showing multiple countries is not as simple. There are groups in Canada also.</p> Michelle Kolbe http://redpillanalytics.com/?p=5461 Mon Sep 25 2017 11:26:22 GMT-0400 (EDT) Got Lunch Plans on User Group Sunday at Oracle Open World? https://blog.redpillanalytics.com/got-lunch-on-user-group-sunday-at-oracle-open-world-2730f5196cb?source=rss----abcc62a8d63e---4 <figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*uVx4YkiS-Ff6vCoRpp4TAA.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/photos/52jG7-FN22Y?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Alexandra Gorn</a> on <a href="https://unsplash.com/?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p>Some of the best presentations at Oracle Open World are on User Group Sunday, on Oct 1st. It can be challenging to pay attention in sessions though when your stomach is growling because there’s no conference meal that day.</p><p><strong>Regional User Groups have the solution!</strong></p><p>Join regional user groups at the Children’s Museum next to Moscone to get some pizza, learn about why you should join the group in your area, and hear some lightning talks from some of the stellar regional speakers.</p><p>We’ll be serving pizza from 11:30am–3pm but <strong>you </strong><a href="https://nocoug.wildapricot.org/widget/event-2669356"><strong>must register</strong></a><strong> in advance!</strong></p><p>Thanks to Quest as the premier sponsor of this event. Participating user groups: <br>* Northeast Ohio Oracle Users Group (NEOOUG)<br>* Northern California Oracle Users Group (NoCOUG)<br>* Oregon and Southern Washington Oracle User Group (OSWOUG)<br>* Rocky Mountain Oracle Users Group (RMOUG)<br>* Southeast Michigan Oracle Professionals (SEMOP)<br>* Utah Oracle Users Group (UTOUG)</p><p><strong>Keep it Local!</strong></p><p>IOUG has regional user groups throughout the country. If you are not a member of your local group, you should join today! These are volunteer run organizations that provide full-day conferences and luncheon events throughout the year to their local audience. <a href="http://www.ioug.org/rugs">http://www.ioug.org/rugs</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/1*VoVFRqV5EadVvuvwOy-R2A.png" /><figcaption>IOUG Regional User Groups by State</figcaption></figure><p>Side note: Apologies that the above graph does not include Canada. I love how easy it is to create graphs in Tableau but showing multiple countries is not as simple. There are groups in Canada also.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2730f5196cb" width="1" height="1"><hr><p><a href="https://blog.redpillanalytics.com/got-lunch-on-user-group-sunday-at-oracle-open-world-2730f5196cb">Got Lunch Plans on User Group Sunday at Oracle Open World?</a> was originally published in <a href="https://blog.redpillanalytics.com">Red Pill Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p> Michelle Kolbe https://medium.com/p/2730f5196cb Fri Sep 22 2017 19:29:28 GMT-0400 (EDT) Unify Update - v1.0.1 http://www.rittmanmead.com/blog/2017/09/unify-v101/ <img src="http://www.rittmanmead.com/blog/content/images/2017/09/unifyBlue.svg" alt="Unify Update - v1.0.1"><p><img src="http://www.rittmanmead.com/blog/content/images/2017/09/endtoend.svg" alt="Unify Update - v1.0.1"></p> <p>We have updated Unify following feedback from our customers and have released version 1.0.1. The following bugs have been fixed and features added:</p> <ul> <li>Change the default port to 3724 as 8080 is the default port of Oracle XE.</li> <li>Allow port configuration in the desktop app.</li> <li>Fixed problem with date filters not working with >, >=, &lt;, &lt;= operators.</li> <li>Fixed some problems using presentation variables used in filters.</li> <li>Made the preview table scale to the resolution of the screen instead of being fixed size.</li> <li>Enabled parsing for dashboard pages, so an OBIEE page can be opened and each report from it will be loaded into Unify.</li> <li>Made viewing column or filter panes optional in the UI.</li> <li>Improved tray icons for Mac distribution of the Desktop app.</li> <li>Distinguish measures and attributes with icons in the presentation layer.</li> <li>Allow queries from multiple subject areas.</li> <li>Switched to Tableau WDC 2.0.9 to facilitate compatbility with Tableau 10.0.</li> </ul> <p>You download Unify from our website: <a href="https://unify.ritt.md">https://unify.ritt.md</a></p> Minesh Patel fb7ec39f-5eb1-47a5-ac7e-b5a805d62e94 Fri Sep 22 2017 08:54:06 GMT-0400 (EDT) BI Cloud Connector – Download Data Extraction Files http://www.ateam-oracle.com/bi-cloud-connector-download-data-extraction-files/ Introduction The Oracle Fusion based SaaS offerings provide an interesting tool to extract data and to store them in CSV format on a shared resource like the built-in UCM server or a Storage Cloud: BI Cloud Connector (BICC). The extracted data can be copied from these cloud resources and downloaded to local resources, before post-processing [&#8230;] Ulrich Janke http://www.ateam-oracle.com/?p=46665 Fri Sep 22 2017 05:14:59 GMT-0400 (EDT) ODTUG September News http://www.odtug.com/p/bl/et/blogaid=746&source=1 The ODTUG September News includes ODTUG Kscope18 updates, ODTUG Board of Directors voting information, ODTUG community news, upcoming ODTUG webinars, and information about ODTUG at Oracle OpenWorld 2017. ODTUG http://www.odtug.com/p/bl/et/blogaid=746&source=1 Thu Sep 21 2017 12:22:23 GMT-0400 (EDT) Welcome to ODTUG Kscope18! http://www.odtug.com/p/bl/et/blogaid=744&source=1 As the conference chair for ODTUG Kscope18, I’d like to be the first to welcome you to the next iteration of the ODTUG Kscope conference! Every year is a fresh opportunity for new and exciting things and this year is no exception. ODTUG http://www.odtug.com/p/bl/et/blogaid=744&source=1 Thu Sep 21 2017 10:46:40 GMT-0400 (EDT) Defining Essbase Storage Options: ASO Versus BSO http://blog.performancearchitects.com/wp/2017/09/20/defining-essbase-storage-options-aso-versus-bso/ <p>Authors: Warren Pereira and Andrew Tauro, Performance Architects</p> <p><a href="https://www.oracle.com/solutions/business-analytics/business-intelligence/essbase/index.html">Oracle’s Essbase</a> is a popular multidimensional database platform that powers business analytics solutions the world over, both on-premise and as Software-as-a-Service (SaaS, in the “cloud”). The name stands for “Extensible Spreadsheet Database” because this database’s dimensions provide multiple views of a dataset, and you can drive complex calculations off of these datasets.</p> <p>Dimensions can be defined as characteristics of the data, which vary from financial items such as charts of accounts, business entities, and physical or logical characteristics such as materials and markets. As a result of the multi-dimensional nature of Essbase databases, they are usually simplistically referred to as “cubes,” after one of the primary three-dimensional objects that we are familiar with. However, Essbase databases are not restricted to just three dimensions, as they usually consist of at least seven to nine dimensions.</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/asobso1.png"><img class="alignnone size-medium wp-image-2130" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/asobso1-300x152.png" alt="" width="300" height="152" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/asobso1-300x152.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/asobso1.png 577w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Data can be stored in an Essbase cube or database using either the “Block Storage Option” (BSO) or “Aggregate Storage Option” (ASO). This blog post provides descriptions and an overview of when to use each storage type.</p> <p><strong>Block Storage Option (BSO)</strong></p> <p>Essbase originally launched only with the BSO storage option, which is generally used in scenarios which do not need high dimensionality, but involve complex business logic. With this option, dimensions are tagged as “dense” or “sparse” (the probability of data occurring in intersections involving a dimension).</p> <p>Using BSO, data can be loaded at all levels of a dimension and is stored in logical structures called “data blocks” which make use of page and index files. Calculation scripts and member formulas can be used to perform complex calculations, such as allocations and metrics-based projections, which usually cannot be accomplished using simple hierarchical roll ups.</p> <p>This storage option prefers fewer dimensions. As the dimension count increases, performance of a BSO cube drops nonlinearly. Another drawback of this approach is that as the dataset size and/or dimensionality rises, the disk space required grows almost exponentially. BSO databases do not scale very well, and as a result dataset size is an important consideration when designing a BSO cube.</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/asobso2.png.jpg"><img class="alignnone size-medium wp-image-2129" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/asobso2.png-300x87.jpg" alt="" width="300" height="87" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/asobso2.png-300x87.jpg 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/asobso2.png.jpg 415w" sizes="(max-width: 300px) 100vw, 300px" /><br /> </a>Data is loaded at leaf nodes. Stored data size increases when the cube is calculated.</p> <p><strong>Aggregate Storage Option (ASO)</strong></p> <p>ASO is frequently used for reporting solutions, that do not involve complex calculations. In a typical ASO solution, the hierarchies are aggregated in a bottom-up manner.</p> <p>An ASO cube can handle a higher number of dimensions than BSO, without adverse impact to performance. Data can only be loaded at the leaf nodes of the hierarchies, or “Level 0” as referred to in Essbase terminology. Data is aggregated on-the-fly, usually very quickly. This makes a huge difference in the amount in disk space ASO requires over BSO. For larger databases, partial aggregations can be set up, called “Aggregation Views,” that reduce the “cost” of a query.</p> <p>With all of their merits, ASO cubes slow down immensely when the hierarchy is dynamic, or uses a member formula. For this reason, it is not recommended to use ASO for calculations, but it can serve as a great source of data to drive calculations in another system.</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/asobso3.jpg"><img class="alignnone size-full wp-image-2128" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/asobso3.jpg" alt="" width="252" height="200" /></a></p> <p>A remedy for both storage options’ shortcomings is to use a “hybrid” approach, where actuals data is stored in an ASO cube (since it is large and does not need to be calculated) with a transparent partition to connect to a BSO cube, which can use the actuals data as source to generate the forecast data via calculation. The calculated forecast can then be fed back to the ASO cube. This plays to the strengths of each type of storage option.</p> <p>Still confused about which storage option to use with your Essbase solution?  Email us at <a href="mailto:communications@performancearchitects.com">communications@performancearchitects.com</a> and we’ll be happy to help you out!</p> Melanie Mathews http://blog.performancearchitects.com/wp/?p=2127 Wed Sep 20 2017 05:18:28 GMT-0400 (EDT) My Oracle Open World 2017 Presentations http://www.oralytics.com/2017/09/my-oracle-open-world-2017-presentations.html <p>Oracle Open World 2017 will be happening very soon (1st-5th October). Still lots to do before I can get on that plane to San Francisco.</p> <p>This year I'll be giving 2 presentations (see table below). One on the Sunday during the User Groups Sunday sessions. I've been accepted on the EMEA track. I then get a few days off to enjoy and experience OOW until Thursday when I have my second presentation that is part of JavaOne (I think!)</p> <p>My OOW kicks off on Friday 29th September with the ACE Director briefing at Oracle HQ, after flying to SFO on Thursday 28th. This year it is only for one day instead of two days. I really enjoy this event as we get to learn and see what Oracle will be announcing at OOW as well as some things that will be coming out during the following few months.</p> <style type="text/css">table.myTable { border-collapse:collapse; } table.myTable td, table.myTable th { border:1px solid black;padding:5px; } </style> <table class="myTable"><th width="50">Day</th><th width="80">Time</th><th width="300">Presentation</th><th width="130">Location</th></tr><tr><td style="width:30px;">Sunday</td><td>13:45-14:30</td><td>SQL: One Language to Rule All Your Data [OOW SUN1238] <p>SQL is a very powerful language that has been in use for almost 40 years. SQL comes with many powerful techniques for analyzing your data, and you can analyze data outside the database using SQL as well. Using the new Oracle Big Data SQL it is now possible to analyze data that is stored in a database, in Hadoop, and in NoSQL all at the same time. This session explores the capabilities in Oracle Database that allow you to work with all your data. Discover how SQL really is the unified language for processing all your data, allowing you to analyze, process, run machine learning, and protect all your data. </p><p>Hopefully this presentation will be a bit of Fun! For those who have been working with the database for a long time, we can sometimes forget what we can really do. For those starting out in the career may not realise what the database can do. The presentation delivers an important message while having a laugh or two (probably at me).</p> <td>Marriott Marquis (Golden Gate Level) - Golden Gate C1/C2</td> </tr> <tr><td style="width:30px;">Thursday</td><td>13:45-14:30</td><td>Is SQL the Best Language for Statistics and Machine Learning? <p>[OOW and JavaOne CON7350]</p><p>Did you know that Oracle Database comes with more than 300 statistical functions? And most of these statistical functions are available in all versions of Oracle Database? Most people do not seem to know this. When we hear about people performing statistical analytics, we hear them talking about Excel and R, but what if we could do statistical analysis in the database without having to extract any data onto client machines? This presentation explores the various statistical areas available in Oracle Database and gives several demonstrations. We can also greatly expand our statistical capabilities by using Oracle R Enterprise with the embedded capabilities in SQL.</p><p>This presentation is just one of the 14 presentations that are scheduled for the Thursday! I believe this session is already fully booked, but you can still add yourself to the wait list.</p></p></td><td>Marriott Marquis (Golden Gate Level) - Golden Gate B</td> </tr></table> <p>My flights and hotel have been paid by OTN as part of the Oracle ACE Director program. Yes this costs a lot of money and there is no way I'd be able to pay these costs. Thank you.</p> <p>My diary for OOW is really full. No it is completely over booked. It is just mental. Between attending conference session, meeting with various product teams (we only get to meet at OOW), attending various community meet-ups, this year I get to attend some events for OUG leaders (representing UKOUG), spending some time on the EMEA User Group booth, various meetings with people to discuss how they can help or contribute to the UKOUG, then there is Oak Table World, trying to check out the exhibition hall, spend some time at the OTN/ODC hangout area, getting a few OTN t-shirts, doing some book promotions at the Oracle Press shop, etc., etc., etc. I'm exhausted just thinking about it. Mosts days start at 7am and then finish around 10pm. </p> <p>I'll need a holiday when I get home! but it will be straight back to work :-(</p> <p>If you are at OOW and want to chat then contact me via DM on Twitter or WhatsApp (these two are best) or via email (this will be the slowest way). </p><p>I'll have another blog post listing the presentations from various people and partners from the Republic of Ireland who are speaking at OOW.</p> Brendan Tierney tag:blogger.com,1999:blog-4669933501315263808.post-7211600761609284498 Tue Sep 19 2017 12:39:00 GMT-0400 (EDT) San Fran we go! https://blog.redpillanalytics.com/san-fran-we-go-8f2dab7fee4f?source=rss----abcc62a8d63e---4 <figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*b31yhvtWAXytTUcX_D3qOQ.jpeg" /><figcaption>Photo cred: Ragnar Vorel — <a href="https://unsplash.com/@sonuba">https://unsplash.com/@sonuba</a></figcaption></figure><p>Fall is here and that means a trip to San Francisco is on the calendar for Red Pill Analytics. Once again, we are thrilled to be joining an amazing group of presenters at Oracle’s largest conference of the year, <a href="https://www.oracle.com/openworld/index.html">Oracle OpenWorld</a>/<a href="https://www.oracle.com/javaone/index.html">JavaOne</a>.</p><p>Red Pill Analytics has six sessions, three at Oracle OpenWorld and three at JavaOne.</p><p>More than 25,000 attendees from across the world converge on Moscone for this event, will you be one of them? If you are, check out our sessions listed below and <a href="http://redpillanalytics.com/contact/">drop us aline</a>. We’d love to connect.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/120/1*Hu5mMp2hXbXfC7Y-EwAYCQ.png" /></figure><h3>Oracle OpenWorld — User Group Forum Sessions</h3><h3><strong>Expanding Your Data-Driven Story: The Next Chapter</strong></h3><h4><strong>Stewart Bryson, Red Pill Analytics &amp; Mike Durran, Oracle</strong></h4><p>Sunday, Oct 1, 9:45 - 10:30 a.m. |Marriott Marquis (YBuena Level) - Salon 12</p><p>Oracle Data Visualization makes it easy to get insight from your data. This stunningly visual and intuitive product 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 power of data storytelling and the latest capabilities of Oracle Data Visualization (including details of the product roadmap) to create compelling analytics narratives, including how you can rapidly apply advanced analytics techniques to gain insights previously only accessible to advanced users. Learn about how Oracle Data Visualization has been used in real-life scenarios to gain insight and improve business performance.</p><h3>Up Your Analytics Ante With Oracle Advanced Analytics</h3><h4><strong>Michelle Kolbe</strong>, Red Pill Analytics</h4><p>Sunday, Oct 1, 10:45 - 11:30 a.m. | Moscone South — Room 155</p><p>Tomorrow’s analytics are the addition of today’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’s analytics go above and beyond the reporting and examination of trends in KPIs and key metrics. This session will detail the advanced analytics concept and the supporting functionality delivered by the Oracle Advanced Analytics offering. Topics include: What is Advanced Analytics, Overview of Oracle Advanced Analytics, Use Cases and Demos, Get Started in Your Own Organization</p><h3>Kafka, Data Streaming, and Analytics Microservices</h3><p><strong>Stewart Bryson, Red Pill Analytics<br></strong>Sunday, Oct 1, 1:45 - 2:30 p.m. | Moscone South - Room 157</p><p>Although 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&#39;t fit, let&#39;s apply a new software design pattern to analytics: microservices. In this session attendees use Apache Kafka and the Confluent Platform 3.0 as the data streaming hub for ingesting data bound for downstream analytics 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 analytics platforms.</p><h3>Strategic Leadership: Critical C-Level Conversations Panel</h3><h4>Arjen Visser, CEO, Dbvisit Software Limited<br>Stewart Bryson, Owner and Co-founder, Red Pill Analytics<br>Charles Kim, Oracle ACE Director, Viscosity North America<br>Kerry Osborne, DBA, Accenture Enkitec Group</h4><p>Sunday, Oct 1, 3:45 - 4:30 p.m. | Moscone South — Room 151</p><p>The role of Oracle technology professionals continues to shift and change at an ever-increasing rate, and although those currently in these jobs should feel secure that they will have a role to play in their organizations for quite some time, there are new skills that employers expect more and more from these roles, and especially in new hires. In this session join a panel of industry experts as they discuss what the role of database and technology professionals will look like one, three, and five years from today; what critical skills they look for in new hires; and how current technology professionals can position themselves to be indispensable assets to their organizations.e</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/262/1*wcBPa-EGESEgPv-S9Rbbug.jpeg" /></figure><h3>RDBMS to Kafka: Stories from the Message Bus Stop</h3><p><strong>Stewart Bryson, Red Pill Analytics &amp; Bjoern Rost, The Pythian Group</strong><br>Monday, Oct 2, 4:30 - 5:15 p.m. | Moscone West - Room 2002</p><p>Apache Kafka is a massively scalable message queue that is being used at more and more places to connect more and more data sources. This presentation introduces Kafka from the perspective of a mere mortal DBA and shares the experience of (and challenges with) getting events from the database to Kafka and back, using various solutions and connectors. Demos show how to get started with Kafka, set up the kafka-connect-jdbc producer, poor man’s change data capture with flashback query, and replication technologies to turn database logs into Kafka events.</p><h3>Build Happiness: Using Gradle to Build Better Software</h3><h4>Stewart Bryson, Red Pill Analytics</h4><p>Wednesday, Oct 4, 1:45 - 2:30 p.m. | Moscone West — Room 2004</p><p>​Gradle is the build tool of choice for modern software development, from numerous Apache open source projects to everything generated with Android Studio. It’s an end-to-end automation and delivery framework that can build projects in Java, Groovy, C++, Python, JavaScript...whatever your language of choice. It’s adaptable for monolithic projects or microservices and can deploy to any platform, whether on-premises or in the cloud. This session explores what makes Gradle so versatile. You’ll see a live demonstration of building Java, Groovy, and Python artifacts and see automated publishing to Maven repositories and serverless cloud platforms such as AWS Lambda.</p><h3>Practical Advice from a Developer Using a Cloud-Based DevOps Environment</h3><h4>Stewart Bryson, Red Pill Analytics</h4><p>Wednesday, Oct 4, 5:30 - 6:15 p.m. | Moscone West - Room 2002</p><p>This session examines a day in the life of a developer using a cloud-based DevOps environment providing issue tracking, code versioning, team collaboration, Agile project management, and continuous integration and delivery. It begins with Agile development tools for streamlining project management. You’ll experience the full code lifecycle: how it’s versioned, merged, and managed and, ultimately, how artifacts are built and deployed. The presentation examines how the cloud DevOps environment integrates with standard development frameworks such as Git, Gradle, and popular development IDEs. Experience live demos using Oracle Developer Cloud Service, which provides everything needed for polyglot development.</p><p>— -</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8f2dab7fee4f" width="1" height="1"><hr><p><a href="https://blog.redpillanalytics.com/san-fran-we-go-8f2dab7fee4f">San Fran we go!</a> was originally published in <a href="https://blog.redpillanalytics.com">Red Pill Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p> Lauren Prezby https://medium.com/p/8f2dab7fee4f Fri Sep 15 2017 11:09:03 GMT-0400 (EDT) To San Fran We Go! http://redpillanalytics.com/oowjavaone2017/ <p><img width="300" height="200" src="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/ragnar-vorel-351405.jpg?fit=300%2C200" class="attachment-medium size-medium wp-post-image" alt="OOW2017" srcset="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/ragnar-vorel-351405.jpg?w=1920 1920w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/ragnar-vorel-351405.jpg?resize=300%2C200 300w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/ragnar-vorel-351405.jpg?resize=768%2C511 768w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/ragnar-vorel-351405.jpg?resize=1024%2C682 1024w" sizes="(max-width: 300px) 100vw, 300px" data-attachment-id="5432" data-permalink="http://redpillanalytics.com/oowjavaone2017/ragnar-vorel-351405/" data-orig-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/ragnar-vorel-351405.jpg?fit=1920%2C1278" data-orig-size="1920,1278" 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="OOW2017" data-image-description="&lt;p&gt;OOW2017&lt;/p&gt; " data-medium-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/ragnar-vorel-351405.jpg?fit=300%2C200" data-large-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/ragnar-vorel-351405.jpg?fit=1024%2C682" /></p><p class="graf graf--p">Fall is here and that means a trip to San Francisco is on the calendar for Red Pill Analytics. Once again, we are thrilled to be joining an amazing group of presenters at Oracle’s largest conference of the year, Oracle OpenWorld/JavaOne.</p> <p class="graf graf--p">Red Pill Analytics has six sessions, three at <a href="https://www.oracle.com/openworld/index.html">Oracle OpenWorld</a> and three at <a href="https://www.oracle.com/javaone/index.html">JavaOne</a>.</p> <p class="graf graf--p">More than 25,000 attendees from across the world converge on Moscone for this event, will you be one of them? If you are, check out our sessions listed below and <a href="http://redpillanalytics.com/contact/">drop us aline</a>. We’d love to connect.</p> <hr /> <figure class="graf graf--figure"><a href="https://www.oracle.com/openworld/index.html"><img class="graf-image aligncenter" src="https://i2.wp.com/cdn-images-1.medium.com/max/1600/1*Hu5mMp2hXbXfC7Y-EwAYCQ.png?resize=120%2C120&#038;ssl=1" data-image-id="1*Hu5mMp2hXbXfC7Y-EwAYCQ.png" data-width="120" data-height="120" data-recalc-dims="1" /></a></figure> <h3 class="graf graf--h3" style="text-align: center;">Oracle OpenWorld — User Group Forum Sessions</h3> <h3 class="graf graf--h3"><strong class="markup--strong markup--h3-strong">Expanding Your Data-Driven Story: The Next Chapter</strong></h3> <p class="graf graf--h3"><strong class="markup--strong markup--h4-strong">Stewart Bryson, Red Pill Analytics &amp; Mike Durran, Oracle<br /> </strong>Sunday, Oct 1, 9:45 &#8211; 10:30 a.m. |Marriott Marquis (YBuena Level) &#8211; Salon 12</p> <p class="graf graf--p">Oracle Data Visualization makes it easy to get insight from your data. This stunningly visual and intuitive product 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 power of data storytelling and the latest capabilities of Oracle Data Visualization (including details of the product roadmap) to create compelling analytics narratives, including how you can rapidly apply advanced analytics techniques to gain insights previously only accessible to advanced users. Learn about how Oracle Data Visualization has been used in real-life scenarios to gain insight and improve business performance.</p> <hr /> <h3 id="bb6c" class="graf graf--h3 graf-after--p"><strong>Up Your Analytics Ante With Oracle Advanced Analytics</strong></h3> <p class="graf graf--h3 graf-after--p"><strong>Michelle Kolbe, Red Pill Analytics</strong></p> <p id="ab02" class="graf graf--p graf-after--h4">Sunday, Oct 1, 10:45 &#8211; 11:30 a.m. | Moscone South — Room 155</p> <p id="942f" class="graf graf--p graf-after--p">Tomorrow’s analytics are the addition of today’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’s analytics go above and beyond the reporting and examination of trends in KPIs and key metrics. This session will detail the advanced analytics concept and the supporting functionality delivered by the Oracle Advanced Analytics offering. Topics include: What is Advanced Analytics, Overview of Oracle Advanced Analytics, Use Cases and Demos, Get Started in Your Own Organization</p> <hr /> <h3 class="graf graf--h3"><strong>Kafka, Data Streaming, and Analytics Microservices</strong></h3> <p class="graf graf--p"><strong class="markup--strong markup--p-strong">Stewart Bryson, Red Pill Analytics<br /> </strong>Sunday, Oct 1, 1:45 &#8211; 2:30 p.m. | Moscone South &#8211; Room 157</p> <p class="graf graf--p">Although 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. In this session attendees use Apache Kafka and the Confluent Platform 3.0 as the data streaming hub for ingesting data bound for downstream analytics 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 analytics platforms.</p> <hr /> <h3 class="graf graf--h3"><strong>Strategic Leadership: Critical C-Level Conversations Panel</strong></h3> <p class="graf graf--h4"><strong>Arjen Visser, CEO, Dbvisit Software Limited</strong><br /> <strong> Stewart Bryson, Owner and Co-founder, Red Pill Analytics</strong><br /> <strong> Charles Kim, Oracle ACE Director, Viscosity North America</strong><br /> <strong> Kerry Osborne, DBA, Accenture Enkitec Group</strong></p> <p class="graf graf--p">Sunday, Oct 1, 3:45 &#8211; 4:30 p.m. | Moscone South — Room 151</p> <p class="graf graf--p">The role of Oracle technology professionals continues to shift and change at an ever-increasing rate, and although those currently in these jobs should feel secure that they will have a role to play in their organizations for quite some time, there are new skills that employers expect more and more from these roles, and especially in new hires. In this session join a panel of industry experts as they discuss what the role of database and technology professionals will look like one, three, and five years from today; what critical skills they look for in new hires; and how current technology professionals can position themselves to be indispensable assets to their organizations.</p> <hr /> <figure class="graf graf--figure"><img class="graf-image aligncenter" src="https://i2.wp.com/cdn-images-1.medium.com/max/1600/1*wcBPa-EGESEgPv-S9Rbbug.jpeg?resize=262%2C265&#038;ssl=1" data-image-id="1*wcBPa-EGESEgPv-S9Rbbug.jpeg" data-width="262" data-height="265" data-recalc-dims="1" /></figure> <h3 class="graf graf--h3"><strong>RDBMS to Kafka: Stories from the Message Bus Stop</strong></h3> <p class="graf graf--p"><strong class="markup--strong markup--p-strong">Stewart Bryson, Red Pill Analytics &amp; Bjoern Rost, The Pythian Group</strong><br /> Monday, Oct 2, 4:30 &#8211; 5:15 p.m. | Moscone West &#8211; Room 2002</p> <p class="graf graf--p">Apache Kafka is a massively scalable message queue that is being used at more and more places to connect more and more data sources. This presentation introduces Kafka from the perspective of a mere mortal DBA and shares the experience of (and challenges with) getting events from the database to Kafka and back, using various solutions and connectors. Demos show how to get started with Kafka, set up the kafka-connect-jdbc producer, poor man’s change data capture with flashback query, and replication technologies to turn database logs into Kafka events.</p> <hr /> <h3 class="graf graf--h3"><strong>Build Happiness: Using Gradle to Build Better Software</strong></h3> <p class="graf graf--h4"><strong>Stewart Bryson, Red Pill Analytics</strong><br /> Wednesday, Oct 4, 1:45 &#8211; 2:30 p.m. | Moscone West — Room 2004</p> <p class="graf graf--p">​Gradle is the build tool of choice for modern software development, from numerous Apache open source projects to everything generated with Android Studio. It’s an end-to-end automation and delivery framework that can build projects in Java, Groovy, C++, Python, JavaScript&#8230;whatever your language of choice. It’s adaptable for monolithic projects or microservices and can deploy to any platform, whether on-premises or in the cloud. This session explores what makes Gradle so versatile. You’ll see a live demonstration of building Java, Groovy, and Python artifacts and see automated publishing to Maven repositories and serverless cloud platforms such as AWS Lambda.</p> <hr /> <h3 class="graf graf--h3"><strong>Practical Advice from a Developer Using a Cloud-Based DevOps Environment</strong></h3> <p class="graf graf--h4"><strong>Stewart Bryson, Red Pill Analytics</strong><br /> Wednesday, Oct 4, 5:30 &#8211; 6:15 p.m. | Moscone West &#8211; Room 2002</p> <p class="graf graf--p">This session examines a day in the life of a developer using a cloud-based DevOps environment providing issue tracking, code versioning, team collaboration, Agile project management, and continuous integration and delivery. It begins with Agile development tools for streamlining project management. You’ll experience the full code lifecycle: how it’s versioned, merged, and managed and, ultimately, how artifacts are built and deployed. The presentation examines how the cloud DevOps environment integrates with standard development frameworks such as Git, Gradle, and popular development IDEs. Experience live demos using Oracle Developer Cloud Service, which provides everything needed for polyglot development.</p> Lauren Prezby http://redpillanalytics.com/?p=5431 Fri Sep 15 2017 11:08:56 GMT-0400 (EDT) #datavault 2.0 and #disciplinedagiledelivery One Day Sprints! http://danlinstedt.com/allposts/datavaultcat/one-day-sprints/ Hello everyone,  I have been able to help teams achieve one day sprints for delivery with Data Vault 2.0!  I am happy to say, that following Disciplined Agile Delivery (DAD by Scott Ambler and Mark Lines) that we can reduce the sprints to half day or one day.  In this entry I will talk about [&#8230;] Dan Linstedt http://danlinstedt.com/?p=2874 Fri Sep 15 2017 07:06:48 GMT-0400 (EDT) Joining It All Up http://redpillanalytics.com/joining-it-all-up/ <p><img width="300" height="201" src="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/jj-ying-215308.jpg?fit=300%2C201" class="attachment-medium size-medium wp-post-image" alt="Joining it all up" srcset="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/jj-ying-215308.jpg?w=1920 1920w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/jj-ying-215308.jpg?resize=300%2C201 300w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/jj-ying-215308.jpg?resize=768%2C514 768w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/jj-ying-215308.jpg?resize=1024%2C685 1024w" sizes="(max-width: 300px) 100vw, 300px" data-attachment-id="5428" data-permalink="http://redpillanalytics.com/joining-it-all-up/jj-ying-215308/" data-orig-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/jj-ying-215308.jpg?fit=1920%2C1285" data-orig-size="1920,1285" 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="Joining it all up" data-image-description="&lt;p&gt;Joining it all up&lt;/p&gt; " data-medium-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/jj-ying-215308.jpg?fit=300%2C201" data-large-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/jj-ying-215308.jpg?fit=1024%2C685" /></p><p class="graf graf--p">When I start a new ETL project I often find it useful to have some idea how the source tables relate to each other. If I’m lucky there is documentation to guide me or even a diagram showing me how the tables link up (I do dream a lot). Of course, I could pull the structure into SQL Developer Data Modeller and get this data from the database.</p> <p class="graf graf--p">However for quick “show-and-tells” the latest releases of SQL Developer gives us another and simpler way. Step up to the plate, the Model tab on the table viewer. You may not have noticed it, but it is here.</p> <figure class="graf graf--figure"><img class="graf-image" src="https://i1.wp.com/cdn-images-1.medium.com/max/1600/1*_Uefp_Oi3yjTU4Ct2uOWLg.png?resize=762%2C234&#038;ssl=1" data-image-id="1*_Uefp_Oi3yjTU4Ct2uOWLg.png" data-width="762" data-height="234" data-recalc-dims="1" /></figure> <p class="graf graf--p">After a few moments, a model diagram will appear based on the table you are inspecting and showing all the tables related to it through foreign key constraints.</p> <figure class="graf graf--figure"><img class="graf-image" src="https://i2.wp.com/cdn-images-1.medium.com/max/1600/1*I7R5UCkWe7BBtVTGVSzaZQ.png?resize=316%2C543&#038;ssl=1" data-image-id="1*I7R5UCkWe7BBtVTGVSzaZQ.png" data-width="316" data-height="543" data-recalc-dims="1" /></figure> <p class="graf graf--p">However, if there are no constraints, this will not work. Keep an eye on our blog for a post about constraints. Also check out these two additional factoids on this feature:</p> <ul class="postList"> <li class="graf graf--li">If you edit the table structure or constraints you will need to click on therefresh icon in the top bar of the window to see the changes.</li> <li class="graf graf--li">The second feature is the icon to the right of the refresh button — it copies the model into SQL Developer Data Modeller so that you can then use all its features (like that very useful print function).</li> </ul> Pete Scott http://redpillanalytics.com/?p=5427 Thu Sep 14 2017 11:46:32 GMT-0400 (EDT) Joining It All Up https://blog.redpillanalytics.com/joining-it-all-up-d47e1cb5be95?source=rss----abcc62a8d63e---4 <figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vP_3pTiTHH59DZ0FULdS1w.jpeg" /></figure><p>When I start a new ETL project I often find it useful to have some idea how the source tables relate to each other. If I’m lucky there is documentation to guide me or even a diagram showing me how the tables link up (I do dream a lot). Of course, I could pull the structure into SQL Developer Data Modeller and get this data from the database.</p><p>However for quick “show-and-tells” the latest releases of SQL Developer gives us another and simpler way. Step up to the plate, the Model tab on the table viewer. You may not have noticed it, but it is here.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/762/1*_Uefp_Oi3yjTU4Ct2uOWLg.png" /></figure><p>After a few moments, a model diagram will appear based on the table you are inspecting and showing all the tables related to it through foreign key constraints.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/316/1*I7R5UCkWe7BBtVTGVSzaZQ.png" /></figure><p>However, if there are no constraints, this will not work. Keep an eye on our blog for a post about constraints. Also check out these two additional factoids on this feature:</p><ul><li>If you edit the table structure or constraints you will need to click on therefresh icon in the top bar of the window to see the changes.</li><li>The second feature is the icon to the right of the refresh button — it copies the model into SQL Developer Data Modeller so that you can then use all its features (like that very useful print function).</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d47e1cb5be95" width="1" height="1"><hr><p><a href="https://blog.redpillanalytics.com/joining-it-all-up-d47e1cb5be95">Joining It All Up</a> was originally published in <a href="https://blog.redpillanalytics.com">Red Pill Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p> Pete Scott https://medium.com/p/d47e1cb5be95 Thu Sep 14 2017 11:46:29 GMT-0400 (EDT) Intro to Getting data out of #DataVault http://danlinstedt.com/allposts/datavaultcat/intro-to-getting-data-out-of-datavault/ It has come to my attention that the &#8220;industry&#8221; believes (incorrectly) that getting data OUT of a Data Vault is difficult, if not impossible.  This is so far off the truth it isn&#8217;t even funny.  Individuals can find the right information in the book in Chapter 6, and in depth discussions in the Data Vault [&#8230;] Dan Linstedt http://danlinstedt.com/?p=2871 Thu Sep 14 2017 08:21:34 GMT-0400 (EDT) The Performance Architects Guide to Events and Happenings at Oracle OpenWorld 2017 http://blog.performancearchitects.com/wp/2017/09/13/the-performance-architects-guide-to-events-and-happenings-at-oracle-openworld-2017/ <p>Author: Melanie Mathews, Performance Architects</p> <p><a href="https://www.oracle.com/openworld/index.html">Oracle OpenWorld (OOW)</a> (Oracle&#8217;s annual conference that draws over 60,000 attendees to learn about Oracle products and services) is just a few weeks away, and the Performance Architects team wants to make sure that you’re up to speed on what we think are some of the “can’t miss” events and sessions at the conference! Unfortunately, I will not be making it to San Francisco this year but several of my team members will be in attendance.</p> <p>OOW starts with SIG &amp; Geo Sunday and if you are arriving over the weekend be sure to attend the Special Interest Group (SIG) and regional group sessions from key Oracle associations such as <a href="http://oaug.org/">Oracle Application Users Group (OAUG)</a>, <a href="http://www.odtug.com/">Oracle Developer Tools Users Group (ODTUG)</a>, and <a href="http://www.ioug.org/">Independent Oracle Users Group (IOUG)</a>.  The Performance Architects team is heavily involved in facilitating many of these meetings.  For example, our own Kirby Lunger will be leading the “OAUG Oracle Big Data and Business Intelligence SIG Meeting [SIG1611]” at 12:45 PM and from there, she will go right into the “OAUG Endeca SIG Meeting [SIG1076]” meeting at 3:45 PM. Performance Architects’ Chuck Persky will be heading up the “OAUG EPM/Hyperion SIG Meeting” [SIG1278] meeting at 1:45 PM. We are also heavily involved in coordinating the “New England OAUG Meeting [SUN6395]” at 9:45 AM (I sit on the board for the group).</p> <p>We also have a session that we are co-presenting with one of our clients.  Join us as we discuss Boston Biomedical’s evolution from budgeting, forecasting, and planning in spreadsheets to an automated, secure planning process and solution using Oracle Planning and Budgeting Cloud Service. Meet us on Wednesday, October 4<sup>th</sup> at 11:00 AM for our <a href="https://events.rainfocus.com/catalog/oracle/oow17/catalogoow17?search=boston%20biomedical&amp;showEnrolled=false">“Transforming Finance at Boston Biomedical Using Oracle [CON2217]”</a> session!</p> <p>As always, Performance Architects is hosting a special, invite-only event at the conference! If you’re interested in catching up with us in person, please send us a note at <a href="mailto:communications@performancearchitects.com">communications@performancearchitects.com</a> and we’ll send you more information.</p> <p>Lastly, be sure to attend <a href="https://www.oracle.com/openworld/cloudfest.html">CloudFest.17</a> on Wednesday, October 4<sup>th</sup> and dance the night away with The Chainsmokers and Ellie Goulding starting at 7:00 PM. What better way to wrap up Oracle OpenWorld than with your colleagues, under the stars, with two of today&#8217;s top entertainers.</p> <p>Safe travels and see you soon!</p> <p>&nbsp;</p> <p>&nbsp;</p> Melanie Mathews http://blog.performancearchitects.com/wp/?p=2146 Wed Sep 13 2017 05:54:19 GMT-0400 (EDT) Analytic Views: A Performance Deep Dive Analysis https://danischnider.wordpress.com/2017/09/09/analytic-views-a-performance-deep-dive-analysis/ <p><em>Analytic Views</em>, in combination with <em>Attribute Dimensions</em> and <em>Hierarchies</em>, are very useful for ad-hoc queries in a Star Schema. But how about the performance of this Oracle 12.2 feature? I wanted to know it and analyzed the execution plans of some simple queries.</p> <p><span id="more-416"></span></p> <p>As already mentioned in previous blog posts, I’m a fan of Analytic Views. These new database objects are very powerful and practical for queries in a typical Star Schema. Because I had not the chance yet to use them in real-life BI projects, I have no idea about the performance of queries on Analytic Views. On the Sales History (SH) sample schema, the response times are not an issue, but the execution plans look quite complex. To learn more about Analytic Views, I examined some execution plans in detail.</p> <h1>Execution Plans for Hierarchies</h1> <p>First, I will have a look on Attribute Dimensions and Hierarchies. Attribute Dimensions cannot be used directly in SQL queries, but are the basis for Hierarchies. A query on a Hierarchy is typically used to show the hierarchical tree of a dimension. For the following example, I use the PRODUCTS dimension of the SH schema. The definition of the corresponding Attribute Dimension and Hierarchy is described in the blog post <a href="https://danischnider.wordpress.com/2017/05/31/attribute-dimensions-and-hierarchies-in-oracle-12c/">Attribute Dimensions and Hierarchies in Oracle 12.2</a>.</p> <p>The following simple query returns the full product hierarchy with 5 categories, 22 subcategories and 72 products, displayed in the correct sort order and indent level:</p> <pre style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><br /> SELECT RPAD(‘ ‘, depth * 2) || member_name<br />   FROM sh_products_hier<br /> ORDER BY hier_order;<br /> </pre> <p> </p> <p>To reduce the complexity for the execution plans, I dropped all indexes on the SH schema except the primary key indexes on the dimension tables. The execution plan for the simple query above consists of several parts, each of the reads an aggregates a specific hierarchy level:</p> <ul> <li>Lines 6 and 7 read the whole table and aggregates it on ‘PRODUCT&#8217; level</li> <li>Lines 8 and 9 read the whole table and aggregates it on ‘SUBCATEGORY&#8217; level</li> <li>Lines 10 and 11 read the whole table and aggregates it on ‘CATEGORY&#8217; level</li> <li>Lines 12 to 14 read one row of the table to create the top level ‘ALL PRODUCTS&#8217;</li> </ul> <pre style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> <br />-------------------------------------------------------------------------------------------------<br />| Id  | Operation               | Name        | Starts | E-Rows | A-Rows |   A-Time   | Buffers |<br />-------------------------------------------------------------------------------------------------<br />|   0 | SELECT STATEMENT        |             |      1 |        |    100 |00:00:00.06 |      22 |<br />|   1 |  SORT ORDER BY          |             |      1 |     99 |    100 |00:00:00.06 |      22 |<br />|   2 |   VIEW                  |             |      1 |     99 |    100 |00:00:00.06 |      22 |<br />|   3 |    WINDOW SORT          |             |      1 |     99 |    100 |00:00:00.06 |      22 |<br />|   4 |     VIEW                |             |      1 |     99 |    100 |00:00:00.01 |      22 |<br />|   5 |      UNION-ALL          |             |      1 |        |    100 |00:00:00.01 |      22 |<br />|   6 |       HASH GROUP BY     |             |      1 |     72 |     72 |00:00:00.01 |       7 |<br />|   7 |        TABLE ACCESS FULL| PRODUCTS    |      1 |     72 |     72 |00:00:00.01 |       7 |<br />|   8 |       HASH GROUP BY     |             |      1 |     21 |     22 |00:00:00.03 |       7 |<br />|   9 |        TABLE ACCESS FULL| PRODUCTS    |      1 |     21 |     72 |00:00:00.01 |       7 |<br />|  10 |       HASH GROUP BY     |             |      1 |      5 |      5 |00:00:00.02 |       7 |<br />|  11 |        TABLE ACCESS FULL| PRODUCTS    |      1 |      5 |     72 |00:00:00.01 |       7 |<br />|  12 |       VIEW              |             |      1 |      1 |      1 |00:00:00.01 |       1 |<br />|* 13 |        COUNT STOPKEY    |             |      1 |        |      1 |00:00:00.01 |       1 |<br />|  14 |         INDEX FULL SCAN | PRODUCTS_PK |      1 |      1 |      1 |00:00:00.01 |       1 |<br />-------------------------------------------------------------------------------------------------<br /> <br />Predicate Information (identified by operation id):<br />---------------------------------------------------<br /> <br />  13 - filter(ROWNUM=1)<br /> </pre> <p> </p> <p>Three full table scans must be performed on the dimension table to show the complete hierarchy. But what happens if I want to display only two levels? I run the same query again, but this time with filtering two hierarchy levels: </p> <div> <pre style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> <br /><span style="color:#d4dbd8;">SELECT </span><span style="color:#d4dbd8;">RPAD(' ', depth * 2) || member_name<br /></span><span style="color:#d4dbd8;">  FROM sh_products_hier<br /></span> WHERE level_name IN ('CATEGORY', 'SUBCATEGORY')<br /><span style="color:#d4dbd8;">ORDER BY hier_order;<br /></span> </pre> </div> <p> </p> <p>The only difference in the execution plan is the additional filter in line 2: </p> <div> <pre style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"><span> <br /></span><span style="color:#d4dbd8;">-------------------------------------------------------------------------------------------------<br /></span><span style="color:#d4dbd8;">| Id  | Operation               | Name        | Starts | E-Rows | A-Rows |   A-Time   | Buffers |<br /></span><span style="color:#d4dbd8;">-------------------------------------------------------------------------------------------------<br /></span><span style="color:#d4dbd8;">|   0 | SELECT STATEMENT        |             |      1 |        |     27 |00:00:00.08 |      22 |<br /></span><span style="color:#d4dbd8;">|   1 |  SORT ORDER BY          |             |      1 |     99 |     27 |00:00:00.08 |      22 |<br /></span>|*  2 |   VIEW                  |             |      1 |     99 |     27 |00:00:00.08 |      22 |<br /><span style="color:#d4dbd8;">|   3 |    WINDOW SORT          |             |      1 |     99 |    100 |00:00:00.08 |      22 |<br /></span><span style="color:#d4dbd8;">|   4 |     VIEW                |             |      1 |     99 |    100 |00:00:00.01 |      22 |<br /></span><span style="color:#d4dbd8;">|   5 |      UNION-ALL          |             |      1 |        |    100 |00:00:00.01 |      22 |<br /></span><span style="color:#d4dbd8;">|   6 |       HASH GROUP BY     |             |      1 |     72 |     72 |00:00:00.01 |       7 |<br /></span><span style="color:#d4dbd8;">|   7 |        TABLE ACCESS FULL| PRODUCTS    |      1 |     72 |     72 |00:00:00.01 |       7 |<br /></span><span style="color:#d4dbd8;">|   8 |       HASH GROUP BY     |             |      1 |     21 |     22 |00:00:00.04 |       7 |<br /></span><span style="color:#d4dbd8;">|   9 |        TABLE ACCESS FULL| PRODUCTS    |      1 |     21 |     72 |00:00:00.01 |       7 |<br /></span><span style="color:#d4dbd8;">|  10 |       HASH GROUP BY     |             |      1 |      5 |      5 |00:00:00.04 |       7 |<br /></span><span style="color:#d4dbd8;">|  11 |        TABLE ACCESS FULL| PRODUCTS    |      1 |      5 |     72 |00:00:00.01 |       7 |<br /></span><span style="color:#d4dbd8;">|  12 |       VIEW              |             |      1 |      1 |      1 |00:00:00.01 |       1 |<br /></span><span style="color:#d4dbd8;">|* 13 |        COUNT STOPKEY    |             |      1 |        |      1 |00:00:00.01 |       1 |<br /></span><span style="color:#d4dbd8;">|  14 |         INDEX FULL SCAN | PRODUCTS_PK |      1 |      1 |      1 |00:00:00.01 |       1 |<br /></span><span style="color:#d4dbd8;">-------------------------------------------------------------------------------------------------<br /></span><span style="color:#d4dbd8;"> <br /></span><span style="color:#d4dbd8;">Predicate Information (identified by operation id):<br /></span><span style="color:#d4dbd8;">---------------------------------------------------<br /></span><span style="color:#d4dbd8;"> <br /></span>   2 - filter(("H"."SH_PRODUCTS_HIER#LEVEL_NAME"='CATEGORY' OR <br />              "H"."SH_PRODUCTS_HIER#LEVEL_NAME"='SUBCATEGORY'))<br /><span style="color:#d4dbd8;">  13 - filter(ROWNUM=1)<br /></span><span style="color:#d4dbd8;"> </span></pre> </div> <p> </p> <p>If you are familiar with execution plans on views, you will see that this is a non-mergeable view, and no predicate pushing is used here. In other words: The filter is applied at the end, when all hierarchy levels were read &#8211; even those that are not needed for the result set.</p> <div>For a small table like PRODUCTS with 72 rows, this is not a problem. But for larger dimension tables? A similar query on the CUSTOMERS dimension already takes a few seconds. Although only 14 rows of the two hierarchy levels ‘REGION’ and ‘SUBREGION’ are selected, 7 full table scans on 55000 customers are performed &#8211; one for each hierarchy level:</div> <div> </div> <div> <pre style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> <br />SELECT RPAD(' ', depth * 2)||member_name<br />  FROM sh_customers_hier<br /> WHERE level_name IN ('REGION', 'SUBREGION')<br />ORDER BY hier_order;<br />  </pre> <p> </p> </div> <pre style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"><span> <br /></span>----------------------------------------------------------------------------------------------------------------------------------<br />| Id  | Operation                                  | Name                      | Starts | E-Rows | A-Rows |   A-Time   | Buffers |<br />----------------------------------------------------------------------------------------------------------------------------------<br />|   0 | SELECT STATEMENT                           |                           |      1 |        |     14 |00:00:02.47 |    1556 |<br />|   1 |  SORT ORDER BY                             |                           |      1 |      1 |     14 |00:00:02.47 |    1556 |<br />|   2 |   VIEW                                     | SH_CUSTOMERS_HIER         |      1 |      1 |     14 |00:00:02.38 |    1556 |<br /><span style="color:#10e3ff;">|   3 |    TEMP TABLE TRANSFORMATION               |                           |      1 |        |     14 |00:00:02.38 |    1556 |<br /></span><span style="color:#10e3ff;">|   4 |     LOAD AS SELECT (CURSOR DURATION MEMORY)| SYS_TEMP_0FD9D6ADD_4492F0 |      1 |        |      0 |00:00:00.30 |    1556 |<br /></span><span style="color:#10e3ff;">|*  5 |      HASH JOIN                             |                           |      1 |  55500 |  55500 |00:00:00.29 |    1556 |<br /></span><span style="color:#10e3ff;">|   6 |       TABLE ACCESS FULL                    | COUNTRIES                 |      1 |     23 |     23 |00:00:00.01 |       7 |<br /></span><span style="color:#10e3ff;">|   7 |       TABLE ACCESS FULL                    | CUSTOMERS                 |      1 |  55500 |  55500 |00:00:00.02 |    1546 |<br /></span>|*  8 |     VIEW                                   |                           |      1 |    175K|     14 |00:00:02.08 |       0 |<br />|   9 |      WINDOW SORT                           |                           |      1 |    175K|  56299 |00:00:02.37 |       0 |<br />|  10 |       VIEW                                 |                           |      1 |    175K|  56299 |00:00:02.07 |       0 |<br />|  11 |        UNION-ALL                           |                           |      1 |        |  56299 |00:00:01.52 |       0 |<br />|  12 |         HASH GROUP BY                      |                           |      1 |  55500 |  55500 |00:00:00.52 |       0 |<br />|  13 |          VIEW                              |                           |      1 |  55500 |  55500 |00:00:00.01 |       0 |<br />|  14 |           TABLE ACCESS FULL                | SYS_TEMP_0FD9D6ADD_4492F0 |      1 |  55500 |  55500 |00:00:00.01 |       0 |<br />|  15 |         HASH GROUP BY                      |                           |      1 |  55500 |    620 |00:00:00.05 |       0 |<br />|  16 |          VIEW                              |                           |      1 |  55500 |  55500 |00:00:00.01 |       0 |<br />|  17 |           TABLE ACCESS FULL                | SYS_TEMP_0FD9D6ADD_4492F0 |      1 |  55500 |  55500 |00:00:00.01 |       0 |<br />|  18 |         HASH GROUP BY                      |                           |      1 |  55500 |    145 |00:00:00.03 |       0 |<br />|  19 |          VIEW                              |                           |      1 |  55500 |  55500 |00:00:00.01 |       0 |<br />|  20 |           TABLE ACCESS FULL                | SYS_TEMP_0FD9D6ADD_4492F0 |      1 |  55500 |  55500 |00:00:00.01 |       0 |<br />|  21 |         HASH GROUP BY                      |                           |      1 |   8978 |     19 |00:00:00.01 |       0 |<br />|  22 |          VIEW                              |                           |      1 |  55500 |  55500 |00:00:00.01 |       0 |<br />|  23 |           TABLE ACCESS FULL                | SYS_TEMP_0FD9D6ADD_4492F0 |      1 |  55500 |  55500 |00:00:00.01 |       0 |<br />|  24 |         HASH GROUP BY                      |                           |      1 |     34 |      8 |00:00:00.01 |       0 |<br />|  25 |          VIEW                              |                           |      1 |  55500 |  55500 |00:00:00.01 |       0 |<br />|  26 |           TABLE ACCESS FULL                | SYS_TEMP_0FD9D6ADD_4492F0 |      1 |  55500 |  55500 |00:00:00.01 |       0 |<br />|  27 |         HASH GROUP BY                      |                           |      1 |      6 |      6 |00:00:00.01 |       0 |<br />|  28 |          VIEW                              |                           |      1 |  55500 |  55500 |00:00:00.01 |       0 |<br />|  29 |           TABLE ACCESS FULL                | SYS_TEMP_0FD9D6ADD_4492F0 |      1 |  55500 |  55500 |00:00:00.01 |       0 |<br />|  30 |         VIEW                               |                           |      1 |      1 |      1 |00:00:00.01 |       0 |<br />|* 31 |          COUNT STOPKEY                     |                           |      1 |        |      1 |00:00:00.01 |       0 |<br />|  32 |           VIEW                             |                           |      1 |      1 |      1 |00:00:00.01 |       0 |<br />|  33 |            TABLE ACCESS FULL               | SYS_TEMP_0FD9D6ADD_4492F0 |      1 |  55500 |      1 |00:00:00.01 |       0 |<br />----------------------------------------------------------------------------------------------------------------------------------<br /> <br />Predicate Information (identified by operation id):<br />---------------------------------------------------<br /> <br />   5 - access("A"."COUNTRY_ID"="B"."COUNTRY_ID")<br />   8 - filter(("H"."SH_CUSTOMERS_HIER#LEVEL_NAME"='REGION' OR "H"."SH_CUSTOMERS_HIER#LEVEL_NAME"='SUBREGION'))<br />  31 - filter(ROWNUM=1)<br /> </pre> <p> </p> <p>Another interesting detail can be seen in this execution plan (blue marked lines 3 to 7): Because the Attribute Dimension is built on a view that joins the two tables CUSTOMERS and COUNTRIES, a temporary table is created first to avoid the the join has to be executed for each hierarchy level. This is a good approach, but the real performance issue is that the complete dimension table must be scanned for each hierarchy level. This may cause poor performance for large dimension tables with a high number of hierarchy levels.</p> <h1>Execution Plans for Analytic Views</h1> <p>More interesting than simple queries on a single <em>Hierarchy</em> are queries on an <em>Analytic View</em>. Next, I will have a look at the execution plan of a query on SH_SALES_HISTORY_AV. The description of this Analytic View can be found in the blog post <a href="https://danischnider.wordpress.com/2017/06/28/analytic-views-powerful-oracle-12-2-feature-for-business-intelligence/">Analytic Views: Powerful Oracle 12.2 Feature for Business Intelligence</a>. I start with a simple query that uses only one dimension hierarchy (SH_PRODUCTS_HIER).</p> <div> <pre style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> <br />SELECT RPAD(' ', sh_products_hier.depth * 2)<br />            ||sh_products_hier.member_name AS products_hier<br />      , amount_sold<br />      , quantity_sold<br />  FROM sh_sales_history_av<br />       HIERARCHIES (sh_products_hier)<br /> WHERE sh_products_hier.level_name IN ('CATEGORY', 'SUBCATEGORY')<br />ORDER BY sh_products_hier.hier_order;<br /> </pre> <p> </p> <p>The SQL statement looks simple, but what happens in the background? The execution plan shows some interesting details:</p> </div> <div> <pre style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"><span><span><span style="color:#fff700;"> <br /></span></span></span><span style="color:#fff700;">----------------------------------------------------------------------------------------------------------------------------------------<br /></span><span style="color:#fff700;">| Id  | Operation                                        | Name                      | Starts | E-Rows | A-Rows |   A-Time   | Buffers |<br /></span><span style="color:#fff700;">----------------------------------------------------------------------------------------------------------------------------------------<br /></span><span style="color:#fff700;">|   0 | SELECT STATEMENT                                 |                           |      1 |        |     27 |00:00:00.60 |    4724 |<br /></span><span style="color:#fff700;">|   1 |  SORT ORDER BY                                   |                           |      1 |      1 |     27 |00:00:00.60 |    4724 |<br /></span><span style="color:#fff700;">|   2 |   VIEW                                           | SH_SALES_HISTORY_AV       |      1 |      1 |     27 |00:00:00.60 |    4724 |<br /></span><span style="color:#fff700;">|   3 |    TEMP TABLE TRANSFORMATION                     |                           |      1 |        |     27 |00:00:00.60 |    4724 |<br /></span><span style="color:#fff700;">|   4 |     LOAD AS SELECT (CURSOR DURATION MEMORY)      | SYS_TEMP_0FD9D6B37_4492F0 |      1 |        |      0 |00:00:00.06 |      15 |<br /></span><span style="color:#fff700;">|   5 |      WINDOW SORT                                 |                           |      1 |     26 |     27 |00:00:00.06 |      14 |<br /></span><span style="color:#fff700;">|   6 |       VIEW                                       |                           |      1 |     26 |     27 |00:00:00.04 |      14 |<br /></span><span style="color:#fff700;">|   7 |        UNION-ALL                                 |                           |      1 |        |     27 |00:00:00.04 |      14 |<br /></span><span style="color:#fff700;">|   8 |         HASH GROUP BY                            |                           |      1 |     21 |     22 |00:00:00.04 |       7 |<br /></span><span style="color:#fff700;">|   9 |          TABLE ACCESS FULL                       | PRODUCTS                  |      1 |     21 |     72 |00:00:00.01 |       7 |<br /></span><span style="color:#fff700;">|  10 |         HASH GROUP BY                            |                           |      1 |      5 |      5 |00:00:00.02 |       7 |<br /></span><span style="color:#fff700;">|  11 |          TABLE ACCESS FULL                       | PRODUCTS                  |      1 |      5 |     72 |00:00:00.01 |       7 |<br /></span><span style="color:#fff700;">|  12 |     LOAD AS SELECT (CURSOR DURATION MEMORY)      | SYS_TEMP_0FD9D6B38_4492F0 |      1 |        |      0 |00:00:00.01 |       0 |<br /></span><span style="color:#fff700;">|* 13 |      VIEW                                        |                           |      1 |     26 |     27 |00:00:00.01 |       0 |<br /></span><span style="color:#fff700;">|  14 |       TABLE ACCESS FULL                          | SYS_TEMP_0FD9D6B37_4492F0 |      1 |     26 |     27 |00:00:00.01 |       0 |<br /></span><span style="color:#ff9500;">|* 15 |     HASH JOIN                                    |                           |      1 |     10 |     27 |00:00:00.54 |    4708 |<br /></span><span style="color:#ff9500;">|  16 |      VIEW                                        |                           |      1 |      2 |     27 |00:00:00.46 |    4708 |<br /></span><span style="color:#ff9500;">|  17 |       HASH GROUP BY                              |                           |      1 |      2 |     27 |00:00:00.46 |    4708 |<br /></span><span style="color:#ff9500;">|  18 |        NESTED LOOPS                              |                           |      1 |     31 |     46 |00:00:00.38 |    4708 |<br /></span><span style="color:#ff9500;">|  19 |         VIEW                                     |                           |      1 |     26 |     22 |00:00:00.38 |    4708 |<br /></span><span style="color:#ff9500;">|  20 |          TEMP TABLE TRANSFORMATION               |                           |      1 |        |     22 |00:00:00.38 |    4708 |<br /></span><span style="color:#00fdf7;">|  21 |           LOAD AS SELECT (CURSOR DURATION MEMORY)| SYS_TEMP_0FD9D6B36_4492F0 |      1 |        |      0 |00:00:00.16 |      14 |<br /></span><span style="color:#00fdf7;">|  22 |            HASH GROUP BY                         |                           |      1 |      4 |     22 |00:00:00.16 |      14 |<br /></span><span style="color:#00fdf7;">|  23 |             KEY VECTOR CREATE BUFFERED           | :KV0000                   |      1 |      4 |     22 |00:00:00.10 |      14 |<br /></span><span style="color:#00fdf7;">|  24 |              VIEW                                |                           |      1 |     73 |     72 |00:00:00.04 |      14 |<br /></span><span style="color:#00fdf7;">|  25 |               UNION-ALL                          |                           |      1 |        |     72 |00:00:00.04 |      14 |<br /></span><span style="color:#00fdf7;">|* 26 |                HASH JOIN SEMI                    |                           |      1 |      1 |     72 |00:00:00.04 |       7 |<br /></span><span style="color:#00fdf7;">|  27 |                 TABLE ACCESS FULL                | PRODUCTS                  |      1 |     72 |     72 |00:00:00.01 |       7 |<br /></span><span style="color:#00fdf7;">|  28 |                 VIEW                             | VW_NSO_1                  |      1 |     26 |     22 |00:00:00.01 |       0 |<br /></span><span style="color:#00fdf7;">|* 29 |                  VIEW                            |                           |      1 |     26 |     22 |00:00:00.01 |       0 |<br /></span><span style="color:#00fdf7;">|  30 |                   TABLE ACCESS FULL              | SYS_TEMP_0FD9D6B38_4492F0 |      1 |     26 |     27 |00:00:00.01 |       0 |<br /></span><span style="color:#00fdf7;">|* 31 |                HASH JOIN SEMI                    |                           |      1 |     72 |      0 |00:00:00.06 |       7 |<br /></span><span style="color:#00fdf7;">|* 32 |                 HASH JOIN ANTI NA                |                           |      1 |     72 |      0 |00:00:00.06 |       7 |<br /></span><span style="color:#00fdf7;">|  33 |                  TABLE ACCESS FULL               | PRODUCTS                  |      1 |     72 |     72 |00:00:00.01 |       7 |<br /></span><span style="color:#00fdf7;">|* 34 |                  VIEW                            |                           |      1 |     26 |     22 |00:00:00.01 |       0 |<br /></span><span style="color:#00fdf7;">|  35 |                   TABLE ACCESS FULL              | SYS_TEMP_0FD9D6B38_4492F0 |      1 |     26 |     27 |00:00:00.01 |       0 |<br /></span><span style="color:#00fdf7;">|  36 |                 VIEW                             | VW_NSO_2                  |      0 |     26 |      0 |00:00:00.01 |       0 |<br /></span><span style="color:#00fdf7;">|* 37 |                  VIEW                            |                           |      0 |     26 |      0 |00:00:00.01 |       0 |<br /></span><span style="color:#00fdf7;">|  38 |                   TABLE ACCESS FULL              | SYS_TEMP_0FD9D6B38_4492F0 |      0 |     26 |      0 |00:00:00.01 |       0 |<br /></span><span style="color:#11f900;">|  39 |           HASH GROUP BY                          |                           |      1 |      3 |     22 |00:00:00.22 |    4694 |<br /></span><span style="color:#11f900;">|* 40 |            HASH JOIN                             |                           |      1 |      4 |     22 |00:00:00.14 |    4694 |<br /></span><span style="color:#11f900;">|  41 |             VIEW                                 | VW_VT_C9E7DF0B            |      1 |      4 |     22 |00:00:00.08 |    4694 |<br /></span><span style="color:#11f900;">|  42 |              VECTOR GROUP BY                     |                           |      1 |      4 |     22 |00:00:00.08 |    4694 |<br /></span><span style="color:#11f900;">|  43 |               HASH GROUP BY                      |                           |        |      4 |        |            |         |<br /></span><span style="color:#11f900;">|  44 |                KEY VECTOR USE                    | :KV0000                   |      1 |  51047 |    918K|00:00:00.12 |    4694 |<br /></span><span style="color:#11f900;">|  45 |                 PARTITION RANGE ALL              |                           |      1 |    918K|    918K|00:00:00.08 |    4694 |<br /></span><span style="color:#11f900;">|* 46 |                  TABLE ACCESS FULL               | SALES                     |     20 |    918K|    918K|00:00:00.06 |    4694 |<br /></span><span style="color:#11f900;">|  47 |             TABLE ACCESS FULL                    | SYS_TEMP_0FD9D6B36_4492F0 |      1 |      4 |     22 |00:00:00.01 |       0 |<br /></span><span style="color:#ff9500;">|* 48 |         VIEW                                     |                           |     22 |      1 |     46 |00:00:00.01 |       0 |<br /></span><span style="color:#ff9500;">|  49 |          TABLE ACCESS FULL                       | SYS_TEMP_0FD9D6B38_4492F0 |     22 |     26 |    594 |00:00:00.01 |       0 |<br /></span><span style="color:#ff9500;">|* 50 |      VIEW                                        |                           |      1 |     26 |     27 |00:00:00.01 |       0 |<br /></span><span style="color:#ff9500;">|  51 |       TABLE ACCESS FULL                          | SYS_TEMP_0FD9D6B37_4492F0 |      1 |     26 |     27 |00:00:00.01 |       0 |<br /></span>----------------------------------------------------------------------------------------------------------------------------------------<br /> </pre> </div> <p> </p> <p>First, I realized that only the required levels of the hierarchy are selected. Unlike in the previous queries on Hierarchies, the optimizer is now able to read only the levels ‘SUBCATEGORY’ (line 9) and ‘CATEGORY’ (line 11) from the dimension table PRODUCTS. Lines 4 to 11 create a temporary table with the information from SH_PRODUCTS_HIER and filters the result to the required levels.</p> <pre style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><br />Predicate Information (identified by operation id):<br />---------------------------------------------------<br /> <br />  13 - filter(("H"."SH_PRODUCTS_ATTR_DIM#SH_PRODUCTS_HIER#LEVEL_NAME"='CATEGORY' OR <br />              "H"."SH_PRODUCTS_ATTR_DIM#SH_PRODUCTS_HIER#LEVEL_NAME"='SUBCATEGORY'))<br /> </pre> <p> </p> <p>Even more interesting is the second part of the execution plan (lines 15 to 51). It contains a <em>Vector Transformation</em> &#8211; a special query transformation for efficient joins in a Star Schema. It is performed in two phases:</p> <ul> <li>In phase 1, the dimension table is scanned to build a so called key vector (here :KV0000). The key vector is used to derive and aggregate the required rows from the dimension table. The result is stored in a temporary table. If more than one dimension with filters occurs in the query, this step would be performed for each of the dimensions. Phase 1 is marked blue in the execution plan above (lines 21 to 38).</li> <li>In phase 2, a full table scan on the fact table is performed with a filter on the key vector (green part of the execution plan). Finally, a join back to to the temporary tables is needed to get the dimension columns for the result set (orange part of the execution plan.</li> </ul> <p>Although a full table scan on all partitions of the fact table SALES is executed, this is very efficient because of the key vector filter in line 46:</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span><span style="color:#01f900;">  46 &#8211; filter(SYS_OP_KEY_VECTOR_FILTER(&#8220;F&#8221;.&#8221;PROD_ID&#8221;,:KV0000))</span></span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p><span><br /></span></p> <h1><span>Why is a Vector Transformation Used?</span></h1> <p><span>A <em>Vector Transformation</em> is normally used for In-Memory aggregations when the Oracle Database In-Memory option is activated (i.e. <em>inmemory_size</em> &gt; 0). On my test database, this is the case, but none of the tables are currently defined with the INMEMORY clause. And even if this would be the case, the <em>Vector Transformation</em> usually works only if the fact table contains more than 10 million rows (undocumented parameter “<em>_optimizer_vector_min_fact_rows&#8221;</em>). Why is a <em>Vector Transformation</em> used here on a fact table with less than 1 million rows that are not populated into the In-Memory Column Store?</span></p> <p>To find the reason, I used the PL/SQL procedure DBMS_UTLITY.EXPAND_SQL_TEXT that was introduced in Oracle 12c. It expands the SQL statement that is executed behind the Analytic View. The following statements can be used for this purpose:</p> <pre style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> <br />CREATE GLOBAL TEMPORARY TABLE clob_output (text CLOB);<br /> <br />DECLARE<br />   v_expanded_query CLOB;<br />   v_original_query CLOB := '<br /><span style="color:#f3fef1;">SELECT sh_products_hier.member_name AS products_hier<br /></span><span style="color:#f3fef1;">      , amount_sold<br /></span><span style="color:#f3fef1;">      , quantity_sold<br /></span><span style="color:#f3fef1;">  FROM sh_sales_history_av<br /></span><span style="color:#f3fef1;">       HIERARCHIES (sh_products_hier)<br /></span><span style="color:#f3fef1;"> WHERE sh_products_hier.level_name IN (''CATEGORY'', ''SUBCATEGORY'')<br /></span><span style="color:#f3fef1;">ORDER BY sh_products_hier.hier_order</span><span>';<br /></span> <br />BEGIN<br />   DBMS_UTILITY.EXPAND_SQL_TEXT(v_original_query, v_expanded_query);<br />   INSERT INTO clob_output VALUES (v_expanded_query);<br />END;<br />/<br /> <br />SELECT * FROM clob_output;<br /> </pre> <p><span><br /></span></p> <p><span>After formatting the SQL statement with the Formatter in SQL Developer, I found the <em>/*+ VECTOR_TRANSFORM */</em> hint in the code:</span></p> <div> <pre style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"><span style="color:#fff400;"><br />SELECT "A1"."SH_PRODUCTS_ATTR_DIM#SH_PRODUCTS_HIER#MEMBER_NAME"</span><span style="color:#fff400;"> "PRODUCTS_HIER"<br /></span><span style="color:#fff400;">   FROM</span><span style="color:#fff400;"> (<br /></span><span style="color:#d4d1cd;">(some more lines)<br /></span><span style="color:#fffcf7;"> </span><span style="color:#fff200;">              FROM<br /></span><span style="color:#fff200;">               (<br /></span><span style="color:#fff200;">                   SELECT<br /></span><span>                     </span><span style="color:#00fdfc;">/*+ VECTOR_TRANSFORM */<br /></span><span style="color:#fff200;">                     MAX(CAST(NULL AS NUMBER(1))) "NULL_COL$"<br /></span><span style="color:#fff200;">                   ,"A4"."SH_PRODUCTS_ATTR_DIM#SH_PRODUCTS_HIER#PROD_CATEGORY"<br /></span><span style="color:#d4d1cd;">(around 1500 more lines)<br /></span> </pre> </div> <p> </p> <p>This hint is always there, even if the Oracle Database In-Memory option is disabled. In this case, the hint is ignored, and a different execution plan is generated. Because of the <em>/*+ VECTOR_TRANSFORM */ </em> hint, my assumption is that Oracle implemented Analytic Views mainly for environments with Oracle Database In-Memory. But can I still use them efficiently without this option? To find an answer, I finally examine the execution plans of a more complex query in two different environments.</p> <h1>A Realistic Example</h1> <p>The following query uses three dimension hierarchies and two selections &#8211; one on level ‘Country’ of the CUSTOMERS dimension and one on level ‘Product Category’ of the PRODUCTS dimension. If I would run this kind of query on a Star Schema without an Analytic View, I would expect a <em>Star Transformation</em> (or a <em>Vector Transformation</em> if the In-Memory option is available). The important question for me is: Do I have to change the physical design of my data marts because of Analytic views, or can I still use the existing rules?</p> <pre style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><br />SELECT  sh_customers_hier.member_name state_name<br />     ,  RPAD(' ', sh_products_hier.depth * 2)<br />            ||sh_products_hier.member_name AS products_hier<br />     ,  RPAD(' ', sh_times_calendar_hier.depth * 2)<br />            ||sh_times_calendar_hier.member_name AS calendar_hier<br />     , amount_sold<br />     , quantity_sold<br />  FROM sh_sales_history_av<br />       HIERARCHIES (sh_times_calendar_hier, sh_products_hier, sh_customers_hier)<br /> WHERE sh_times_calendar_hier.level_name IN ('CALENDAR_YEAR', 'CALENDAR_QUARTER')<br />   AND sh_customers_hier.level_name = 'STATE_PROVINCE'<br />   AND sh_customers_hier.country_name = 'Germany'<br />   AND sh_products_hier.prod_category = 'Electronics'<br />ORDER BY<br />       sh_customers_hier.hier_order<br />     , sh_products_hier.hier_order<br />     , sh_times_calendar_hier.hier_order;<br /> </pre> <p> </p> <p>In the first environment, In-Memory is disabled. Bitmap indexes are created on all dimension keys of the fact table, and the parameter <em>star_transformation_enabled</em> is set to TRUE. These are the typical recommendations for a Star Schema. </p> <p>The execution plan for the query above would blow up this blog post, so I do not copy the complete plan into the post. Some parts of the plan are replaced by short comments, but the most important message is: <em>Star Transformation</em> works as expected. Of course, some additional overhead is needed to drill-up the the upper hierarchy levels, but as we have seen before, this works fine.</p> <pre style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> <br />--------------------------------------------------------------------------------------------------------------------------------------------------<br />| Id  | Operation                                                  | Name                      | Starts | E-Rows | A-Rows |   A-Time   | Buffers |<br />--------------------------------------------------------------------------------------------------------------------------------------------------<br />|   0 | SELECT STATEMENT                                           |                           |      1 |        |   2893 |00:00:00.47 |   32271 |<br />|   1 |  SORT ORDER BY                                             |                           |      1 |      1 |   2893 |00:00:00.47 |   32271 |<br />|   2 |   VIEW                                                     | SH_SALES_HISTORY_AV       |      1 |      1 |   2893 |00:00:00.47 |   32271 |<br />|   3 |    TEMP TABLE TRANSFORMATION                               |                           |      1 |        |   2893 |00:00:00.47 |   32271 |<br />|   4 |     LOAD AS SELECT (CURSOR DURATION MEMORY)                | SYS_TEMP_0FD9D6717_3233B9 |      1 |        |      0 |00:00:00.01 |     123 |<br /><span style="color:#cecece;">____________ ...load SH_TIMES_CALENDAR_HIER<br /></span>|  14 |     LOAD AS SELECT (CURSOR DURATION MEMORY)                | SYS_TEMP_0FD9D6718_3233B9 |      1 |        |      0 |00:00:00.01 |      16 |<br /><span style="color:#cecece;">____________ ...load SH_PRODUCTS_HIER<br /></span>|  27 |     LOAD AS SELECT (CURSOR DURATION MEMORY)                | SYS_TEMP_0FD9D6719_3233B9 |      1 |        |      0 |00:00:00.09 |    1556 |<br /><span style="color:#cecece;">____________ ...join CUSTOMERS and COUNTRIES<br /></span>|  39 |     LOAD AS SELECT (CURSOR DURATION MEMORY)                | SYS_TEMP_0FD9D671C_3233B9 |      1 |        |      0 |00:00:00.01 |       0 |<br /><span style="color:#cecece;">____________ ...load SH_CUSTOMERS_HIER<br /></span>|* 42 |     HASH JOIN                                              |                           |      1 |      1 |   2893 |00:00:00.36 |   30575 |<br />|* 43 |      HASH JOIN                                             |                           |      1 |      1 |   2893 |00:00:00.35 |   30575 |<br />|* 44 |       HASH JOIN                                            |                           |      1 |      1 |   2893 |00:00:00.35 |   30575 |<br /><span style="color:#cecece;"> ______________ ...some more joins and aggregations<br /></span>|  72 |                    VIEW                                    | VW_ST_F064CFCC            |      1 |     52 |    116K|00:00:00.15 |   30423 |<br />|  73 |                     NESTED LOOPS                           |                           |      1 |     52 |    116K|00:00:00.13 |   30423 |<br />|  74 |                      PARTITION RANGE ALL                   |                           |      1 |     52 |    116K|00:00:00.03 |   29751 |<br />|  75 |                       BITMAP CONVERSION TO ROWIDS          |                           |     28 |     52 |    116K|00:00:00.08 |   29751 |<br />|  76 |                        BITMAP AND                          |                           |     28 |        |     16 |00:00:00.07 |   29751 |<br />|  77 |                         BITMAP MERGE                       |                           |     28 |        |     16 |00:00:00.07 |   29495 |<br /><span style="color:#cecece;">________________________________ ...bitmap merge for TIMES dimension<br /></span>|  99 |                         BITMAP MERGE                       |                           |     28 |        |     16 |00:00:00.01 |     256 |<br /><span style="color:#cecece;">________________________________ ...bitmap merge for PRODUCTS dimension<br /></span>|*142 |                           BITMAP INDEX RANGE SCAN          | SALES_PROD_BIX            |    208 |        |    180 |00:00:00.01 |     228 |<br />| 143 |                      TABLE ACCESS BY USER ROWID            | SALES                     |    116K|      1 |    116K|00:00:00.05 |     672 |<br />| 144 |                   VIEW                                     |                           |      1 |     74 |     13 |00:00:00.01 |      30 |<br />| 145 |                    UNION-ALL                               |                           |      1 |        |     13 |00:00:00.01 |      30 |<br />| 146 |                     NESTED LOOPS                           |                           |      1 |      1 |     13 |00:00:00.01 |      17 |<br />| 147 |                      NESTED LOOPS                          |                           |      1 |      4 |     13 |00:00:00.01 |       4 |<br /><span style="color:#cecece;">_____________________________ ...join back to several temporary tables<br /></span>|*184 |        VIEW                                                |                           |      1 |  55500 |     16 |00:00:00.01 |       0 |<br />| 185 |         TABLE ACCESS FULL                                  | SYS_TEMP_0FD9D671A_3233B9 |      1 |  55500 |    145 |00:00:00.01 |       0 |<br />|*186 |       VIEW                                                 |                           |      1 |     25 |     25 |00:00:00.01 |       0 |<br />| 187 |        TABLE ACCESS FULL                                   | SYS_TEMP_0FD9D6717_3233B9 |      1 |     25 |     25 |00:00:00.01 |       0 |<br />|*188 |      VIEW                                                  |                           |      1 |     98 |     18 |00:00:00.01 |       0 |<br />| 189 |       TABLE ACCESS FULL                                    | SYS_TEMP_0FD9D6718_3233B9 |      1 |     98 |     99 |00:00:00.01 |       0 |<br />--------------------------------------------------------------------------------------------------------------------------------------------------<br /> <br />Note<br />-----<br />   - star transformation used for this statement<br /> </pre> <p><span><span><br /></span></span></p> <p><span><span>In the second environment, In-Memory is enabled and all tables of the SH schema are populated into the In-Memory Column Store. No indexes except the primary key indexes on the dimension tables are created.</span></span></p> <p><span>Because of the hint explained above, a <em>Vector Transformation</em> in executed here, even if the fact table is actually too small for this. But it works fine: three key vectors are created, one for each dimension. In the second phase, the key vectors are used to derive the required rows of the fact table. Finally, several join backs to the temporary tables of the dimensions are performed.</span></p> <pre style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span><br />-----------------------------------------------------------------------------------------------------------------------------------------------------<br /></span>| Id  | Operation                                            | Name                      | Starts | E-Rows | A-Rows |   A-Time   | Buffers | Reads  |<br />-----------------------------------------------------------------------------------------------------------------------------------------------------<br />|   0 | SELECT STATEMENT                                     |                           |      1 |        |   2893 |00:00:00.58 |    2178 |      3 |<br />|   1 |  SORT ORDER BY                                       |                           |      1 |      1 |   2893 |00:00:00.58 |    2178 |      3 |<br />|   2 |   VIEW                                               | SH_SALES_HISTORY_AV       |      1 |      1 |   2893 |00:00:00.61 |    2178 |      3 |<br />|   3 |    TEMP TABLE TRANSFORMATION                         |                           |      1 |        |   2893 |00:00:00.59 |    2178 |      3 |<br />|   4 |     LOAD AS SELECT (CURSOR DURATION MEMORY)          | SYS_TEMP_0FD9D6E3E_4492F0 |      1 |        |      0 |00:00:00.01 |     123 |      0 |<br /><span style="color:#cecece;">____________ ...load SH_TIMES_CALENDAR_HIER<br /></span>|  13 |          TABLE ACCESS INMEMORY FULL                  | TIMES                     |      1 |      5 |   1826 |00:00:00.01 |      61 |      0 |<br />|  14 |     LOAD AS SELECT (CURSOR DURATION MEMORY)          | SYS_TEMP_0FD9D6E3F_4492F0 |      1 |        |      0 |00:00:00.01 |      21 |      0 |<br />|  15 |      WINDOW SORT                                     |                           |      1 |     98 |     99 |00:00:00.01 |      21 |      0 |<br />|  16 |       VIEW                                           |                           |      1 |     98 |     99 |00:00:00.01 |      21 |      0 |<br />|  17 |        UNION-ALL                                     |                           |      1 |        |     99 |00:00:00.01 |      21 |      0 |<br />|  18 |         HASH GROUP BY                                |                           |      1 |     72 |     72 |00:00:00.01 |       7 |      0 |<br />|  19 |          TABLE ACCESS INMEMORY FULL                  | PRODUCTS                  |      1 |     72 |     72 |00:00:00.01 |       7 |      0 |<br />|  20 |         HASH GROUP BY                                |                           |      1 |     21 |     22 |00:00:00.01 |       7 |      0 |<br />|  21 |          TABLE ACCESS INMEMORY FULL                  | PRODUCTS                  |      1 |     21 |     72 |00:00:00.01 |       7 |      0 |<br />|  22 |         HASH GROUP BY                                |                           |      1 |      5 |      5 |00:00:00.01 |       7 |      0 |<br />|  23 |          TABLE ACCESS INMEMORY FULL                  | PRODUCTS                  |      1 |      5 |     72 |00:00:00.01 |       7 |      0 |<br />|  24 |     LOAD AS SELECT (CURSOR DURATION MEMORY)          | SYS_TEMP_0FD9D6E40_4492F0 |      1 |        |      0 |00:00:00.10 |    1556 |      3 |<br /><span style="color:#cecece;">____________ ...join CUSTOMERS and COUNTRIES<br /></span>|  28 |     LOAD AS SELECT (CURSOR DURATION MEMORY)          | SYS_TEMP_0FD9D6E41_4492F0 |      1 |        |      0 |00:00:00.13 |       0 |      0 | <br /><span style="color:#cecece;">____________ ...load SH_CUSTOMERS_HIER<br /></span>|* 39 |     HASH JOIN                                        |                           |      1 |      1 |   2893 |00:00:00.34 |     477 |      0 |</pre> <pre style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;">|* 40 |      HASH JOIN                                       |                           |      1 |      1 |   2893 |00:00:00.34 |     477 |      0 |<br />|* 41 |       HASH JOIN                                      |                           |      1 |      1 |   2893 |00:00:00.33 |     477 |      0 |<br />|  42 |        VIEW                                          |                           |      1 |      1 |   2893 |00:00:00.35 |     477 |      0 |<br />|  43 |         HASH GROUP BY                                |                           |      1 |      1 |   2893 |00:00:00.33 |     477 |      0 |<br />|  44 |          NESTED LOOPS                                |                           |      1 |      1 |   8076 |00:00:00.48 |     477 |      0 |<br />|  45 |           NESTED LOOPS                               |                           |      1 |      1 |   2692 |00:00:00.27 |     477 |      0 |<br />|* 46 |            HASH JOIN                                 |                           |      1 |      1 |   1346 |00:00:00.15 |     477 |      0 |<br />|  47 |             VIEW                                     |                           |      1 |   1035 |   1346 |00:00:00.16 |     477 |      0 |<br />|  48 |              TEMP TABLE TRANSFORMATION               |                           |      1 |        |   1346 |00:00:00.15 |     477 |      0 |<br />|  49 |               LOAD AS SELECT (CURSOR DURATION MEMORY)| SYS_TEMP_0FD9D6E3D_4492F0 |      1 |        |      0 |00:00:00.01 |     122 |      0 |<br />|  50 |                HASH GROUP BY                         |                           |      1 |      2 |     20 |00:00:00.01 |     122 |      0 |<br />|  51 |                 KEY VECTOR CREATE BUFFERED           | :KV0000                   |      1 |      2 |     20 |00:00:00.01 |     122 |      0 |<br /><span style="color:#cecece;">________________________ ...build key vector for TIMES dimension<br /></span>|  71 |               LOAD AS SELECT (CURSOR DURATION MEMORY)| SYS_TEMP_0FD9D6E3B_4492F0 |      1 |        |      0 |00:00:00.01 |      31 |      0 |<br />|  72 |                HASH GROUP BY                         |                           |      1 |     13 |     13 |00:00:00.01 |      31 |      0 |<br />|  73 |                 KEY VECTOR CREATE BUFFERED           | :KV0001                   |      1 |     13 |     13 |00:00:00.01 |      31 |      0 |<br /><span style="color:#cecece;">________________________ ...build key vector for PRODUCTS dimension<br /></span>| 103 |               LOAD AS SELECT (CURSOR DURATION MEMORY)| SYS_TEMP_0FD9D6E3C_4492F0 |      1 |        |      0 |00:00:00.01 |       0 |      0 |<br />| 104 |                HASH GROUP BY                         |                           |      1 |     23 |     16 |00:00:00.01 |       0 |      0 |<br />| 105 |                 KEY VECTOR CREATE BUFFERED           | :KV0002                   |      1 |     23 |     16 |00:00:00.01 |       0 |      0 |<br /><span style="color:#cecece;">________________________ ...build key vector for CUSTOMERS dimension<br /></span>| 108 |               HASH GROUP BY                          |                           |      1 |   1035 |   1346 |00:00:00.13 |     324 |      0 |<br />|*109 |                HASH JOIN                             |                           |      1 |   5384 |   1346 |00:00:00.22 |     324 |      0 |<br />| 110 |                 TABLE ACCESS FULL                    | SYS_TEMP_0FD9D6E3D_4492F0 |      1 |     20 |     20 |00:00:00.01 |       0 |      0 |<br />|*111 |                 HASH JOIN                            |                           |      1 |   1346 |   1346 |00:00:00.20 |     324 |      0 |<br />| 112 |                  TABLE ACCESS FULL                   | SYS_TEMP_0FD9D6E3C_4492F0 |      1 |     23 |     16 |00:00:00.01 |       0 |      0 |<br />|*113 |                  HASH JOIN                           |                           |      1 |   1346 |   1346 |00:00:00.18 |     324 |      0 |<br />| 114 |                   TABLE ACCESS FULL                  | SYS_TEMP_0FD9D6E3B_4492F0 |      1 |      3 |     13 |00:00:00.01 |       0 |      0 |<br />| 115 |                   VIEW                               | VW_VT_E0C1EF3A            |      1 |   1346 |   1346 |00:00:00.12 |     324 |      0 |<br />| 116 |                    VECTOR GROUP BY                   |                           |      1 |   1346 |   1346 |00:00:00.12 |     324 |      0 |<br />| 117 |                     HASH GROUP BY                    |                           |        |   1346 |        |            |         |        |<br />| 118 |                      KEY VECTOR USE                  | :KV0000                   |      1 |   1346 |   1346 |00:00:00.02 |     324 |      0 |<br />| 119 |                       KEY VECTOR USE                 | :KV0001                   |      1 |   1346 |   1346 |00:00:00.01 |     324 |      0 |<br />| 120 |                        KEY VECTOR USE                | :KV0002                   |      1 |  13017 |   1346 |00:00:00.01 |     324 |      0 |<br />| 121 |                         PARTITION RANGE ITERATOR     |                           |      1 |    918K|   1346 |00:00:00.01 |     324 |      0 |<br />|*122 |                          TABLE ACCESS INMEMORY FULL  | SALES                     |     16 |    918K|   1346 |00:00:00.12 |     324 |      0 |<br />|*123 |             VIEW                                     |                           |      1 |  55500 |     16 |00:00:00.01 |       0 |      0 |<br />| 124 |              TABLE ACCESS FULL                       | SYS_TEMP_0FD9D6E41_4492F0 |      1 |  55500 |    145 |00:00:00.01 |       0 |      0 |<br />|*125 |            VIEW                                      |                           |   1346 |      1 |   2692 |00:00:00.04 |       0 |      0 |<br />| 126 |             TABLE ACCESS FULL                        | SYS_TEMP_0FD9D6E42_4492F0 |   1346 |     25 |  33650 |00:00:00.11 |       0 |      0 |<br />|*127 |           VIEW                                       |                           |   2692 |     25 |   8076 |00:00:00.11 |       0 |      0 |<br />| 128 |            TABLE ACCESS FULL                         | SYS_TEMP_0FD9D6E43_4492F0 |   2692 |     98 |  48456 |00:00:00.16 |       0 |      0 |<br />|*129 |        VIEW                                          |                           |      1 |  55500 |     16 |00:00:00.01 |       0 |      0 |<br />| 130 |         TABLE ACCESS FULL                            | SYS_TEMP_0FD9D6E41_4492F0 |      1 |  55500 |    145 |00:00:00.01 |       0 |      0 |<br />|*131 |       VIEW                                           |                           |      1 |     25 |     25 |00:00:00.01 |       0 |      0 |<br />| 132 |        TABLE ACCESS FULL                             | SYS_TEMP_0FD9D6E3E_4492F0 |      1 |     25 |     25 |00:00:00.01 |       0 |      0 |<br />|*133 |      VIEW                                            |                           |      1 |     98 |     18 |00:00:00.01 |       0 |      0 |<br />| 134 |       TABLE ACCESS FULL                              | SYS_TEMP_0FD9D6E3F_4492F0 |      1 |     98 |     99 |00:00:00.01 |       0 |      0 |<br />-----------------------------------------------------------------------------------------------------------------------------------------------------<br /> <br />Note<br />-----<br />  - vector transformation used for this statement<br /> </pre> <p><span><br /></span></p> <p><span>Both execution plans show that a typical query on a Star Schema can be performed in the same way as if the query is executed on the tables directly. The overhead with the Analytic View reduces the complexity of the query, but does not slow down the performance.</span></p> <h1><span>Conclusion</span></h1> <p>When I did my first attempts with Analytic Views, I was surprised about the complexity of the execution plans and was scared a bit about the performance aspects in real projects. But after examining the plans in detail, I am optimistic that Analytic Views do not only give us a lot of new possibilities for queries on a Star Schema. It also allows to run the queries with the same or even better performance than with “hand-made” SQL statements on the fact and dimension tables directly.</p> <p>The only issue I found are for queries that are executed on a Hierarchy directly. This could slow down the performance for large dimensions with many hierarchy levels. But as soon as the Hierarchies are used in combination with an Analytic View, this problem does not occur anymore.</p> <p>During my tests, I had several long-running queries, and more than once I had to cancel a query or kill the database session. This was usually the case when I forgot to add some restrictions. Of course, a query that selects all levels of all hierarchies and joins it with all facts will run much too long. So, a statement like &#8220;<em>SELECT * FROM sh_history_sales_av</em>“ is not a good idea. When using Analytic Views, you can expect a good performance if you use them properly.</p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/danischnider.wordpress.com/416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/danischnider.wordpress.com/416/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=danischnider.wordpress.com&#038;blog=80273571&#038;post=416&#038;subd=danischnider&#038;ref=&#038;feed=1" width="1" height="1" /> Dani Schnider http://danischnider.wordpress.com/?p=416 Sat Sep 09 2017 07:20:18 GMT-0400 (EDT) September Webinars – Register NOW! http://blog.performancearchitects.com/wp/2017/09/06/september-webinars-register-now/ <p>Author: Melanie Mathews, Performance Architects</p> <p>Are you an on-premise Oracle Hyperion Planning customer and evaluating moving to the cloud? Or are you you wondering what solution is best suited for certain types of analytics and reporting? September will be your month to learn more! We have FOUR exciting webinars this month and we encourage you to register soon before spots fill up!</p> <p>Our first webinar is on Wednesday, September 13th at 12:00 PM EST:<strong> <em><a href="http://cts.vresp.com/c/?PerformanceArchitect/5596ef8b9e/TEST/6007b3e70e" target="_blank" rel="noopener noreferrer" data-saferedirecturl="https://www.google.com/url?hl=en&amp;q=http://cts.vresp.com/c/?PerformanceArchitect/5596ef8b9e/TEST/6007b3e70e&amp;source=gmail&amp;ust=1504202521589000&amp;usg=AFQjCNFvrKk0CAwDqNp-Xm9LqnzwliDtcw">Oracle Planning and Budgeting Cloud Service (PBCS) versus Enterprise PBCS (EPBCS): The Myth, The Legend…The Truth</a></em></strong></p> <p>If you’re an on-premise Oracle Hyperion Planning customer and are evaluating moving to the cloud…or if you were an early adopter of Oracle Planning and Budgeting Cloud Service (PBCS) and are trying to decide whether or not you need specific Enterprise Planning and Budgeting Cloud Service (EPBCS) modules…this webinar is for you.  Join the Performance Architects team to learn:</p> <ul> <li>The similarities and differences between Oracle Hyperion Planning, Oracle Planning and Budgeting Cloud Service (PBCS) and Oracle Enterprise Planning and Budgeting Cloud Service (EPBCS)</li> <li>The migration path from on-premise to PBCS versus EPBCS</li> <li>What to do if you’re a Public Sector Planning and Budgeting (PSPB) on-premise customer</li> <li>Performance Architects recommendations based on current product capabilities</li> </ul> <p>Our second webinar is on Thursday, September 14th at 12:00 PM EDT: <em><a href="https://register.gotowebinar.com/register/3885040059091670274"><strong>NEOAUG</strong><b> Webinar: Essbase in the Cloud: It’s Here…Now What?!</b></a></em></p> <p>Are you an old-school, on-premise Oracle Essbase customer who’s accustomed to using Essbase for analysis outside of your “traditional” Oracle EPM (Hyperion) applications like Planning, HFM, HSF, etc.? Did you hear that Essbase is moving to the cloud and are you wondering what this means for Essbase improvements and changes how you use and license Essbase today? Are you looking to extend Essbase<span class="details"> analytics using one of Oracle’s newer business analytics / BI solutions like Data Visualization (DV) or BI Cloud Service (BICS)? Finally, have you heard that Essbase is now part of Oracle Analytics Cloud (OAC) and are you wondering what this all means? If so, this webinar is for you.</span></p> <p>Our third webinar is being delivered by popular demand! Chuck Persky presented this widely attended session at ODTUG Kscope17 this year in San Antonio and we are bringing it to you on Thursday, September 21st at 12:00 PM EST: <strong><span class="m_-2057440298092995265contenttext"><em><a href="http://cts.vresp.com/c/?PerformanceArchitect/5596ef8b9e/TEST/e996550b83" target="_blank" rel="noopener noreferrer" data-saferedirecturl="https://www.google.com/url?hl=en&amp;q=http://cts.vresp.com/c/?PerformanceArchitect/5596ef8b9e/TEST/e996550b83&amp;source=gmail&amp;ust=1504202521589000&amp;usg=AFQjCNFJ5JRZaF8JeKm0_T3NqIPmPkpHUA">Cloudy with a Chance of PBCS: Tips and Tricks for Migrating On-Premise Oracle Hyperion Planning to Oracle PBCS</a></em></span></strong></p> <p><span class="m_-2057440298092995265contenttext">Many organizations have made the switch from an on-premise Oracle Hyperion Planning solution to Oracle Planning and Budgeting Cloud Service (PBCS). This move allows them to take advantage of the benefits that exist in an Oracle SaaS model and some of the newer features available in PBCS. However, many other organizations, while very interested, are hesitant to make this leap, in fear of the  unknown and the potential process involved in migrating to this model. In this webinar, you will learn from industry experts about a variety of considerations, tips, and methodologies utilized in planning and executing this type of change. Specifically, this webinar will explore the dynamics of this migration through real-life examples, including the steps for assessing the current application(s), decisions surrounding a &#8220;lift and shift&#8221; versus a &#8220;rebuild&#8221; approach, the process for executing the migration, and how to acclimate system administrators and users to a PBCS (cloud) methodology and interface. Additionally, this webinar will explore the facets of data integration and security; how these capabilities may be the same or different than the current on-premise model; and how to build a strategy to successfully create these capabilities in PBCS. Please join us in navigating from the ground to the cloud.</span></p> <p>Our last webinar of the month is on Wednesday, September 27th at 12:00 PM EST: <strong><em><a href="http://cts.vresp.com/c/?PerformanceArchitect/5596ef8b9e/TEST/dddf29c05d" target="_blank" rel="noopener noreferrer" data-saferedirecturl="https://www.google.com/url?hl=en&amp;q=http://cts.vresp.com/c/?PerformanceArchitect/5596ef8b9e/TEST/dddf29c05d&amp;source=gmail&amp;ust=1504202521589000&amp;usg=AFQjCNFJSJTNBTM2K2_lfYW7wHbHLzmf8A">Demystifying Oracle Business Analytics and EPM Reporting and Analysis Options</a></em></strong></p> <p>Do you own a mix of on-premise and cloud Oracle business analytics (or BI) and EPM (Hyperion) solutions?  Are you wondering what solution is best suited for certain types of analytics and reporting.  Join the Performance Architects team to learn:</p> <ul> <li>What’s available on-premise versus in the cloud today and soon</li> <li>Our recommendations on migration path and strategy based on Oracle product direction</li> <li>What pitfalls to avoid</li> <li>Best practices for the most affordable, fastest time to value architecture</li> </ul> <p>We also have a bunch more exciting webinars for the rest of the year so please check out our <a href="http://www.performancearchitects.com/news_events/events">events page</a> for more details today!</p> Melanie Mathews http://blog.performancearchitects.com/wp/?p=2124 Wed Sep 06 2017 05:13:14 GMT-0400 (EDT) ODTUG Leadership Program - Accepting Applications http://www.odtug.com/p/bl/et/blogaid=743&source=1 ODTUG has long been recognized as an outstanding source for the technical content Oracle professionals desire, but that’s only half of the story. We’re providing our members with yet another opportunity to add to their skills and increase their value to their employer or client. ODTUG http://www.odtug.com/p/bl/et/blogaid=743&source=1 Tue Sep 05 2017 12:32:40 GMT-0400 (EDT) ODTUG Board of Directors Responsibilities and Guidelines http://www.odtug.com/p/bl/et/blogaid=742&source=1 It is time to nominate members to serve a two-year term on the 2018-2019 ODTUG Board of Directors (January 1, 2018, through December 31, 2019). Members of the ODTUG Board of Directors enjoy the opportunity to guide the direction of ODTUG, as well as increased contact with Oracle Corporation. ODTUG http://www.odtug.com/p/bl/et/blogaid=742&source=1 Tue Sep 05 2017 08:16:43 GMT-0400 (EDT) Interview at POUG http://www.oralytics.com/2017/09/interview-at-poug.html <iframe width="560" height="315" src="https://www.youtube.com/embed/srIxPPRGNxo" frameborder="0" allowfullscreen></iframe> Brendan Tierney tag:blogger.com,1999:blog-4669933501315263808.post-4361906245909258584 Tue Sep 05 2017 06:59:00 GMT-0400 (EDT) Game of Thrones S07 Last Episode: The Summary http://www.rittmanmead.com/blog/2017/09/game-of-thrones-se07-last-episode-the-summary/ <img src="http://www.rittmanmead.com/blog/content/images/2017/09/Surprise-Matrix-2.png" alt="Game of Thrones S07 Last Episode: The Summary"><p><mark><strong>Watch the Episode First!</strong> It's a friendly suggestion...</mark></p> <p>The final #GoT episode was transmitted last Sunday, now two years waiting for the next season... How can HBO be so cruel??? And how can I find interesting content for my future blog posts??? <br> At least now European football (not soccer) leagues are back, so TV-side I'm covered!</p> <p><center> <br> <iframe src="https://giphy.com/embed/3o6wrCSt4FgRSRiMsU" width="480" height="260" frameborder="0" class="giphy-embed" allowfullscreen></iframe><p><a href="https://giphy.com/gifs/filmeditor-sacha-baron-cohen-3o6wrCSt4FgRSRiMsU">via GIPHY</a></p> <br> </center></p> <p>Going back to serious discussions, Game of Thrones last episode: Yay or Nay? The average sentiment for the episode (taking into account only tweets since Monday) was <code>-0.012</code>: it is negative but represents an improvement when compared to the two previous ones (with episode 6 having the most negative sentiment score).</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Line-Chart.png" alt="Game of Thrones S07 Last Episode: The Summary"></p> <p>But... Hey! What is the line on top going in time? The line it's due to the external R call and the fact that is forcing us to include the <code>Tweet Text</code> column in the analysis in order to be evaluated. The evaluation of the sentiment is applied on <code>ATTR(Tweet Text)</code> which means kind of <code>SELECT DISTINCT Tweet_Text</code> in Oracle terms. The line on top is drawn because the same <code>Tweet Text</code> was tweeted across several weeks. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Tweet.png" alt="Game of Thrones S07 Last Episode: The Summary"></p> <p>Please notice that the three overall sentiments are close (between <code>0.01</code> and <code>0.10</code>) so, when looking in detail at the distribution of sentiment scores across the episodes we can see that, as expected, are similar.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Sentiment-By-Episode.png" alt="Game of Thrones S07 Last Episode: The Summary"></p> <p>Zooming to single characters we can see the scatterplot of the last episode, with <strong>Jon Snow</strong> (or should I say Targaryen?) leading the number of mentions with surprisingly <strong>Littlefinger</strong> on the second spot and <strong>Arya</strong> on the third: probably the Baelish dying scene at Winterfell was something highly appreciated by the fans.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Scatterplot.png" alt="Game of Thrones S07 Last Episode: The Summary"></p> <p>On the positive negative feeling almost nothing changed with <strong>Arya</strong> and the <strong>Night King</strong> being the negative and positive poles. I've been telling you about change of leadership on the various axes of the scatterplot by visually comparing today's scatterplot with the previous two. However the transition of the character position in the graph can be visualized again on multiple scatterplots. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Scatterplot-transitions-1.png" alt="Game of Thrones S07 Last Episode: The Summary"></p> <p>By creating a scatterplot for each character and assigning to the episodes a different number (<code>E05</code>-<code>1</code>, <code>E06</code>-<code>2</code>, <code>E07</code>-<code>3</code>) I can clearly see how <strong>Davos Seaworth</strong> for example had a big sentiment variation going very positive in the last episode while <strong>Jaime Lanninster</strong> was more stable. Zooming into Davos position we can see how the sentiment distribution changed across episodes with the <strong>E06</strong> representing the most negative while the <strong>E07</strong> has almost all positive tweets.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Davos.png" alt="Game of Thrones S07 Last Episode: The Summary"></p> <p>Looking at the words composing <strong>Davos</strong> tweets we can immediately spot few thigs:</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Davos-Words.png" alt="Game of Thrones S07 Last Episode: The Summary"></p> <ul> <li><code>SIR</code> has a positive sentiment (<code>Sir Davos</code> is how several characters call him) which is driving the overall score in the final episode</li> <li>The number of tweets mentioning Davos was very small in <code>E06</code> compared to the other two (we can see the same from the related scatterplot above)</li> <li>In <code>E07</code> we see a good number of circles having the same (big) size, possibly is the same text which has been tweeted several times.</li> </ul> <p>To verify the last point we can simply show the <code>Tweet Text</code> along the <code># of Tweets</code> and discover that almost the same positive Text count for over the 99% of the whole reference to the character.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Davos-Tweets-2.png" alt="Game of Thrones S07 Last Episode: The Summary"></p> <h1 id="emotions">Emotions</h1> <p>One of the cool functions of the <a href="https://cran.r-project.org/web/packages/syuzhet/vignettes/syuzhet-vignette.html">Syuzhet package</a> is named <code>get_nrc_sentiment</code> and allows the extrapolation of emotions from a text based on the <a href="http://www.purl.org/net/NRCemotionlexicon">NRC emotion lexicon</a>. The function takes a text as input and returns a data frame containing a row for each sentence and a column for emotion or sentiment. <br> The sentiment can either be <code>positive</code> or <code>negative</code> which we already discussed a lot previously. The emotion is split in eight categories: anger, fear, anticipation, trust, surprise, sadness, joy, and disgust.</p> <p>We can extract the eight different emotions into eight calculations with the following code</p> <pre><code>SCRIPT_INT("library(syuzhet); r&lt;-(get_nrc_sentiment(.arg1))$anger", ATTR([Text])) </code></pre> <p>To calculate the <code>Anger Emotion Score</code> we are passing <code>ATTR(Text)</code>, the list of Tweet's texts, and taking the output of the <code>anger</code> column of the dataframe. We can do the same for all the other emotions and create separate graphs to show their average across characters for the last episode. In this case I took <code>Disgust</code>, <code>Anger</code>, <code>Fear</code>, <code>Joy</code> and <code>Trust</code>.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Emotions-Characters.png" alt="Game of Thrones S07 Last Episode: The Summary"></p> <p>We can then clearly see that <strong>Bran Stark</strong> is the character that has most <code>Disgust</code> associated to. <strong>Bron</strong> has a special mix of emotions, he's in the top for <code>Anger</code>, <code>Fear</code> and <code>Joy</code>, such a mix can justify the average sentiment which is close to neutral (see scatterplot above). On the <code>Trust</code> side we can clearly see that the North wins with <strong>Arya</strong> and <strong>Sansa</strong> on the top, interesting here is to see also <strong>Lord Varys</strong>. <br> Looking into <strong>Bran</strong> <code>Disgust</code> detail we can see that is driven by the categorization of the <code>BRAN</code> word as disgusting, probably the dictionary doesn't like cereals. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Bran-Words.png" alt="Game of Thrones S07 Last Episode: The Summary"></p> <h1 id="sceneemotions">Scene Emotions</h1> <p>In my <a href="https://www.rittmanmead.com/blog/2017/08/the-week-after-game-of-thrones-s07-e06-analysis/">previous post</a> I've been talking about the "Game of Couples" and how a single character sentiment score could be impacted by a reference to a second character. For the last episode of the series I wanted to look at different scenes: the main characters I want to analyse are <strong>Jon Snow</strong>, <strong>Littlefinger</strong> and <strong>Sansa</strong>. Specifically I want to understand how people on Twitter reacted to the scenes where the two characters had a big impact: the death of <strong>Littlefinger</strong> declared by <strong>Sansa</strong> and the revelation of <strong>Jon Targaryen</strong>.</p> <p>The first thing I wanted to check is the <code>Surprise</code>: How are characters categorized by this emotion? We can see <strong>Bron</strong> on top being driven by the word <code>GOOD</code> in the related tweets.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/09/Surprise-Analysis-3.png" alt="Game of Thrones S07 Last Episode: The Summary"></p> <p>We can also notice that <strong>Petyr</strong> score is quite high (<code>0.2590</code> and 2nd position) while <strong>Jon</strong> score is pretty low, probably averaged by the huge number of tweets. We can also see that <strong>Sansa</strong> score is not very high, even if she is the character providing quite a big shock when accusing <strong>Littlefinger</strong>. </p> <p>The overall character average surprise doesn't seem to be very relevant, we need to find a way to filter tweets related to those particular scenes: we can do that by including only few keywords in the Tweet Text. Please note we are going to filter words that will create an <code>OR</code> condition. If a tweet contain <strong>ANY</strong> of the words mentioned, it will be included. </p> <p>First I wanted to check which are the words in <strong>Jon</strong>'s tweets driving the <code>Surprise</code> sentiment alongside the <code># of Tweets</code></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/09/Tweet-Surpise-Words.png" alt="Game of Thrones S07 Last Episode: The Summary"></p> <p>However this is only giving us details on which words are classified as <code>Surprise</code> for <strong>Jon</strong>, nothing really related to the scenes. I can however filter only the tweets with an overall <code>Surprise</code> sentiment for <strong>Jon</strong> and check which words are mostly associated with them. I also added a filter for Tweets containing the words <code>TARGARYEN</code> OR <code>SON</code> since I assumed those two could be more frequently used describing the scene.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/09/Tweet-Word-2.png" alt="Game of Thrones S07 Last Episode: The Summary"></p> <p>We can clearly see some patterns that are well recognized correctly by the <code>Surprise</code> metric: both <strong>Aegon</strong> (a reference to Jon's real name) and <strong>Aunt</strong> (reference to Lyanna or Deanerys?) are in the top 20 and a little bit further right in the graph we can also spot <strong>Father</strong>. There probably is also some surprise in tweets related to what's going to happen when <strong>Jon finds out he's a Targaryen</strong> since all keywords are present in the top 20. </p> <p>When doing a similar analysis on <strong>Sansa</strong> I wanted to add another metric to the picture: the <code>Average Sentence Emotion Score</code> for all sentences including a word. With this metric we can see how a word (for example <code>AMAZING</code>) changes the average emotion of the sentences where is included. Analysing this metric alone however wouldn't be useful: obviously the words having more impact on emotion are the ones categorized as such in the related dictionary. </p> <p>I found interesting the following view for <strong>Sansa</strong>: we see across all the tweets categorized as <code>Surprizing</code>, which are the words most mentioned (Y-axes) and what's the average <code>Surprise</code> emotion value for the sentences were those words were included.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/09/Murder-Treason.png" alt="Game of Thrones S07 Last Episode: The Summary"></p> <p>We can spot that <code>MURDER</code> and <code>TREASON</code> were included with a big number of tweets (>500) having an average <code>Surprise</code> score around <code>2</code>. This seems to indicate that the scene of <strong>Sansa</strong> convicting <strong>Lord Baelish</strong> wasn't expected from the fans.</p> <p>One last graph shows how the character couples (remember the game of couples in my <a href="https://www.rittmanmead.com/blog/2017/08/the-week-after-game-of-thrones-s07-e06-analysis/">previous post</a>?) have been perceived: the square color defines the average <code>Surprise</code> score while the position in the X-axis confidence (by the <code># of Tweets</code>).</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/09/Surprise-Matrix-1.png" alt="Game of Thrones S07 Last Episode: The Summary"></p> <p>We can spot that the couple <strong>Cercei</strong> and <strong>Sansa</strong> is the one having most <code>Surprise</code> emotion, followed by <strong>Cercei</strong> and <strong>Daenerys</strong>. Those two couples may be expected since the single characters had major parts in the last episode. Something unexpected is the couple <strong>Sandor Clegane</strong> and <strong>Brienne</strong>, looking in detail, the surprise is driven by a mention to the word <code>MURDER</code> which is included in 57.76% of the Tweets mentioning both.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/09/surprise-Brienne.png" alt="Game of Thrones S07 Last Episode: The Summary"></p> <p>A last technical note: during the last few weeks I've collected about 700 thousands tweets, the time to analyse them highly depends on the complexity of the query. For simple counts or sums based only on BigQuery data I could obtain replies in few seconds. For other analysis, especially when sentiment or emotion was included, a big portion of the raw dataset was retrieved from BigQuery into Tableau, passed to R with the function results moved back to Tableau to be displayed. Those queries could take minutes to be evaluated. <br> As written in my previous blog post, the whole process could be speed up only by pre-processing the data and storing the sentiment/emotion in BigQuery alongside with the data.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/09/Flow-with-R.png" alt="Game of Thrones S07 Last Episode: The Summary"></p> <p>my series of blog post about Game of Thrones tweet and press analysis with Kafka, BigQuery and Tableau! See you in two years for the analysis of the next season with probably a whole new set of technology!</p> <p><center> <br> <iframe src="https://giphy.com/embed/iwVHUKnyvZKEg" width="480" height="421" frameborder="0" class="giphy-embed" allowfullscreen></iframe><p><a href="https://giphy.com/gifs/eyebrows-brows-iwVHUKnyvZKEg">via GIPHY</a></p> <br> </center></p> Francesco Tisiot 258b0093-3a5b-47d8-b1f1-71c8cb5dbb2b Fri Sep 01 2017 10:36:52 GMT-0400 (EDT) Customer Case Study: How to Implement Revenue Recognition in Oracle Hyperion Planning or PBCS http://blog.performancearchitects.com/wp/2017/08/30/2104/ <p>Author: Tony Tauro, Performance Architects</p> <p><a href="http://blog.performancearchitects.com/wp/2017/05/31/what-does-revenue-recognition-really-mean/">In a previous blog post</a>, we took a high-level look at the basic principles behind the revenue recognition concept. In this post, we demonstrate how to implement revenue recognition in an <a href="http://www.oracle.com/technetwork/middleware/planning/overview/index.html">Oracle Hyperion Planning</a> or <a href="https://cloud.oracle.com/planning-and-budgeting-cloud">Oracle Planning and Budgeting Cloud Service (PBCS)</a> solution.</p> <p>Our customer’s planning application was used to analyze sales data from an external system. The results of this analysis fed into the <a href="https://en.wikipedia.org/wiki/Enterprise_resource_planning">enterprise resource planning (ERP)</a> system as <a href="https://en.wikipedia.org/wiki/General_ledger">general ledger (GL)</a> entries. That makes it a typical use case for a planning solution. However, part of this analysis included revenue numbers, including when to recognize this revenue. Thus, it made sense to build in limited revenue recognition functionality in the planning application, rather than try to implement a separate solution for just that functionality.</p> <p>To create this solution, we had to store certain types of data in the planning solution.  The most critical was sales data, which came in as invoices; the goal of the revenue recognition exercise was to decide the date on which a particular line item of an invoice should be recognized.</p> <p>Invoices are straightforward to import because the content in the invoices is easily divided into dimensions and facts. Customers, products and invoice numbers are obvious candidates for dimensions. Each customer number is a dimension member in the customer dimension, but we needed separate dimensions to account for the customer billing entity versus the delivery entity. Facts like quantities, amounts and related calculated values were all stored in the “Accounts” dimension as separate members. The “Currency,” “Year” and “Period” dimensions were implemented as standard dimensions.</p> <p>The planning application allows us to maintain as many versions as needed, and we used two, “Actual”” and “Final.” Actual contains the &#8220;raw&#8221; data. Rules are applied and required adjustments are made. These edits are kept in members reserved for the edits, so that the actual data is not changed. After the review and edits are complete we transfer the &#8220;finalized&#8221; data into the Final version.</p> <p>This brings us to the second item: we had to model and store the rules in our planning application. Luckily, the vast majority of the invoices could be recognized based on some basic rules.</p> <p>The “Scenario” dimension was used to indicate the revenue recognition model that would apply to the invoice. The rules are stored at intersections not used by the invoices. To apply to the invoices, the corresponding intersection would be populated using a calculation rule.</p> <p>Of course, all rules have exceptions. We also needed to store the exceptions to the rules. Exceptions were usually unique situations that did not fit into an existing rule, and were also not frequent enough to justify modifying an existing rule to accommodate.</p> <p>Another interesting modeling issue was that sometimes the data from the external system would not arrive in time for the revenue recognition cutoff. This meant we had to provide the ability to manually override any rule-based recognition date.</p> <p>To get user-initiated data into the system, we used web forms, which our customers seemed to prefer accessing in Excel via <a href="http://www.oracle.com/technetwork/middleware/smart-view-for-office/overview/index.html">Smart View</a> (especially forms that needed a fair bit of scrolling). Much of the processing was done using calculation rules.  However, in a few cases, we found it more convenient to use relational database queries. This was especially true when the data was already outside the cube (before loading into the application and while transferring it between applications) and involved date or date-based calculations.</p> <p>We used an <a href="https://en.wikipedia.org/wiki/Essbase#Aggregate_storage_.28Enterprise_Analytics.29">ASO cube</a> for reporting. The Final version is synchronized into the reporting cube on a regular basis. The reporting cube aggregates the data at any and all levels possible. This allows us to keep the application cube speedy enough for data entry and edits, while the reporting cube can be used for reporting and analysis that feels rather speedy. Using Smart View on a fully aggregated cube is an absolute joy!</p> <p>Hopefully this post provides a simple overview of an actual implementation of revenue recognition functionality in a planning application. It is necessary to justify including such a requirement in a planning application, but can be done using standard planning application functionality and project methodology.</p> <p>Have questions about how to implement revenue recognition in your organization?  Contact us at <a href="mailto:sales@performancearchitects.com">sales@performancearchitects.com</a> and we’d be happy to assist.</p> Melanie Mathews http://blog.performancearchitects.com/wp/?p=2104 Wed Aug 30 2017 06:10:50 GMT-0400 (EDT) Oracle GoldenGate 12c Release 3 (12.3.0.1.0) Microservices Architecture https://gavinsoorma.com/2017/08/oracle-goldengate-12c-release-3-12-3-0-1-0-microservices-architecture/ <p><span class="_Tgc _y9e"><b>Microservices</b> <strong>Architectur</strong></span><strong>e</strong> is a method or approach to developing applications where an application is deployed as a suite of independently deployed small modular services.</p> <p><span class="_Tgc _y9e"> Each module supports a specific business goal and uses a simple, light weight  and well-defined interface to communicate with other sets of services.</span></p> <p><strong>Oracle GoldenGate Microservices Architecture</strong> (MA)  is a similar architecture based on <strong>REST APIs</strong> which enable us to configure, monitor, and manage Oracle GoldenGate services using a web-based user interface.</p> <p>So now in Oracle GoldenGate 12.3, we have two architectures available for deploying GoldenGate &#8211; the (original) Classic Architecture and the new Microservices Architecture.</p> <p>The Microservices Architecture in Oracle GoldenGate is comprised of five main components:</p> <ul> <li>Service Manager</li> <li>Administration Server</li> <li>Distribution Server</li> <li>Receiver Server</li> <li>Performance Metrics Server</li> </ul> <p><strong>Service Manager</strong>: Enables us to administer, monitor and manage other services available with Microservices Architecture.  Through Service Manager, we can manage one or multiple Oracle GoldenGate deployments on a local host.</p> <p><strong>Administration Server</strong>: It is the central and main entity for managing the various components of a GoldenGate deployment. Administration Server can create and manage local Extract and Replicat processes even without access to the server where Oracle GoldenGate is installed. Tasks like creating or altering extract and replicat processes, creating credentials for GoldenGate security, viewing report files, adding supplemental log data, creating checkpoint and heartbeat tables etc can all be performed from web browser as well as from the command line Admin Client.</p> <p><strong>Distribution Server</strong>: It is a high performance application which functions as a networked data distribution agent. The Distribution Server distributes one or more trails to one or more destinations and also performs some filtering operations if configured to do so. It supports a number of different communication protocols including the classic Oracle GoldenGate protocol for communication between the Distribution Server and the Collector , WebSockets for SSL secured HTTPS-based streaming and Proxy support for cloud-based environments.</p> <p>The Distribution Server is used to set up a <strong>Path</strong> between the source and target deployments.</p> <p><strong>Receiver Server</strong>: It provides the central services to handle all incoming trail files and communicates with the Distribution Server over the network.</p> <p><strong>Performance Metrics Server</strong>: It collects and stores performance data related to a GoldenGate deployment. Enables us to monitor performance metrics using a web application and use the data to tune deployments for maximizing performance.</p> <p>&nbsp;</p> <p><strong>Let us look at an example of GoldenGate 12c Release 3 Microservices Architecture (MA) at work!</strong></p> <p>&nbsp;</p> <h4>Demo environment setup</h4> <p>&nbsp;</p> <p>We will be using a single Oracle 12c Release 2 database for this demo with two schemas &#8211; SOURCE and TARGET.</p> <p>We will create the MYOBJECTS table in both schemas and perform some DML activity on the source table and note how replication is performed and managed using GoldenGate Microservices.</p> <p>&nbsp;</p> <p>&nbsp;</p> <pre>SQL&gt; alter database force logging; Database altered. SQL&gt; alter database add supplemental log data; Database altered. SQL&gt; alter system set enable_goldengate_replication=true; System altered. SQL&gt; create user oggadmin identified by oracle; User created. SQL&gt; grant dba to oggadmin; Grant succeeded. SQL&gt; exec dbms_goldengate_auth.grant_admin_privilege('OGGADMIN'); PL/SQL procedure successfully completed. SQL&gt; create user source identified by oracle     default tablespace users temporary tablespace temp; User created. SQL&gt; create user target identified by oracle       default tablespace users    temporary tablespace temp; User created. SQL&gt; grant connect,resource,create table to source,target; Grant succeeded. SQL&gt; alter user source quota unlimited on users; User altered. SQL&gt; alter user target quota unlimited on users; User altered. SQL&gt; conn source/oracle Connected. SQL&gt; create table myobjects      as select * from all_objects      where 1=2; Table created. SQL&gt; conn target/oracle Connected. SQL&gt; / Table created. SQL&gt; conn source/oracle Connected. SQL&gt; alter table myobjects add constraint pk_myobjects primary key (object_id); Table altered. SQL&gt; conn target/oracle Connected. SQL&gt; / Table altered. </pre> <h4>Download the MA software (Oracle GoldenGate 12.3.0.1.0 Microservices for Oracle) from OTN.</h4> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg1.png"><img class="aligncenter wp-image-7949" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg1.png" alt="" width="539" height="542" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg1.png 566w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg1-150x150.png 150w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg1-298x300.png 298w" sizes="(max-width: 539px) 100vw, 539px" /></a></p> <p>&nbsp;</p> <h4>Install Oracle GoldenGate 12.3.0.1.0 Microservices</h4> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg2.png"><img class="aligncenter size-full wp-image-7888" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg2.png" alt="" width="801" height="600" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg2.png 801w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg2-300x225.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg2-768x575.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg2-627x470.png 627w" sizes="(max-width: 801px) 100vw, 801px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg3.png"><img class="aligncenter size-full wp-image-7889" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg3.png" alt="" width="806" height="597" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg3.png 806w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg3-300x222.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg3-768x569.png 768w" sizes="(max-width: 806px) 100vw, 806px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg4.png"><img class="aligncenter size-full wp-image-7890" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg4.png" alt="" width="809" height="598" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg4.png 809w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg4-300x222.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg4-768x568.png 768w" sizes="(max-width: 809px) 100vw, 809px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg5.png"><img class="aligncenter size-full wp-image-7891" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg5.png" alt="" width="802" height="603" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg5.png 802w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg5-300x226.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg5-768x577.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg5-627x470.png 627w" sizes="(max-width: 802px) 100vw, 802px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg6.png"><img class="aligncenter size-full wp-image-7892" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg6.png" alt="" width="797" height="601" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg6.png 797w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg6-300x226.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg6-768x579.png 768w" sizes="(max-width: 797px) 100vw, 797px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <h4>Create a deployment using Oracle GoldenGate Configuration Assistant</h4> <p>&nbsp;</p> <p>Launch the Configuration Assistant via the <code class="codeph"><strong>oggca.sh</strong> script located in the <strong>$OGG_HOME/bin</strong> directory.</code> Through the Configuration Assistant we can create the Service Manager as well as configure the deployment.<code class="codeph"> </code></p> <p>A single Service Manager can support a number of deployments.</p> <p>&nbsp;</p> <pre>[oracle@linux01 Disk1]$ <strong>export TNS_ADMIN=/u02/app/oracle/product/12.2.0/dbhome_1/network/admin</strong> [oracle@linux01 Disk1]$ <strong>export OGG_HOME=/u04/app/oracle/ogg_ma</strong> [oracle@linux01 Disk1]$ <strong>cd $OGG_HOME/bin</strong> [oracle@linux01 bin]$ <strong>./oggca.sh </strong></pre> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg7.png"><img class="aligncenter size-full wp-image-7893" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg7.png" alt="" width="800" height="595" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg7.png 800w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg7-300x223.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg7-768x571.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg8.png"><img class="aligncenter size-full wp-image-7894" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg8.png" alt="" width="796" height="594" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg8.png 796w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg8-300x224.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg8-768x573.png 768w" sizes="(max-width: 796px) 100vw, 796px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg9.png"><img class="aligncenter size-full wp-image-7895" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg9.png" alt="" width="801" height="594" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg9.png 801w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg9-300x222.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg9-768x570.png 768w" sizes="(max-width: 801px) 100vw, 801px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg10.png"><img class="aligncenter size-full wp-image-7896" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg10.png" alt="" width="800" height="599" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg10.png 800w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg10-300x225.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg10-768x575.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg10-627x470.png 627w" sizes="(max-width: 800px) 100vw, 800px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg11.png"><img class="aligncenter size-full wp-image-7897" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg11.png" alt="" width="800" height="594" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg11.png 800w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg11-300x223.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg11-768x570.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg12.png"><img class="aligncenter size-full wp-image-7898" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg12.png" alt="" width="799" height="602" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg12.png 799w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg12-300x226.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg12-768x579.png 768w" sizes="(max-width: 799px) 100vw, 799px" /></a></p> <p>&nbsp;</p> <p>Note: in this example we are not configuring any wallets or certificates required for SSL security.</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg13.png"><img class="aligncenter size-full wp-image-7899" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg13.png" alt="" width="794" height="595" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg13.png 794w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg13-300x225.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg13-768x576.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg13-627x470.png 627w" sizes="(max-width: 794px) 100vw, 794px" /></a></p> <p>&nbsp;</p> <p>Allocate the ports &#8211; enter 9001 for the Administration Server port and the other ports are assigned automatically by clicking in the port number fields.</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg14.png"><img class="aligncenter size-full wp-image-7900" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg14.png" alt="" width="803" height="600" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg14.png 803w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg14-300x224.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg14-768x574.png 768w" sizes="(max-width: 803px) 100vw, 803px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg15.png"><img class="aligncenter size-full wp-image-7901" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg15.png" alt="" width="797" height="597" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg15.png 797w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg15-300x225.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg15-768x575.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg15-627x470.png 627w" sizes="(max-width: 797px) 100vw, 797px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg16.png"><img class="aligncenter size-full wp-image-7902" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg16.png" alt="" width="795" height="599" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg16.png 795w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg16-300x226.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg16-768x579.png 768w" sizes="(max-width: 795px) 100vw, 795px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg17.png"><img class="aligncenter size-full wp-image-7903" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg17.png" alt="" width="812" height="648" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg17.png 812w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg17-300x239.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg17-768x613.png 768w" sizes="(max-width: 812px) 100vw, 812px" /></a></p> <p>&nbsp;</p> <pre>[root@linux01 etc]# <strong>/u04/app/oracle/ogg_sm/bin/registerServiceManager.sh</strong> ----------------------------------------------------      Oracle GoldenGate Install As Service Script    ---------------------------------------------------- OGG_HOME=/u04/app/oracle/ogg_ma OGG_CONF_HOME=/u04/app/oracle/ogg_sm/etc/conf OGG_USER=oracle Running OracleGoldenGateInstall.sh...</pre> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg18.png"><img class="aligncenter size-full wp-image-7904" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg18.png" alt="" width="794" height="597" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg18.png 794w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg18-300x226.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg18-768x577.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg18-627x470.png 627w" sizes="(max-width: 794px) 100vw, 794px" /></a></p> <p>&nbsp;</p> <h4>Connect to Oracle GoldenGate Service Manager</h4> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg19.png"><img class="aligncenter size-full wp-image-7905" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg19.png" alt="" width="1444" height="892" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg19.png 1444w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg19-300x185.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg19-768x474.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg19-1024x633.png 1024w" sizes="(max-width: 1444px) 100vw, 1444px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg20.png"><img class="aligncenter size-full wp-image-7906" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg20.png" alt="" width="1758" height="687" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg20.png 1758w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg20-300x117.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg20-768x300.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg20-1024x400.png 1024w" sizes="(max-width: 1758px) 100vw, 1758px" /></a></p> <p>&nbsp;</p> <h4>Connect to Oracle GoldenGate Administration Server</h4> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg21.png"><img class="aligncenter size-full wp-image-7907" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg21.png" alt="" width="1442" height="852" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg21.png 1442w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg21-300x177.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg21-768x454.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg21-1024x605.png 1024w" sizes="(max-width: 1442px) 100vw, 1442px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg22.png"><img class="aligncenter size-full wp-image-7908" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg22.png" alt="" width="1844" height="709" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg22.png 1844w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg22-300x115.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg22-768x295.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg22-1024x394.png 1024w" sizes="(max-width: 1844px) 100vw, 1844px" /></a></p> <h4></h4> <p>&nbsp;</p> <h4>Create the Credentials for the OGGADMIN user</h4> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg23.png"><img class="aligncenter size-full wp-image-7909" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg23.png" alt="" width="1261" height="437" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg23.png 1261w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg23-300x104.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg23-768x266.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg23-1024x355.png 1024w" sizes="(max-width: 1261px) 100vw, 1261px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg24.png"><img class="aligncenter size-full wp-image-7910" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg24.png" alt="" width="1007" height="551" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg24.png 1007w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg24-300x164.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg24-768x420.png 768w" sizes="(max-width: 1007px) 100vw, 1007px" /></a></p> <p>&nbsp;</p> <h4>Add Supplemental Logging for the SOURCE schema</h4> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg25.png"><img class="aligncenter size-full wp-image-7911" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg25.png" alt="" width="1849" height="316" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg25.png 1849w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg25-300x51.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg25-768x131.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg25-1024x175.png 1024w" sizes="(max-width: 1849px) 100vw, 1849px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg26.png"><img class="aligncenter size-full wp-image-7912" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg26.png" alt="" width="1603" height="647" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg26.png 1603w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg26-300x121.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg26-768x310.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg26-1024x413.png 1024w" sizes="(max-width: 1603px) 100vw, 1603px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg27.png"><img class="aligncenter size-full wp-image-7913" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg27.png" alt="" width="1603" height="488" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg27.png 1603w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg27-300x91.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg27-768x234.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg27-1024x312.png 1024w" sizes="(max-width: 1603px) 100vw, 1603px" /></a></p> <p>&nbsp;</p> <h4>Create the CHECKPOINT Table</h4> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg28.png"><img class="aligncenter size-full wp-image-7914" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg28.png" alt="" width="982" height="298" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg28.png 982w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg28-300x91.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg28-768x233.png 768w" sizes="(max-width: 982px) 100vw, 982px" /></a></p> <p>&nbsp;</p> <h4>Create the Classic Extract EXT1</h4> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg29.png"><img class="aligncenter size-full wp-image-7915" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg29.png" alt="" width="1651" height="490" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg29.png 1651w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg29-300x89.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg29-768x228.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg29-1024x304.png 1024w" sizes="(max-width: 1651px) 100vw, 1651px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg30.png"><img class="aligncenter size-full wp-image-7916" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg30.png" alt="" width="1424" height="715" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg30.png 1424w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg30-300x151.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg30-768x386.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg30-1024x514.png 1024w" sizes="(max-width: 1424px) 100vw, 1424px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg31.png"><img class="aligncenter size-full wp-image-7917" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg31.png" alt="" width="1729" height="326" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg31.png 1729w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg31-300x57.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg31-768x145.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg31-1024x193.png 1024w" sizes="(max-width: 1729px) 100vw, 1729px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><strong>Edit the parameter file and add the TABLE parameter</strong></p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg32.png"><img class="aligncenter size-full wp-image-7918" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg32.png" alt="" width="1521" height="684" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg32.png 1521w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg32-300x135.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg32-768x345.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg32-1024x460.png 1024w" sizes="(max-width: 1521px) 100vw, 1521px" /><br /> </a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg33.png"><img class="aligncenter size-full wp-image-7919" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg33.png" alt="" width="1047" height="384" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg33.png 1047w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg33-300x110.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg33-768x282.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg33-1024x376.png 1024w" sizes="(max-width: 1047px) 100vw, 1047px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <h4>View details of the EXT1 Classic Extract</h4> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg34.png"><img class="aligncenter size-full wp-image-7920" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg34.png" alt="" width="996" height="525" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg34.png 996w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg34-300x158.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg34-768x405.png 768w" sizes="(max-width: 996px) 100vw, 996px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg35.png"><img class="aligncenter size-full wp-image-7921" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg35.png" alt="" width="825" height="341" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg35.png 825w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg35-300x124.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg35-768x317.png 768w" sizes="(max-width: 825px) 100vw, 825px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg36.png"><img class="aligncenter size-full wp-image-7922" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg36.png" alt="" width="862" height="632" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg36.png 862w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg36-300x220.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg36-768x563.png 768w" sizes="(max-width: 862px) 100vw, 862px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <h4>Connect to the Distribution Server</h4> <p>Click on the <strong>Distribution Server</strong> link in the Service column.</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg37.png"><img class="aligncenter size-full wp-image-7923" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg37.png" alt="" width="1852" height="461" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg37.png 1852w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg37-300x75.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg37-768x191.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg37-1024x255.png 1024w" sizes="(max-width: 1852px) 100vw, 1852px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg38.png"><img class="aligncenter size-full wp-image-7924" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg38.png" alt="" width="1749" height="245" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg38.png 1749w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg38-300x42.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg38-768x108.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg38-1024x143.png 1024w" sizes="(max-width: 1749px) 100vw, 1749px" /></a></p> <p>&nbsp;</p> <h4></h4> <h4>Create the Path</h4> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg39.png"><img class="aligncenter size-full wp-image-7925" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg39.png" alt="" width="875" height="835" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg39.png 875w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg39-300x286.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg39-768x733.png 768w" sizes="(max-width: 875px) 100vw, 875px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg40.png"><img class="aligncenter size-full wp-image-7926" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg40.png" alt="" width="927" height="761" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg40.png 927w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg40-300x246.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg40-768x630.png 768w" sizes="(max-width: 927px) 100vw, 927px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg41.png"><img class="aligncenter size-full wp-image-7927" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg41.png" alt="" width="916" height="725" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg41.png 916w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg41-300x237.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg41-768x608.png 768w" sizes="(max-width: 916px) 100vw, 916px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg42.png"><img class="aligncenter size-full wp-image-7928" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg42.png" alt="" width="1764" height="357" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg42.png 1764w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg42-300x61.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg42-768x155.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg42-1024x207.png 1024w" sizes="(max-width: 1764px) 100vw, 1764px" /></a></p> <h4></h4> <h4></h4> <p>&nbsp;</p> <h4>View details of the distribution path PUMP1</h4> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg43.png"><img class="aligncenter size-full wp-image-7929" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg43.png" alt="" width="1166" height="764" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg43.png 1166w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg43-300x197.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg43-768x503.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg43-1024x671.png 1024w" sizes="(max-width: 1166px) 100vw, 1166px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <h4>Connect to the Administration Server and create the Replicat process</h4> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg44.png"><img class="aligncenter size-full wp-image-7930" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg44.png" alt="" width="1850" height="455" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg44.png 1850w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg44-300x74.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg44-768x189.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg44-1024x252.png 1024w" sizes="(max-width: 1850px) 100vw, 1850px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg45.png"><img class="aligncenter size-full wp-image-7931" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg45.png" alt="" width="1677" height="599" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg45.png 1677w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg45-300x107.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg45-768x274.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg45-1024x366.png 1024w" sizes="(max-width: 1677px) 100vw, 1677px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg46.png"><img class="aligncenter size-full wp-image-7932" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg46.png" alt="" width="1087" height="726" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg46.png 1087w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg46-300x200.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg46-768x513.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg46-1024x684.png 1024w" sizes="(max-width: 1087px) 100vw, 1087px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>Edit the parameter file and change the MAP and TARGET parameters</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg47.png"><img class="aligncenter size-full wp-image-7933" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg47.png" alt="" width="1639" height="414" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg47.png 1639w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg47-300x76.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg47-768x194.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg47-1024x259.png 1024w" sizes="(max-width: 1639px) 100vw, 1639px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg48.png"><img class="aligncenter size-full wp-image-7934" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg48.png" alt="" width="1641" height="325" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg48.png 1641w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg48-300x59.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg48-768x152.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg48-1024x203.png 1024w" sizes="(max-width: 1641px) 100vw, 1641px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg49.png"><img class="aligncenter size-full wp-image-7935" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg49.png" alt="" width="1838" height="446" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg49.png 1838w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg49-300x73.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg49-768x186.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg49-1024x248.png 1024w" sizes="(max-width: 1838px) 100vw, 1838px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <h4>Perform DML on the source table</h4> <p>&nbsp;</p> <p>On the SOURCE schema MYOBJECTS  table, we will now run an INSERT statement.</p> <p>&nbsp;</p> <pre>SQL&gt; <strong>conn source/oracle</strong> Connected. SQL&gt; <strong>insert into myobjects </strong> <strong>   select * from all_objects;</strong> 56332 rows created. SQL&gt; <strong>commit;</strong> Commit complete.</pre> <h4></h4> <h4>View details of the replicat process REP1 and note the number of rows which have been processed.</h4> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg50.png"><img class="aligncenter size-full wp-image-7936" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg50.png" alt="" width="1076" height="566" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg50.png 1076w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg50-300x158.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg50-768x404.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg50-1024x539.png 1024w" sizes="(max-width: 1076px) 100vw, 1076px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg51.png"><img class="aligncenter size-full wp-image-7937" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg51.png" alt="" width="1474" height="633" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg51.png 1474w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg51-300x129.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg51-768x330.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg51-1024x440.png 1024w" sizes="(max-width: 1474px) 100vw, 1474px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg53.png"><img class="aligncenter size-full wp-image-7939" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg53.png" alt="" width="1869" height="498" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg53.png 1869w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg53-300x80.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg53-768x205.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg53-1024x273.png 1024w" sizes="(max-width: 1869px) 100vw, 1869px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg54.png"><img class="aligncenter size-full wp-image-7940" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg54.png" alt="" width="1502" height="675" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg54.png 1502w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg54-300x135.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg54-768x345.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg54-1024x460.png 1024w" sizes="(max-width: 1502px) 100vw, 1502px" /></a></p> <h4></h4> <p>&nbsp;</p> <h4>Connect to the Distribution Server and note the statistics of PUMP1 process</h4> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg56.png"><img class="aligncenter size-full wp-image-7942" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg56.png" alt="" width="1168" height="768" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg56.png 1168w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg56-300x197.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg56-768x505.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg56-1024x673.png 1024w" sizes="(max-width: 1168px) 100vw, 1168px" /></a></p> <p>&nbsp;</p> <h4>Connect to the Receiver Server and note the statistics related to the Network and I/O due to the last transaction which was processed.</h4> <p>Click on the <strong>Action</strong> drop-down &#8230;.</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg57.png"><img class="aligncenter size-full wp-image-7943" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg57.png" alt="" width="1777" height="434" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg57.png 1777w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg57-300x73.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg57-768x188.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg57-1024x250.png 1024w" sizes="(max-width: 1777px) 100vw, 1777px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg58.png"><img class="aligncenter size-full wp-image-7944" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg58.png" alt="" width="937" height="832" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg58.png 937w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg58-300x266.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg58-768x682.png 768w" sizes="(max-width: 937px) 100vw, 937px" /></a></p> <p>&nbsp;</p> <h4>Connect to the Performance Metrics Server and note the performance metrics related to extract EXT1</h4> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg59.png"><img class="aligncenter size-full wp-image-7945" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg59.png" alt="" width="1731" height="786" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg59.png 1731w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg59-300x136.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg59-768x349.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg59-1024x465.png 1024w" sizes="(max-width: 1731px) 100vw, 1731px" /></a></p> <p>&nbsp;</p> <p>Click on<strong> EXT1</strong></p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg60.png"><img class="aligncenter size-full wp-image-7946" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg60.png" alt="" width="1738" height="726" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg60.png 1738w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg60-300x125.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg60-768x321.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg60-1024x428.png 1024w" sizes="(max-width: 1738px) 100vw, 1738px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg61.png"><img class="aligncenter size-full wp-image-7947" src="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg61.png" alt="" width="1758" height="759" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/ogg61.png 1758w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg61-300x130.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg61-768x332.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/ogg61-1024x442.png 1024w" sizes="(max-width: 1758px) 100vw, 1758px" /></a></p> Gavin Soorma https://gavinsoorma.com/?p=7887 Wed Aug 30 2017 05:09:44 GMT-0400 (EDT) Infosys, NRN Murthy, and Vishal Sikka - No One's Smelling of Roses http://bi.abhinavagarwal.net/2017/08/infosys-nrn-murthy-and-vishal-sikka-no.html <div dir="ltr" style="text-align: left;" trbidi="on"><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-7Jt0lvehS3o/WZwU5CbIH1I/AAAAAAAAOc8/pWSG4MjyXlMxzv61_zJy0UxK-XuSW23QwCLcBGAs/s1600/goats-competition-dispute.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="379" data-original-width="1200" height="202" src="https://2.bp.blogspot.com/-7Jt0lvehS3o/WZwU5CbIH1I/AAAAAAAAOc8/pWSG4MjyXlMxzv61_zJy0UxK-XuSW23QwCLcBGAs/s640/goats-competition-dispute.jpg" width="640" /></a></div><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;">C</span><br /><br />orporate sagas seem to come in twos. The&nbsp;<a href="http://tata.com/article/inside/tata-sons-chairman-selection-committee" target="_blank">mega-fracas</a>&nbsp;that erupted in 2016 between&nbsp;<a href="https://en.wikipedia.org/wiki/Cyrus_Mistry" target="_blank"><b>Cyrus Mistry</b></a>, then Chairman of Tata Sons, and the iconic&nbsp;<a href="https://en.wikipedia.org/wiki/Tata_Sons" target="_blank"><b>Ratan Tata</b></a>, Chairman Emeritus at Tata Sons, &nbsp;was starting to come to a close by the second half of 2017 (though I fear the last words have yet to be written). Ratan Tata had annointed&nbsp;<a href="https://en.wikipedia.org/wiki/Natarajan_Chandrasekaran" target="_blank"><b>N Chandrasekaran</b></a>, CEO of&nbsp;<a href="https://www.tcs.com/" target="_blank">TCS</a>, as thew Chairman of Tata Sons, and re-asserted his complete control over the sprawling Tata empire. Now comes the rather unexpected news that&nbsp;<b>Vishal Sikka&nbsp;</b>(<a href="https://twitter.com/vsikka" style="font-weight: bold;" target="_blank">@vsikka</a>), CEO and MD of Indian IT behemoth&nbsp;<b><a href="http://www.infosys.com/" target="_blank">Infosys</a></b>, had tendered in his resignation, apparently unable to tolerate any longer the constant "<a href="https://www.cnbc.com/2017/08/18/infosys-ceo-vishal-sikka-resigns-blames-drumbeat-of-distractions.html" target="_blank">drumbeat of distractions</a>" from co-founder Mr. NRN Murthy, and, some&nbsp;<a href="http://www.livemint.com/Companies/kh0jH09FsCQRoaYZmEnqyM/The-backstory-to-Infosys-CEO-Vishal-Sikkas-resignation.html" target="_blank">speculated</a>, a lack of support from some members of the Infosys Board itself.<br /><blockquote class="twitter-tweet" data-lang="en"><div dir="ltr" lang="en">Infosys' CEO has resigned, blaming its co-founders for meddling with the business&nbsp;<a href="https://t.co/Nhu4PBquCF">https://t.co/Nhu4PBquCF</a>&nbsp;<a href="https://t.co/Zp85JgGbmQ">pic.twitter.com/Zp85JgGbmQ</a></div>— Bloomberg Technology (@technology)&nbsp;<a href="https://twitter.com/technology/status/898400766615998465">August 18, 2017</a></blockquote>In particular, this is what Vishal Sikka wrote in his letter to the Board:<br /><blockquote class="tr_bq">"<i>Over the last many months and quarters, we have all been besieged by false, baseless, malicious and increasingly personal attacks. Allegations that have been repeatedly proven false and baseless by multiple, independent investigations. But despite this, the attacks continue, and worse still, amplified by the very people from whom we all expected the most steadfast support in this great transformation.</i>" [<a href="http://economictimes.indiatimes.com/articleshow/60113647.cms?utm_source=contentofinterest&amp;utm_medium=text&amp;utm_campaign=cppst" target="_blank">link</a>]</blockquote>In this perhaps altogether avoidable saga, no one has come out smelling of roses - not the Infosys board, not Vishal Sikka, and not Mr Murthy.<br /><h3 style="text-align: left;">A Retrospect for Vishal Sikka</h3><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em;"><tbody><tr><td style="text-align: center;"><a href="https://2.bp.blogspot.com/-UCbYDqCH3Do/WZwVxvWh3JI/AAAAAAAAOdE/_GuXPXlKf3QkFaK9PbXywwEtgmAPq7j9ACLcBGAs/s1600/pexels-photo-277124.jpeg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1065" data-original-width="1600" height="265" src="https://2.bp.blogspot.com/-UCbYDqCH3Do/WZwVxvWh3JI/AAAAAAAAOdE/_GuXPXlKf3QkFaK9PbXywwEtgmAPq7j9ACLcBGAs/s400/pexels-photo-277124.jpeg" width="400" /></a></td></tr><tr><td class="tr-caption" style="font-size: 12.8px; text-align: center;">image credit: pexels.com</td></tr></tbody></table>Let me start off by revisiting what I had written in 2014 - "<b><a href="http://www.dnaindia.com/analysis/standpoint-a-vishal-opportunity-awaits-infosys-1997757" target="_blank">A 'Vishal' opportunity awaits Infosys</a></b>" - at the time of Mr Sikka's appointment as CEO and MD of Infosys.To summarize, I had made the following points:<br /><div><br /></div>Was Sikka a "<b>trophy CEO</b>"? I had written, "<i>There will be more than one voice heard whispering that Sikka's appointment is more of a publicity gimmick meant to save face for its iconic co-founder, Narayan Murthy, who has been unable to right the floundering ship of the software services giant.</i>" This is still a pertinent question. Once the excitement of the "trophy CEO" wore out, did Mr Murthy's interest in Vishal Sikka also wane? Conversely, once the excitement of the CEO's crown wore off for Mr Sikka, did the thorns of leading and growing a company, with close to two-hundred thousand employees, in a difficult business environment, start to prick?<br /><br /><div>Mr Murthy's return to Infosys had brought with it a controversy and&nbsp;<b>questions of corporate governance&nbsp;</b>as a result of his son Rohan Murthy's inclusion in the Chairman's office - "<i>The presence of his son Rohan Murthy was seen to grate on several senior executives, and also did not go down too well with corporate governance experts.</i>" More on this later, because there is enough mud of poor corporate governance to be thrown at all parties here.</div><div><br /><b>Products-vs-services</b>. I wrote "<i>...there is no company, with the arguable exception of IBM, that has achieved excellence in both services and products. Not Microsoft, not Oracle, not SAP.</i>" Infosys, under Vishal Sikka, had a decidedly uninspiring record in this area. Infosys, in early 2014,&nbsp;<a href="http://trak.in/tags/business/2014/05/13/infosys-product-development-subsidiary-edgeverve/" target="_blank">carved out&nbsp;<b>EdgeVerve</b></a>, a subsidiary, to focus on building "<i>products and platforms.</i>" This continued with Vishal Sikka, and SAP veterans like Michael Reh, Anirban (Andy) Dey,&nbsp;Venkatesh Vaidyanathan, and others were brought in to. Even though EdgeVerve claimed to pay&nbsp;<a href="http://www.gadgetsnow.com/jobs/Infosys-Edgeverve-salaries-on-par-with-Google-Amazon/articleshow/45175884.cms" target="_blank">salaries on par with Google</a>&nbsp;(<a href="http://economictimes.indiatimes.com/tech/ites/infosys-edgeverve-salaries-on-par-with-google-amazon/articleshow/45188136.cms" target="_blank">and this link</a>), it was however staffed at the middle-management layers mostly with veterans from the services side of its parent company, Infosys. The results were unsurprising -&nbsp;<a href="http://economictimes.indiatimes.com/tech/ites/edgeverve-evp-michael-reh-quits-from-infosys-may-continue-as-consultant/articleshow/50579421.cms" target="_blank">Michael Reh resigned</a>&nbsp;in March 2016, Andy quit in July 2017, Venky in August 2017.&nbsp;EdgeVerve is rumoured to have cut its staff by as much as a fourth. Clearly, this was an area where Vishal Sikka was expected to make a substantial impact, but failed.</div><div><br /></div><div>Vishal Sikka also had a tough time retaining talent. His record was decidedly mixed in this regard also. First, he hired as many as&nbsp;<a href="http://www.livemint.com/Companies/nGAvB5k2qs5gmEtTwu9eEP/Infosys-to-refrain-from-hiring-SAP-executives-for-now.html" target="_blank">sixteen executives from SAP after joining Infosys</a>. Several of them were hired at&nbsp;<a href="http://www.gadgetsnow.com/tech-news/Infosys-vice-presidents-get-salary-hikes-of-Rs-4-5-crore/articleshow/43178336.cms" target="_blank">million-dollar salaries</a>, prompting a similar raise for some of the senior executives at Infosys. Second,&nbsp;<a href="http://www.livemint.com/Companies/yD5maY9wxCGdKUjeARnTmI/Infosys-sees-another-seniorlevel-exit-in-blow-to-Vishal-Si.html" target="_blank">several Infosys veterans left, or were asked to leave</a>, during Sikka's tenure. Eventually, several of Sikka's hires from SAP also quit, whether for personal, performance-related, or cultural-misfit reasons is not clearly known. Wherever Vishal Sikka lands next - and it is clear he is too talented, too bright a star to fade away into semi-retirement at some marquee VC firm in Silicon Valley - he will find it at least somewhat difficult to get the best and brightest to follow him.<br /><h3>The Board Games</h3><div><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em;"><tbody><tr><td style="text-align: center;"><a href="https://1.bp.blogspot.com/-w2CZu1fH7jE/WZwZSvqa3nI/AAAAAAAAOdY/SVhst3OmxhM37g89uqMYfoGorUehcRE7ACLcBGAs/s1600/broken-airplane-plane-old.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="549" data-original-width="1200" height="182" src="https://1.bp.blogspot.com/-w2CZu1fH7jE/WZwZSvqa3nI/AAAAAAAAOdY/SVhst3OmxhM37g89uqMYfoGorUehcRE7ACLcBGAs/s400/broken-airplane-plane-old.jpg" width="400" /></a></td></tr><tr><td class="tr-caption" style="font-size: 12.8px; text-align: center;">[image credit: pexels]</td></tr></tbody></table>The Infosys board will go, sooner or later. It has failed its shareholders - utterly and completely. It failed to retain its CEO. It failed to address the concerns of an angry co-founder. It failed to adequately address in time the cloud of corporate governance hanging over the company.<br /><br />If the board believed in Sikka, if they had investigated the corporate governance issues (more on this later) and found everything to be above board, then why were they unable to predict or prevent Vishal's resignation? Clearly, the Infosys board was a house divided against itself, with some members rooting for Mr Murthy, and some for Vishal Sikka.<br /><br />At the root of this corporate governance fracas is Infosys' decision to acquire Israeli startup,&nbsp;<b>Panaya</b>, in 2015, for $200 million (it paid $230 million, but Panaya had $30 million in cash; the net cost of the acquisition therefore was $200 million). Panaya is (or was) an Israeli start-up founded in 2010 as a cloud-based quality management service provider to enterprise applications. In the years leading to its acquisition, Panaya had "<i>laid off more than 25% of the company.&nbsp;In 2016, Panaya shut down their Israeli-based sales development and moved them to Boston and the United Kingdom and replaced their CEO.</i>" [<a href="https://www.themarker.com/technation/1.2033661" target="_blank">link</a>] More pertinently, in 2013, Panaya's 4th funding round included an investment from&nbsp;<b>HPV - Hasso Plattner Ventures</b>. Hasso Plattner is a co-founder and currently Chairman of SAP. Hasso Plattner had been a&nbsp;<a href="http://www.businessinsider.in/Sources-The-Inside-Story-Of-Why-SAPs-Star-Engineer-Vishal-Sikka-Suddenly-Left-The-Company/articleshow/34707839.cms" target="_blank">friend and mentor to Vishal Sikka</a>. This was most likely the reason for a whistleblower's letter in Feb 2017, which alleged that the deal was overpriced, that the then-CFO, Bansal, had walked out of the board meeting convened to vote on the acquisition, that there had been conflicts of interest since SAP owned a 7% stake in Panaya, and so on. The Infosys board got the&nbsp;<a href="http://www.ndtv.com/india-news/infosys-audit-committee-finds-no-wrongdoings-in-panaya-deal-1716200" target="_blank">allegations investigated</a>&nbsp;by its internal Audit Committee as well as by Gibson Dunn and Control Risks and no issues were found. Yet the board did not make public this report.<br /><br />Some basic questions remain unanswered. When Panaya emerged as a potential acquisition, the board should have asked Vishal Sikka to recuse himself from all further dealings on the matter. Neither the board nor Sikka did.<br /><br />When&nbsp;<b>Rajiv Bansal</b>, then CFO of Infosys, allegedly walked out of the board meeting convened to vote on the Panaya acquisition, the board should immediately have convened a committee to look into the matter. It did not.<br /><br />When co-founder Mr N.R.N. Murthy started to make allegations of corporate governance lapses at Infosys, the board should have engaged with him and put an end to the matter. It did not. The board allowed the matter to fester.<br /><div><br /></div>Even the letter the board released to the public after Vishal Sikka's resignation comes off as immature. It reads like a rant, a peevish outburst.</div><div><br /></div><div>A substantial number of members of the Infosys board will go. They are on borrowed time. Who stays and who goes will be determined by who is the most astute politician.<br /><h3>How Do You Solve a Problem Like Mr. Murthy?</h3></div><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em;"><tbody><tr><td style="text-align: center;"><a href="https://1.bp.blogspot.com/-Y-coHN841zc/WZwW39Q5g-I/AAAAAAAAOdM/SSM_aoy3IcUbfyXckoqf1xIQKHa_FcsaACLcBGAs/s1600/egg-eggshell-broken-yolk.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="288" data-original-width="1200" height="95" src="https://1.bp.blogspot.com/-Y-coHN841zc/WZwW39Q5g-I/AAAAAAAAOdM/SSM_aoy3IcUbfyXckoqf1xIQKHa_FcsaACLcBGAs/s400/egg-eggshell-broken-yolk.jpg" width="400" /></a></td></tr><tr><td class="tr-caption" style="font-size: 12.8px; text-align: center;">Having broken eggs, what is the omelette Mr Murthy has in mind<br />[image credit: Pexels.com]</td></tr></tbody></table>Mr N.R.N. Murthy is a legend of the Indian software industry. He has been called&nbsp;<a href="http://content.time.com/time/specials/2007/article/0,28804,1652689_1652372_1652367,00.html" target="_blank">one of India's most influentials</a>, one of the&nbsp;<a href="http://archive.fortune.com/galleries/2012/news/companies/1203/gallery.greatest-entrepreneurs.fortune/11.html" target="_blank">12-greatest entrepreneurs of our times</a>, and a recipient of India's second-highest civilian honour, the&nbsp;<a href="http://dashboard-padmaawards.gov.in/?Award=Padma%20Vibhushan&amp;Year=2008-2008&amp;Field=Trade%20and%20Industry" target="_blank">Padma Vibhushan</a>.<br /><br />It was Mr Murthy who came out of retirement to head Infosys as its Chairman in 2013, and in an almost magical act lured Vishal Sikka to becomes Infosys' first non-founder CEO and MD, in 2014.<br /><br />Mr Murthy's ire at Infosys has been directed mostly at the board, but also, indirectly, at Vishal Sikka also. It were partly his public criticisms that prompted the board to investigate the alleged lapses in the Panaya acquisition? What makes this saga curious is that, as per the Infosys board's letter, "<i>Mr. Murthy was interviewed as part of the investigation by Gibson Dunn and Crutcher LLP in pursuance of the investigation in the Panaya acquisition, and was invited and welcomed to provide any information or evidence he believed would support the allegations being investigated. He did not provide any evidence since none exists.</i>"<br /><br />Since corporate governance lapses are what have pained Mr Murthy, it would remiss to not remind people of two incidents where Mr Murthy's judgment in matters related to corporate governance seems to have erred.<br /><br />First, Mr Murthy was an&nbsp;<b>independent director at media house NDTV</b>&nbsp;till&nbsp;<a href="http://www.livemint.com/Companies/5BpluaYRlTruGthN2wivKI/Narayana-Murthy-steps-down-as-NDTV-director.html" target="_blank">Sep 2009</a>. NDTV, as may be known to people, has been in the news on account of allegations of tax fraud. Most recently, in July 2017, the Income Tax Appellate Tribunal (ITAT) upheld the Income Tax department's&nbsp;finding that "<i>NDTV used their own shell companies to round-trip investments of Rs 642 crore during 2009-10, making them liable for recovery of tax and penalty.</i>" [<a href="http://timesofindia.indiatimes.com/india/ndtv-round-tripped-rs-642-crore-via-shell-companies-in-2009-2010-tribunal/articleshow/59719501.cms" target="_blank">source</a>] NDTV's founder, Prannoy Roy, and others, were charged by the&nbsp;<b>Central Bureau of Investigation</b>&nbsp;under the&nbsp;<b>Prevention of Corruption Act</b>&nbsp;as far back as 1998. It may be an inconvenient but certainly a pertinent question if Mr Murthy were to be asked what he did, or not do, as an independent director on the board of NDTV, around these allegations and issues of corporate governance.<br /><br />Second, closer to home, when Mr Murthy&nbsp;<a href="http://www.livemint.com/Companies/1fFlFdRFtVSY3E3GJTQhAK/Infosys-brings-back-N-R-Narayana-Murthy-as-exective-chairm.html" target="_blank">came back to head Infosys</a>&nbsp;a second time as Chairman, in June 2013, his son,&nbsp;<b>Rohan Murthy</b>&nbsp;joined his father in the newly-formed Chairman's office as Executive Assistant to the Chairman. At that point Mr Murthy had emphatically stated that his son would have no leadership role in the company. Less than three months later, Mr Rohan Murthy was&nbsp;<a href="http://economictimes.indiatimes.com/tech/ites/infosys-nr-narayana-murthys-son-rohan-murty-designated-as-vice-president/articleshow/22009406.cms" target="_blank"><b>designated Vice President</b></a>, a title that few people usually earn, and that too after fifteen or more years in the industry.<br /><br />Mr Murthy's concern over corporate governance seems to be somewhat newfound. It seems conveniently expedient.<br /><br />A question that does need to be asked is this - has Mr Narayan Murthy become the&nbsp;<b>obsessive mother-in-law</b>&nbsp;that cannot bring herself to step back? After all,&nbsp;<a href="http://economictimes.indiatimes.com/magazines/corporate-dossier/infosys-is-like-my-middle-child-says-nr-narayana-murthy/articleshow/41695651.cms" target="_blank">Mr Murthy's once described Infosys as his "middle child</a>". Taking that analogy one step further, Vishal Sikka was like the bride he brought home for his child. Like the stereotypical "saas" (mother-in-law) in Indian movies, Mr Murthy however could not step back and allow the "<i>child</i>" and "<i>bride</i>" to find their own way.<br /><br />Mr Murthy has a legion of admirers in the industry. This battle is far from over. In this battle between Mr Murthy and Infosys - its board and ex-CEO - it is only the Infosys brand that will suffer. It would be a tragedy if Mr Murthy lets his legacy end on this sour note.<br /><br /><i>This post first appeared in&nbsp;<a href="https://www.linkedin.com/pulse/infosys-nrn-murthy-vishal-sikka-roses-abhinav-agarwal" target="_blank">LinkedIn</a>&nbsp;on&nbsp;<a href="https://www.linkedin.com/pulse/infosys-nrn-murthy-vishal-sikka-roses-abhinav-agarwal" target="_blank">Aug 22, 2017</a>.</i><br /><br /><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;"></span><br /><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-2652878794999588580 Mon Aug 28 2017 14:03:00 GMT-0400 (EDT) How to speed up your Oracle Data Mining with in-memory and parallel http://www.oralytics.com/2017/08/how-to-speed-up-your-oracle-data-mining.html <p>Have you have found running a workflow in Oracle Data Miner slow or running the scripts in the database slow ?</p> <p>No. Good, because I haven't found it slow.</p> <p>But (there is always a but) it really depends on the volume of data your are dealing with. For the vast majority of us who aren't of the size of google, amazon, etc have data volumes that are not that large really and a basic server can process many millions of records extremely quickly using Oracle Data Mining.</p> <p>But what if we have a large volume of data. In one recent project I had a data set containing over 3.5 billion records. Now that is big data. All of this data sitting in an Oracle Database. </p> <p>So how can we process over 3.5 billion records in a couple of seconds, building 4 machine learning models in that time? Is that really possible with just using an Oracle Database? Yes is the answer and very easily. (Surely I needed Hadoop and Spark to process this data? Nope!)</p> <p>The Oracle Data Miner (ODMr) tool comes with a new feature in SQL Developer 4 (and higer) that allows you to manage using Parallel execution and the in-memory DB features. These can be accessed on the ODMr Worksheet tool bar.</p> <p><img src="https://lh3.googleusercontent.com/-T8ynrGOlN3k/WZFyzW839iI/AAAAAAAAMQU/lzUsOc_w11g-L_UTpUmt2QZD4zJXSOBcwCHMYCw/NewImage.png?imgmax=800" alt="NewImage" title="NewImage.png" border="0" width="600" height="85" /></p> <p>The best time to look at these setting is when you have created your workflow and are ready to run it for the first time. When you click on the 'Performance Options' link, you will get the following window. It will display the list of nodes you have in the workflow and will then indicate if the Degree of Parallel and the In-Memory options can be set for each of the nodes.</p> <img src="https://lh3.googleusercontent.com/-RhF0dSbvk7w/WZHyGx527WI/AAAAAAAAMQk/DlkVq7b6n80gCBZffdlXf4xHkErwBx_3QCHMYCw/NewImage.png?imgmax=800" alt="NewImage" title="NewImage.png" border="0" width="450" height="250" /> <p>The default values are shown and you can changes these. For example, in a lot of scenarios you might prefer to leave the Degree of Parallel as System Determined. This will then use whatever the the default is for the database and controlled by the DBA, but if you want to specify a particular value then you can, for example setting the degree of parallel to 4 for the 'Class Build' node, in the above image. Similarly for the in-memory option, this will only be available for nodes where the in-memory option would be applicable. This will be where there is a lot of data processing (preparing data, transforming data, performing specific statistics, etc) and for storing any data that is generated by Oracle Data Mining. </p> <p>But what if you want to change the default values. You can change these at a global level within the SQL Developer Preferences. Here you can set the default to be used for each of the different types of Oracle Data Mining nodes.</p> <p><img src="https://lh3.googleusercontent.com/-vLga_dZZn2A/WZH0MX0NBFI/AAAAAAAAMQw/_MqHToX03eIxWsj3yzWVJZSGzzguUr5OACHMYCw/NewImage.png?imgmax=800" alt="NewImage" title="NewImage.png" border="0" width="375" height="382" /></p> <p>I mentioned at the start that I've been able to build 4 machine learning models using Oracle Data Mining on a data set of over 3.5 billion records, all in a couple of seconds. In my scenario Parallel was set to 16 and we didn't use in-memory as we didn't have the licence for it. You can see that machine learning at lighting speed (ish) is possible. This timing is only for building the models, which is the step that consumes the most about of resources and time. When it comes to scoring the data, that is lighting fast. In may scenario, scoring over 300,000 was less than a second, and I didn't use parallel or anything else to speed things up. Because we didn't need to.</p> <p>Go give it a try!</p> Brendan Tierney tag:blogger.com,1999:blog-4669933501315263808.post-2931345953987801440 Mon Aug 28 2017 10:48:00 GMT-0400 (EDT) The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis http://www.rittmanmead.com/blog/2017/08/the-week-after-game-of-thrones-s07-e06-analysis/ <img src="http://www.rittmanmead.com/blog/content/images/2017/08/Overall-Characters-Sentiment-2.png" alt="The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis"><p>Another week is gone, another "Game of Thrones" episode watched, only one left until the end of the 7th series. <br> The <a href="http://www.independent.co.uk/arts-entertainment/tv/news/game-of-thrones-season-7-episode-6-leaks-online-full-hbo-spain-torrents-download-reddit-watch-jon-a7895636.html">"incident"</a> in Spain, with the episode released for few hours on Wednesday screwed all my plans to do a time-wise comparison between episodes across several countries. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Leaked.jpg" alt="The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis"></p> <p>I was then forced to think about a new action plan in order avoid disappointing all the fans who enjoyed my previous <a href="http://www.rittmanmead.com/blog/2017/08/how-was-game-of-thrones-s07-e05-tweet-analysis-with-kafka-bigquery-and-tableau/">blog post</a> about the episode 5. What you'll read in today's analysis is based on the same technology as before: Kafka Connect source from Twitter and Sink to BigQuery with Tableau analysis on top.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Overall-Flow-1.png" alt="The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis"></p> <p>What I changed in the meantime is the data structure setup: in the <a href="http://www.rittmanmead.com/blog/2017/08/how-was-game-of-thrones-s07-e05-tweet-analysis-with-kafka-bigquery-and-tableau/">previous part</a> there was a BigQuery table <code>rm_got</code> containing #GoT tweets, an Excel table containing <code>Keywords</code> for each character together with the <code>Name</code> and the <code>Family</code> (or House). Finally there was a view on top of BigQuery <code>rm_got</code> table extracting all the words of each tweet in order to analyse their sentiment. <br> For this week analysis I tried to optimise the dataflow, mainly pushing data into BigQuery, and I added a new part to it: <strong>online press reviews analysis</strong>! </p> <h1 id="optimization">Optimization</h1> <p>As mentioned during my previous post, the setup described before was miming an analyst workflow, without writing access to datasource. However it was far from optimal performance wise, since there was a <em>cartesian join</em> between two data-sources, meaning that for every query all the dataset was extracted from BigQuery and then joined in memory in Tableau even if filters for a specific character were included.</p> <p>The first change was pushing the characters Excel data in BigQuery, so at least we could use the <strong>same datasource joins</strong> instead of relying on Tableau's <strong>data-blend</strong>. This has the immediate benefit of running joins and filters in the datasource rather than retrieving all data and filtering locally in memory. <br> Pushing Excel data into BigQuery is really easy and can be done directly in the web GUI, we just need to transform the data in <code>CSV</code> which is one of allowed input data formats.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/DataFormats-1.png" alt="The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis"></p> <p>Still this modification alone doesn't resolve the problem of the cartesian join between characters (stored in <code>rm_characters</code>) and the main <code>rm_got</code> table since also BigQuery native joining conditions don't allow the usage of the <code>CONTAIN</code> function we need to verify that the character <code>Key</code> is contained in the Tweet's <code>Text</code>. <br> Luckily I already had the <code>rm_words</code> view, used in the previous post, splitting the words contained in the Tweet <code>Text</code> into multiple rows. The view contained the Tweet's <code>Id</code> and could be joined with the characters data with a <code>=</code> condition.</p> <p>However my over simplistic first implementation of the view was removing only <code>#</code> and <code>@</code> characters from the Tweet text, leaving all the others punctuation signs in the words as you can see in the image below.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/WordsView-1.png" alt="The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis"></p> <p>I replaced the old <code>rm_words</code> view code with the following</p> <pre><code>SELECT id, TEXT, SPLIT(REGEXP_REPLACE(REPLACE(UPPER(TEXT), 'NIGHT KING', 'NIGHTKING'),'[^a-zA-Z]',' '),' ') f0__group.word FROM [big-query-ftisiot:BigQueryFtisiotDataset.rm_got] </code></pre> <p>Which has two benefits:</p> <ul> <li><code>REPLACE(UPPER(TEXT), 'NIGHT KING', 'NIGHTKING')</code>: Since I'm splitting words, I don't want to miss references to the <strong>Night King</strong> which is composed by two words that even if written separated point the same character.</li> <li><code>REGEXP_REPLACE(..,'[^a-zA-Z]',' ')</code>: Replaces using regular expression, removing any character apart from the letters A-Z in lower and upper case from the Tweet <code>Text</code>.</li> </ul> <p>The new view definition provides a clean set of words that can finally be joined with the list of characters keys. The last step I did to prepare the data was to create an unique view containing all the fields I was interested for my analysis with the following code:</p> <pre><code>SELECT rm_got.Id, rm_got.Text, rm_got.CreatedAt, [...] characters.Key, characters.Name, characters.Family FROM [DataSet.rm_got] AS rm_got JOIN [DataSet.rm_words] AS rm_words ON rm_got.id=rm_words.id JOIN (SELECT * FROM FLATTEN([DataSet.rm_words],f0__group.word)) AS rm_words_char ON rm_got.id=rm_words_char.id JOIN [DataSet.rm_charachters] AS characters ON rm_words_char.f0__group.word = characters.Key </code></pre> <p>Two things to notice: </p> <ul> <li>The view <code>rm_words</code> is used two times: one, as mentioned before, to join the Tweet with the character data and one to show all the words contained in a tweet.</li> <li>The <code>(SELECT * FROM FLATTEN([DataSet.rm_words],f0__group.word))</code> subselect is required since <code>word</code> column, contained in <code>rm_words</code>, was a repeated field, that can't be used in joining condition if not flatten.</li> </ul> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/RepeatedField.png" alt="The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis"></p> <p>Please note that the SQL above will still duplicate the Tweet rows, in reality we'll have a row for each <code>word</code> and different character <code>Key</code> contained in the Text itself. Still this is a big improvement from the cartesian join we used in our first attempt.</p> <p>One last mention to optimizations: currently the sentence and word sentiment is calculated on the fly in Tableau using the <code>SCRIPT_INT</code> function. This means that data is extracted from BigQuery into Tableau, then passed to R (running locally in my pc) which computes the score and then returns it to Tableau. In order to optimize Tableau performance I could pre-compute the scores in R and push them in a BigQuery Table but this would mean a pre-processing step that I wanted to avoid since a real-time analysis was one of my purposes.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Flow-with-R.png" alt="The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis"></p> <h1 id="tweetanalysis">Tweet Analysis</h1> <p>With my tidy dataset in place, I can now start the analysis and, as the previous week I can track various KPIs like the mentions by character <code>Family</code> and <code>Name</code>. To filter only current week data I created two parameters <code>Start Date of Analysis</code> and <code>End Date of Analysis</code> </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Start-Parameter.png" alt="The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis"></p> <p>Using those parameters I can filter which days I want to include in my analysis. To apply the filter in the Workbook/Dashboard I created also a column <code>Is Date of Analysis</code> with the following formula</p> <pre><code>IIF(DATE([CreatedAt]) &gt;= [Start Date of Analysis] AND DATE([CreatedAt]) &lt;= [End Date of Analysis] ,'Yes','No') </code></pre> <p>I can now use the <code>Is Date of Analysis</code> column in my Workbooks and filter the <code>Yes</code> value to retain only the selected dates.</p> <p>I built a dashboard containing few of the analysis mentioned in my previous blog post, in which I can see the overall scatterplot of characters by <code># of Tweets</code> and <code>Sentence Sentiment</code> and click on one of them to check its details regarding the most common words used and sentence sentiment.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Overall-Dashboard.png" alt="The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis"></p> <p>From the scatterplot on top we can see a change of leadership in the <code># of Tweets</code> with <strong>Daenerys</strong> overtaking <strong>Jon</strong> by a good margin, saving him and in the meantime loosing one of the three dragons was a touching moment in the episode. When clicking on <strong>Daenerys</strong> we can see that the world <code>WHITE</code> is driving also the positive sentiment.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Daenerys.png" alt="The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis"></p> <p>The <strong>Night King</strong> keep its leadership on the <code>Sentiment</code> positive side. Also in this case the <code>WHITE</code> word being the most used with positive sentiment. On the other side <strong>Arya</strong> overtook <strong>Sansa</strong> as character with most negative mentions. When going in detail on The positive/negative words, we can clearly see that <code>STARK</code> (mentioned in previous episode), <code>KILL</code>, <code>WRONG</code> and <code>DEATH</code> are driving the negative sentiment. Interesting is also the word <code>WEAR</code> with negative sentiment (from Google dictionary "damage, erode, or destroy by friction or use.").</p> <p><center> <br> <img width="400px" alt="The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis" src="http://www.rittmanmead.com/blog/content/images/2017/08/Arya-positive-negative.png"> <br> </center></p> <p>A cut down version of the workbook with a limited dataset, visible in the image below, is available in <a href="https://public.tableau.com/shared/PRG5DRBTD?:display_count=yes&amp;:showVizHome=no">Tableau Public</a>.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Dashboard.png" alt="The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis"></p> <h2 id="gameofcouples">Game of Couples</h2> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Couples.png" alt="The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis"></p> <p>This comparison is all what I promised towards the end of my first post, so I could easily stop here. However as curious person and #GoT fan myself I wanted to know more about the dataset and in particular analyse how <strong>character interaction affect sentiment</strong>. To do so I had somehow to join characters together if they were mentioned in the same tweet, luckily enough my dataset contained the character mentioned and the list of words of each Tweet. I can reuse the list of words on a left join with the list of characters keys. In this way I have a record for each couple of characters mentioned in a Tweet.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Left-Join.png" alt="The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis"></p> <p>I can then start analysing the Tweets mentioning any couple of characters, with the <code># of Tweets</code> driving the gradient. As you can see I removed the values where the column and row is equal (e.g. Arya and Arya). The result, as expected, is a symmetric matrix since the <code># of Tweets</code> mentioning Arya and Sansa is the same as the ones mentioning Sansa and Arya.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Characters-mentioned-in-same-tweet-2.png" alt="The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis"></p> <p>We can clearly see that <strong>Jon</strong> and <strong>Daenerys</strong> are the most mentioned couple with <strong>Sansa</strong> and <strong>Arya</strong> following and in third place <strong>Whitewalkers</strong> and <strong>Bran</strong>. This view and the insights we took from it could be problematic to get in cases when the reader is colour blind or has troubles when defining intensity. For those cases a view like the below provides the same information (by only switching the <code># of Tweets</code> column from <code>Color</code> to <code>Size</code>), however it has the drawback that small squares are hard to see.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Characters-Square.png" alt="The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis"></p> <p>The next step in my "couple analysis" is understand sentiment, and how a second character mentioned in the same tweet affects the positive/negative score of a character. The first step I did is showing the same scatterplot as before, but filtered for a single character, in this case <strong>Arya</strong>.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Arya-Scatterplot.png" alt="The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis"></p> <p>The graph shows <strong>Arya</strong>'s original position, and how the <code>Sentiment</code> and the <code># of Tweets</code> change the position when another character is included in the Tweet. We can see that, when mentioned with <strong>Daenerys</strong> the sentiment is much more positive, while when mentioned with <strong>Bran</strong> or <strong>Littlefinger</strong> the sentiment remains almost the same. </p> <p>This graph it's very easy to read, however it has the limitation of being able to display only one character behaviour at time (in this case <strong>Arya</strong>). What I wanted is to show the same pattern across all characters in a similar way as when analysing the <code># of Tweets</code> per couple. To do so I went back to a matrix stile of visualization, setting the colour based on positive (green) or negative (red) sentiment.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Overall-Characters-Sentiment-1.png" alt="The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis"></p> <p>As before the matrix is symmetric, and provides us a new set of insights. For example, when analysing <strong>Jorah Mormont</strong>, we can see that a mention together with <strong>Cercei</strong> is negative which we can somehow expect due to the nature of the queen. What's strange is that also when Jorah is mentioned with <strong>Samwell Tarly</strong> there is a negative feeling. Looking deeply in the data we can see that it's due to a unique tweet containing both names with a negative sentiment score.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Jorah-Sam.png" alt="The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis"></p> <p>What's missing in the above visualization is an indication on how "strong" is the relationship between two character based on the <code># of Tweets</code> where they are mentioned together. We can add this by including the <code># of Tweets</code> as position of the sentiment square. The more the square is moved towards the right the higher is the <code># of Tweets</code> mentioning the two characters together. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Dan-Jon-3.png" alt="The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis"></p> <p>We can see as before that <strong>Jorah</strong> and <strong>Sam</strong> have a negative feeling when mentioned together, but it's not statistically significant because the <code># of Tweets</code> is very limited (square position completely on the left). Another example is <strong>Daenerys</strong> and <strong>Jon</strong> which have a lot of mentions together with a neutral sentiment. As we saw before also the couple <strong>Arya</strong> and <strong>Bran</strong> when mentioned together have a negative feeling, with a limited number Tweets mentioning them together. However <strong>Bran</strong> mentioned with <strong>WhiteWalkers</strong> has a strong positive sentiment.</p> <p>It's worth mentioning that the positioning of the dot is based on a uniform scale across the whole matrix. This means that if, like in our case, there is a dominant couple (Daenerys and Jon) mentioned by a different order of magnitude of <code># of Tweets</code> compared to all other couples, the difference in positioning of all the others dots will be minimal. This could however be solved using a logarithmic scale.</p> <h1 id="webscraping">Web Scraping</h1> <p><mark><strong>Warning</strong>: all the analysis done in the article including this chapter are performed with automated tools. Due to the nature of the subject (a TV series plenty of deaths, battles and thrilling scenes) the words used to describe a sentence could be automatically classified as positive/negative. This doesn't automatically mean that the opinion of the writer is either positive or negative about the scene/episode/series.</mark></p> <p>The last part of the analysis I had in mind was about comparing the Tweets sentiment, with the same coming from the episode reviews that I could find online. This latter part relies a lot on the usage of R to scrape the relevant bits from the web-pages, the whole process was:</p> <ul> <li>Search on Google for <code>Beyond the Wall Reviews</code></li> <li>Take the top N results</li> <li>Scrape the review from the webpage</li> <li>Tokenize the review in sentences</li> <li>Assign the sentence score using the same method as in Tableau</li> <li>Tokenize the sentence in words</li> <li>Upload the data into BigQuery for further analysis</li> </ul> <p>Few bits on the solution I've used to accomplish this since the reviews are coming from different websites with different tags, classes and Ids, I wasn't able to write a general scraper for all websites. However each review webpage I found had the main text divided in multiple <code>&lt;p&gt;</code> tags under a main <code>&lt;div&gt;</code> tag which had an unique <code>Id</code> or <code>class</code>. The R code simply listed the <code>&lt;div&gt;</code> elements, found the one mentioning the correct <code>Id</code> or <code>class</code> and took all the data contained inside the <code>&lt;p&gt;</code> elements. A unique function is called with three parameters: <code>website</code>, <code>Id</code> or <code>class</code> to look for, and <code>SourceName</code> (e.g. Telegraph). The call to the function is like</p> <pre><code>sentence_df &lt;- scrapedata("http://www.ign.com/articles/2017/08/21/game-of-thrones-beyond-the-wall-review",'Ign',"article-content") </code></pre> <p>It will return a dataframe containing one row per <code>&lt;p&gt;</code> tag, together with a mention of the source (<code>Ign</code> in this case). </p> <p>The rest of the R code tokenizes the strings and the words using the <code>tokenizers</code> package and assigns the related sentiment score with the <code>syuzhet</code> package used in my previous blog post. Finally it creates a JSON file (New Line Delimited) which is one of the input formats accepted by BigQuery. <br> When the data is in BigQuery, the analysis follows the same approach as before with Tableau connecting directly to BigQuery and using again R for word sentiment scoring.</p> <p>The overall result in Tableau includes a global Episode sentiment score by <code>Source</code>, the usual scatterplot by character and the same by <code>Source</code>. Each of the visualizations can act as filter for the others.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Press-Reviews.png" alt="The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis"></p> <p>We can clearly see that <strong>AVClub</strong> and <strong>Indiewire</strong> had opposite feelings about the episode. <strong>Jon Snow</strong> is the most mentioned character with <strong>Arya</strong> and <strong>Sansa</strong> overtaking <strong>Daenerys</strong>.</p> <p>The <strong>AVClub</strong> vs <strong>Indiewire</strong> scoring can be explained by the sencence sentiment categorization. <strong>Indiewire</strong> had most negative sentences (negative evaluations) while the distribution of <strong>AVClub</strong> has its peak on the <code>1</code> (positive) value.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Sentence-Sentiment-By-Source.png" alt="The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis"></p> <p>Checking the words used in the two Sources we can notice as expected a majority of positive for <strong>AVClub</strong> while <strong>Indiewire</strong> has the overall counts almost equal.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Word-Sentiment.png" alt="The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis"></p> <p>Going in detail on the words, we can see the positive sentiment of <strong>AVClub</strong> being driven by <code>ACTION</code>, <code>SENSE</code>, <code>REUNION</code> while <strong>Indiewire</strong> negative one due to <code>ENEMY</code>, <code>BATTLE</code>, <code>HORROR</code>. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Word-Sentiment-Bubbles.png" alt="The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis"></p> <p>This is the automated overall sentiment analysis, if we read the two articles from <a href="http://www.indiewire.com/2017/08/game-of-thrones-season-7-episode-6-review-beyond-the-wall-recap-spoilers-1201868153/">Indiewire</a> and <a href="http://tv.avclub.com/a-game-changing-thrones-spectacle-buckles-under-the-pre-1798346427">AVClub</a> in detail we can see that the overall opinion is not far from the automated score:</p> <p>From <strong>AVClub</strong> </p> <blockquote> <p>On the level of spectacle, “Beyond The Wall” is another series high point, with stellar work ....</p> </blockquote> <p>From <strong>IdieWire</strong> </p> <blockquote> <p>Add to the list “Beyond the Wall,” an episode that didn’t have quite the notable body count that some of those other installments did</p> </blockquote> <p>To be fair we also need to say that <strong>IdieWire</strong> article is focused on the war happening and the thrilling scene with the <strong>Whitewalkers</strong> where words like <code>ENEMY</code>, <code>COLD</code>, <code>BATTLE</code>, <code>DEATH</code> which have a negative sentiment are actually only used to describe the scene and not the feelings related to it.</p> <h2 id="characterandreviewsourceanalysis">Character and Review Source Analysis</h2> <p>The last piece of analysis is related to single characters. As mentioned before part of the dashboard built in Tableau included the <code>Character</code> scatterplot and the <code>Source</code> scatterplot. By clicking on a single <code>Character</code> I can easily filter the <code>Source</code> scatterplot, like in this case for <strong>Daenerys</strong>.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Daenerys-By-Source.png" alt="The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis"></p> <p>We can see how different Sources have different average sentiment score for the same character, in this case with <strong>Mashable</strong> being positive while <strong>Pastemagazine</strong> negative. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Daenerys-Words.png" alt="The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis"></p> <p>Checking the words mentioned we can clearly see a positive sentiment related to <code>PRESENT</code>, <code>AGREED</code> and <code>RIDER</code> for <strong>Mashable</strong> while the negative sentiment of <strong>Pastemagazine</strong> is driven by <code>FIGHT</code>, <code>DANGER</code>, <code>LOOSING</code>. As said before just few words of difference describing the same scene can make the difference.</p> <p>Finally, one last sentence for the very positive sentiment score for <strong>Clegor Clegaine</strong>: it is partially due to the reference to his nickname, the <strong>Mountain</strong>, which is used as <code>Key</code> to find references. The mountain is contained in a series of sentences as reference to the place where the group of people guided by <strong>Jon Snow</strong> are heading in order to find the <strong>Whitewalkers</strong>. We could easily remove <code>MOUNTAIN</code> from the Keywords to eliminate the mismatch.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Mountain.png" alt="The Week After: Game of Thrones S07 E06 Tweets and Press Reviews Analysis"></p> <p>We are at the end of the second post about Game of Thrones analysis with Tableau, BigQuery and Kafka. Hope you didn't get bored...see you next week for the final episode of the series! And please avoid waking up with blue eyes!</p> <p><center><iframe src="https://giphy.com/embed/3owvJXPRVdfvynuxZS" width="480" height="270" frameborder="0" class="giphy-embed" allowfullscreen></iframe><p><a href="https://giphy.com/gifs/gameofthrones-game-of-thrones-hbo-3owvJXPRVdfvynuxZS">via GIPHY</a></p></center></p> Francesco Tisiot faf8cf04-34f9-4795-aa52-01c455004f9f Fri Aug 25 2017 10:56:39 GMT-0400 (EDT) Installing and configuring the Exadata Database Machine plug-in for EM Cloud Control https://gavinsoorma.com/2017/08/installing-and-configuring-the-exadata-database-machine-plug-in-for-em-cloud-control/ <p>The Oracle Exadata plug-in for OEM enables us to monitor as well as manage Exadata targets through Enterprise Manager Cloud Control 12c.</p> <p>The features include:</p> <ul> <li>Monitoring of the Exadata Database Machine as an Enterprise Manager target.</li> <li>Monitoring of the all the components of the Exadata Database Machine target, including the Exadata Storage Cells</li> </ul> <ul> <li>Execute CELLCLI commands and also configure and manage I/O Resource Management (IORM) feature.</li> </ul> <ul> <li>Support SNMP notification for Exadata cells.</li> </ul> <ul> <li>Support dashboard report creation from Enterprise Manager Cloud Control for Exadata Database Machine</li> </ul> <ul> <li>Enhanced InfiniBand network fault detection and InfiniBand schematic port state reporting.</li> </ul> <p>This note describes the procedure used to deploy the plug-in on an Exadata X5-2 one eighth rack.</p> <p>The version of the Oracle Enterprise Manager agent is 12.1.0.5 and the Exadata plug-in version is 12.1.0.6.</p> <p>At a high level, the Exadata plug-in installation and deployment consists of the following steps:</p> <ul> <li>Create a database server ILOM Service Processor user</li> <li>Verify ILOM Ipmitool version</li> <li>Verify Infiniband Switch firmware</li> <li>Obtain the credentials needed for Agent installation and Target Discovery</li> <li>Install Enterprise Manager Agents on compute nodes</li> <li>Setup SSH equivalence between the cellmonitor user and the agent (oraagent) user</li> <li>Discover the Exadata Database Machine</li> <li>Post-Discovery Configuration and Verification</li> <li>Create Exadata Database Machine Dashboard</li> </ul> <p>&nbsp;</p> <h4><strong>Create a Database Server ILOM Service Processor User </strong></h4> <p>&nbsp;</p> <ul> <li>Log in to the database server ILOM Service Processor (<strong>exdb1dbadm01-ilom</strong>) as root</li> </ul> <p>login as: root</p> <p>Using keyboard-interactive authentication.</p> <p>Password:</p> <p>Oracle(R) Integrated Lights Out Manager</p> <p>Version 3.2.4.52 r101649</p> <p>Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.</p> <p>Hostname: exdb1dbadm01-ilom</p> <p>&nbsp;</p> <ul> <li>Change to the users directory</li> </ul> <p>-&gt; <strong>cd /SP/users</strong></p> <p>/SP/users</p> <ul> <li>Create the <strong>oemuser</strong> user and password</li> </ul> <p><strong> </strong>-&gt; <strong>create oemuser</strong></p> <p>Creating user&#8230;</p> <p>Enter new password: ********</p> <p>Enter new password again: ********</p> <p>Created /SP/users/oemuser</p> <p>&nbsp;</p> <ul> <li>Change to the new user&#8217;s directory and set the role</li> </ul> <p><strong> </strong>-&gt; <strong>cd oemuser</strong></p> <p>/SP/users/oemuser</p> <p>-&gt; <strong>set role=&#8217;cro&#8217;</strong></p> <p>Set &#8216;role&#8217; to &#8216;cro&#8217;</p> <p>&nbsp;</p> <p><strong>Note:</strong> Repeat all the same steps for <strong>exdb1dbadm02-ilom</strong></p> <p>&nbsp;</p> <ul> <li>Test the ILOM user ID <strong>oemuser</strong> created above, by listing the last 10 system events:</li> </ul> <p><strong> </strong></p> <p>Run the command below on both compute nodes:</p> <p><strong>ipmitool -I lanplus -H exdb1dbadm01-ilom -U oemuser -P welcome1 -L USER sel list last 10</strong></p> <p>&nbsp;</p> <p>[root@exdb1db01 ~]# <strong>ipmitool -I lanplus -H exdb1dbadm01-ilom -U oemuser -P welcome1 -L USER sel list last 10</strong></p> <p>&nbsp;</p> <p>35a | 01/18/2016 | 05:19:22 | System Firmware Progress | Hard-disk initialization | Asserted</p> <p>35b | 01/18/2016 | 05:19:22 | System Firmware Progress | Option ROM initialization | Asserted</p> <p>35c | 01/18/2016 | 05:20:14 | System Firmware Progress | Hard-disk initialization | Asserted</p> <p>35d | 01/18/2016 | 05:20:14 | System Firmware Progress | Hard-disk initialization | Asserted</p> <p>35e | 01/18/2016 | 05:20:14 | System Firmware Progress | Hard-disk initialization | Asserted</p> <p>35f | 01/18/2016 | 05:20:14 | System Firmware Progress | Hard-disk initialization | Asserted</p> <p>360 | 01/18/2016 | 05:20:14 | System Firmware Progress | Hard-disk initialization | Asserted</p> <p>361 | 01/18/2016 | 05:20:14 | System Firmware Progress | Option ROM initialization | Asserted</p> <p>362 | 01/18/2016 | 05:20:22 | System Firmware Progress | System boot initiated | Asserted</p> <p>363 | 01/18/2016 | 05:20:22 | System Firmware Progress | System boot initiated | Asserted</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>[root@exdb1db02 ~]# <strong>ipmitool -I lanplus -H exdb1dbadm01-ilom -U oemuser -P welcome1 -L USER sel list last 10     </strong></p> <p>&nbsp;</p> <p>35a | 01/18/2016 | 05:19:22 | System Firmware Progress | Hard-disk initialization | Asserted</p> <p>35b | 01/18/2016 | 05:19:22 | System Firmware Progress | Option ROM initializat ion | Asserted</p> <p>35c | 01/18/2016 | 05:20:14 | System Firmware Progress | Hard-disk initialization | Asserted</p> <p>35d | 01/18/2016 | 05:20:14 | System Firmware Progress | Hard-disk initialization | Asserted</p> <p>35e | 01/18/2016 | 05:20:14 | System Firmware Progress | Hard-disk initialization | Asserted</p> <p>35f | 01/18/2016 | 05:20:14 | System Firmware Progress | Hard-disk initialization | Asserted</p> <p>360 | 01/18/2016 | 05:20:14 | System Firmware Progress | Hard-disk initialization | Asserted</p> <p>361 | 01/18/2016 | 05:20:14 | System Firmware Progress | Option ROM initialization | Asserted</p> <p>362 | 01/18/2016 | 05:20:22 | System Firmware Progress | System boot initiated| Asserted</p> <ul> <li>01/18/2016 | 05:20:22 | System Firmware Progress | System boot initiated| Asserted</li> </ul> <p>&nbsp;</p> <h4><strong>Verify ILOM Ipmitool version</strong></h4> <p>&nbsp;</p> <p><strong> </strong>Enterprise Manager requires a minimal Ipmitool software version of 1.8.10.3 for Oracle Linux.</p> <p>Using DCLI, we can check the version on both compute nodes by running the ipmitool –V command.</p> <p>[root@exdb1db01 ~]# <strong>dcli -g ~/dbs_group -l root ipmitool -V</strong></p> <p>exdb1db01: ipmitool version 1.8.12.3</p> <p>exdb1db02: ipmitool version 1.8.12.3</p> <p>&nbsp;</p> <p>The dbs_groupfile contains the list of compute node hostnames, one on each line.</p> <p>Create the dbs_groupfile if it does not exist.</p> <p>[root@exdb1db01 ~]# <strong>cat dbs_group</strong></p> <p>exdb1db01</p> <p>exdb1db02</p> <h4></h4> <p>&nbsp;</p> <h4><strong>Verify Infiniband Switch firmware</strong></h4> <p>&nbsp;</p> <p>Log on to the management interface for the InfiniBandSwitch (<strong>exdb1sw-iba01</strong>) as root.</p> <p>login as: root</p> <p>root@exda1sw-iba01&#8217;s password:</p> <p>&nbsp;</p> <p>Run the command nm2version.</p> <p>The minimum version should be 1.1.3-2</p> <p>&nbsp;</p> <p>[root@exda1sw-iba01 ~]# <strong>nm2version</strong></p> <p>(Note: The command &#8216;nm2version&#8217; is deprecated and will be removed from future</p> <p>releases. Please use &#8216;version&#8217; instead)</p> <p>&nbsp;</p> <p>SUN DCS 36p version: <strong>2.1.5-1</strong></p> <p>Build time: Oct  6 2014 10:35:15</p> <p>SP board info:</p> <p>Manufacturing Date: 2015.02.17</p> <p>Serial Number: &#8220;NCDIV0061&#8221;</p> <p>Hardware Revision: 0x0200</p> <p>Firmware Revision: 0x0000</p> <p>BIOS version: SUN0R100</p> <p>BIOS date: 06/22/2010</p> <p>&nbsp;</p> <p><strong>Note</strong>: Perform the same check on the second Infiniband Switch.</p> <p>&nbsp;</p> <p>&nbsp;</p> <h4><strong>Obtain the credentials needed for Agent installation and Target Discovery</strong></h4> <p><strong>List of credentials needed for Discovery</strong></p> <ul> <li>Agent host credentials: the username and password of the user running the agents on the compute nodes</li> </ul> <p>Note &#8211; Agent owner should be in the same OS group as the CRS and Database software owners</p> <ul> <li>Monitoring credentials:</li> <li>Storage Cell Root password</li> <li>nm2user password of each InfiniBand switch</li> <li>ILOM username and password</li> <li>InfiniBand Switch root credentials: Username and Password</li> </ul> <p>&nbsp;</p> <p>&nbsp;</p> <h4><strong>Install Enterprise Manager Agents on compute nodes</strong></h4> <p>&nbsp;</p> <p>From the <strong>Setup</strong> menu select <strong>Add Target</strong> followed by  <strong>Add Targets Manually</strong></p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e1.png"><img class="aligncenter size-full wp-image-7799" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e1.png" alt="" width="641" height="559" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e1.png 641w, https://gavinsoorma.com/wp-content/uploads/2017/08/e1-300x262.png 300w" sizes="(max-width: 641px) 100vw, 641px" /></a></p> <p>&nbsp;</p> <p>Select option “<strong>Add Host Targets</strong>”</p> <p>Click <strong>Add Host ….</strong></p> <p>&nbsp;</p> <p><img class="aligncenter wp-image-7774" src="https://gavinsoorma.com/wp-content/uploads/2017/08/exa2.jpg" /></p> <p>&nbsp;</p> <p>Click<strong> Add </strong></p> <p>&nbsp;</p> <p><img class="aligncenter wp-image-7774" src="https://gavinsoorma.com/wp-content/uploads/2017/08/exa3.png" /></p> <p>&nbsp;</p> <p>Enter the names of both the compute nodes as well as the directory path location on the compute nodes for installing the 12.1.0.5 Agent software.</p> <p>The agent software base directory is /opt/oraagent</p> <p>Note &#8211; In this example we are adding one compute node at a time, but we can do the agent installation on both the compute nodes in one step.</p> <p>&nbsp;</p> <p><img class="aligncenter wp-image-7774" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e3.png" /></p> <p><img class="aligncenter wp-image-7774" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e4.png" /></p> <p>&nbsp;</p> <p>Provide the credentials of the OS user we are going to use for the agent deployment (<strong>oraagent</strong>)</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/exa6.png"><img class="aligncenter size-full wp-image-7836" src="https://gavinsoorma.com/wp-content/uploads/2017/08/exa6.png" alt="" width="1341" height="403" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/exa6.png 1341w, https://gavinsoorma.com/wp-content/uploads/2017/08/exa6-300x90.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/exa6-768x231.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/exa6-1024x308.png 1024w" sizes="(max-width: 1341px) 100vw, 1341px" /></a></p> <p>Review and click on <strong>Deploy Agent</strong></p> <p>&nbsp;</p> <p><img class="aligncenter wp-image-7774" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e5.png" /></p> <p>&nbsp;</p> <p><img class="aligncenter wp-image-7774" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e6.png" /></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><img class="aligncenter wp-image-7774" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e7.png" /></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><strong>Note</strong>: After the agent deployment is complete, <strong>execute the root.sh</strong> script on each compute node</p> <p>After the agent has been installed and deployed on both compute nodes, we should be able to see both agents up and running as shown below:</p> <p>&nbsp;</p> <p><img class="aligncenter wp-image-7774" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e8.png" /></p> <p>&nbsp;</p> <h4></h4> <h4><strong>Setup SSH equivalence between the cellmonitor user and the agent (oraagent) user</strong></h4> <p>&nbsp;</p> <p>&nbsp;</p> <p>On each of the compute nodes we will run the command <strong>ssh-keygen –t dsa</strong> as the agent user <strong>oraagent  </strong>to generate the agent&#8217;s SSH public key.</p> <p>Then copy that file to each of the Storage Cells and add the contents of  the file id_dsa.pub to the authorized_keys file belonging to the <strong>cellmonitor</strong> user.</p> <p>Basically the oraagent user needs to be able to connect to each of the Storage Cells as the <strong>cellmonitor</strong> user and execute the command “cellcli –e list cell attributes msstatus”.</p> <p>Otherwise after the Exadata Database Machine discovery is completed, in the schematic diagram we will see the Storage Cells displaying with  a red colour down status when actually all the CELLSRV processes are running.<br /> <img class="aligncenter wp-image-7774" src="https://gavinsoorma.com/wp-content/uploads/2017/08/exa15.png" /></p> <p>&nbsp;</p> <p><img class="aligncenter wp-image-7774" src="https://gavinsoorma.com/wp-content/uploads/2017/08/exa16.png" /></p> <p>&nbsp;</p> <p><img class="aligncenter wp-image-7774" src="https://gavinsoorma.com/wp-content/uploads/2017/08/exa17.png" /></p> <p>&nbsp;</p> <p><img class="aligncenter wp-image-7774" src="https://gavinsoorma.com/wp-content/uploads/2017/08/exa18.png" /></p> <p>&nbsp;</p> <p><img class="aligncenter wp-image-7774" src="https://gavinsoorma.com/wp-content/uploads/2017/08/exa19.png" /><br /> Verify if the cellmonitor user can SSH to one of the Storage Cells and no password is being prompted<br /> <img class="aligncenter wp-image-7774" src="https://gavinsoorma.com/wp-content/uploads/2017/08/exa20.png" /></p> <p>&nbsp;</p> <h4></h4> <p>&nbsp;</p> <h4><strong>Discover the Exadata Database Machine </strong></h4> <p><strong> </strong> Select <strong>Add Targets Manually </strong> from the <strong>Setup</strong> and <strong>Add Target</strong> menu</p> <p><strong> </strong><br /> <img class="aligncenter wp-image-7774" src="https://gavinsoorma.com/wp-content/uploads/2017/08/exa21.png" /></p> <p>&nbsp;</p> <p>Select the option “<strong>Add Targets Using Guided Process</strong>” and in the Target Types drop-down list select “<strong>Oracle Exadata Database Machine</strong>”</p> <p>Click on the button <strong>Add Using Guided Process</strong></p> <p>&nbsp;</p> <p><img class="aligncenter wp-image-7774" src="https://gavinsoorma.com/wp-content/uploads/2017/08/exa22.png" /></p> <p>&nbsp;</p> <p>Select the option to <strong>Discover a new Database Machine</strong> and its hardware components and click on <strong>Discover Targets</strong></p> <p>&nbsp;</p> <p><img class="aligncenter wp-image-7774" src="https://gavinsoorma.com/wp-content/uploads/2017/08/exa23.png" /></p> <p>&nbsp;</p> <p>In the Discovery Inputs screen specify the agent that you would want to use for discovery. You can choose any one of the compute nodes but it is recommended to use the first node of the cluster.</p> <p>Provide the credentials for the agent.</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e21.png"><img class="aligncenter size-full wp-image-7840" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e21.png" alt="" width="1238" height="783" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e21.png 1238w, https://gavinsoorma.com/wp-content/uploads/2017/08/e21-300x190.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/e21-768x486.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/e21-1024x648.png 1024w" sizes="(max-width: 1238px) 100vw, 1238px" /></a><br /> <img class="aligncenter wp-image-7774" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e9.png" /></p> <p>&nbsp;</p> <p>Click on <strong>Set Credential </strong>and enter the details of the agent user account on the compute node</p> <p>&nbsp;</p> <p><img class="aligncenter wp-image-7774" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e12.png" /></p> <p>&nbsp;</p> <p>Select the schematic file as <strong>databasemachine.xml</strong> and check the File Location corresponds to the <strong>/opt/oracle.SupportTools/onecommand</strong> directory</p> <p>&nbsp;</p> <p><img class="aligncenter wp-image-7774" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e14.png" /></p> <p>&nbsp;</p> <p>For the Infiniband network discovery, we create a new credential. The credentials of the <strong>nm2user</strong> are used here.</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/exa30.png"><img class="aligncenter size-full wp-image-7750" src="https://gavinsoorma.com/wp-content/uploads/2017/08/exa30.png" alt="" width="1671" height="446" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/exa30.png 1671w, https://gavinsoorma.com/wp-content/uploads/2017/08/exa30-300x80.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/exa30-768x205.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/exa30-1024x273.png 1024w" sizes="(max-width: 1671px) 100vw, 1671px" /></a></p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/exa31.png"><img class="aligncenter size-full wp-image-7841" src="https://gavinsoorma.com/wp-content/uploads/2017/08/exa31.png" alt="" width="1071" height="426" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/exa31.png 1071w, https://gavinsoorma.com/wp-content/uploads/2017/08/exa31-300x119.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/exa31-768x305.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/exa31-1024x407.png 1024w" sizes="(max-width: 1071px) 100vw, 1071px" /></a></p> <p>&nbsp;</p> <p>A prerequisite check is now performed to verify that the <strong>databasemachine.xml</strong> file is present and is readable by the OEM agent.</p> <p>&nbsp;</p> <p><img class="aligncenter wp-image-7774" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e15.png" /></p> <p>&nbsp;</p> <p>Verify the names and IP addresses of the Database Machine components which have been discovered.</p> <p>&nbsp;</p> <p><img class="aligncenter wp-image-7774" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e16.png" /></p> <p>&nbsp;</p> <p>For each of the Database Machine components, a monitoring agent is assigned as well as a backup agent. We can either use the in-built random assignment or manually assign primary monitoring and backup agents for each component.</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><img class="aligncenter wp-image-7774" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e17.png" width="1073" height="832" /></p> <p>&nbsp;</p> <p>We now provide the <strong>credentials of the OEM agents running on each of the compute nodes</strong>. Test the connection as well.</p> <p>&nbsp;</p> <p><img class="aligncenter wp-image-7774" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e18.png" /></p> <p>&nbsp;</p> <p>In the Monitoring Credentials screen, we need to provide the <strong>root p</strong>asswords for the Storage Servers (Cells), <strong>nm2user</strong> for the Infiniband Switches, and the <strong>oemuser </strong>for the ILOMs.</p> <p>&nbsp;</p> <p><img class="aligncenter wp-image-7774" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e19.png" /></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><img class="aligncenter wp-image-7774" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e20.png" width="1319" height="437" /></p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e22.png"><img class="aligncenter wp-image-7843" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e22.png" alt="" width="1236" height="234" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e22.png 1753w, https://gavinsoorma.com/wp-content/uploads/2017/08/e22-300x57.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/e22-768x145.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/e22-1024x194.png 1024w" sizes="(max-width: 1236px) 100vw, 1236px" /></a></p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e23.png"><img class="aligncenter wp-image-7844" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e23.png" alt="" width="1141" height="327" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e23.png 1483w, https://gavinsoorma.com/wp-content/uploads/2017/08/e23-300x86.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/e23-768x220.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/e23-1024x293.png 1024w" sizes="(max-width: 1141px) 100vw, 1141px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>This screen is for the configuration of <strong>SNMP subscriptions</strong> for the OEM agents to receive SNMP traps.</p> <p>For the SNMP Community String provide the value ‘Public’ and provide the root passwords for both the Infiniband Switches.</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e24.png"><img class="aligncenter wp-image-7845" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e24.png" alt="" width="1244" height="460" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e24.png 1824w, https://gavinsoorma.com/wp-content/uploads/2017/08/e24-300x111.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/e24-768x284.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/e24-1024x378.png 1024w" sizes="(max-width: 1244px) 100vw, 1244px" /></a></p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e25.png"><img class="aligncenter wp-image-7846" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e25.png" alt="" width="1267" height="464" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e25.png 1838w, https://gavinsoorma.com/wp-content/uploads/2017/08/e25-300x110.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/e25-768x281.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/e25-1024x375.png 1024w" sizes="(max-width: 1267px) 100vw, 1267px" /></a></p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e27.png"><img class="aligncenter wp-image-7848" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e27.png" alt="" width="5" height="2" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e27.png 1491w, https://gavinsoorma.com/wp-content/uploads/2017/08/e27-300x124.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/e27-768x318.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/e27-1024x424.png 1024w, https://gavinsoorma.com/wp-content/uploads/2017/08/e27-460x275.png 460w, https://gavinsoorma.com/wp-content/uploads/2017/08/e27-940x470.png 940w, https://gavinsoorma.com/wp-content/uploads/2017/08/e27-825x340.png 825w, https://gavinsoorma.com/wp-content/uploads/2017/08/e27-440x195.png 440w, https://gavinsoorma.com/wp-content/uploads/2017/08/e27-355x235.png 355w, https://gavinsoorma.com/wp-content/uploads/2017/08/e27-400x270.png 400w, https://gavinsoorma.com/wp-content/uploads/2017/08/e27-500x340.png 500w" sizes="(max-width: 5px) 100vw, 5px" /></a></p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e26.png"><img class="aligncenter wp-image-7847" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e26.png" alt="" width="1257" height="433" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e26.png 1846w, https://gavinsoorma.com/wp-content/uploads/2017/08/e26-300x103.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/e26-768x265.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/e26-1024x353.png 1024w" sizes="(max-width: 1257px) 100vw, 1257px" /></a></p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e27.png"><img class="aligncenter wp-image-7848" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e27.png" alt="" width="1215" height="504" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e27.png 1491w, https://gavinsoorma.com/wp-content/uploads/2017/08/e27-300x124.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/e27-768x318.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/e27-1024x424.png 1024w" sizes="(max-width: 1215px) 100vw, 1215px" /></a></p> <p>&nbsp;</p> <p>Review and then click on <strong>Submit.</strong></p> <p>Then review the summary of the Target Creation .</p> <p>Ensure each component has a successful Discovery Status.</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e28.png"><img class="aligncenter size-full wp-image-7849" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e28.png" alt="" width="1176" height="706" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e28.png 1176w, https://gavinsoorma.com/wp-content/uploads/2017/08/e28-300x180.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/e28-768x461.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/e28-1024x615.png 1024w, https://gavinsoorma.com/wp-content/uploads/2017/08/e28-460x275.png 460w" sizes="(max-width: 1176px) 100vw, 1176px" /></a> <a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e29.png"><img class="aligncenter wp-image-7850" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e29.png" alt="" width="1181" height="485" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e29.png 1337w, https://gavinsoorma.com/wp-content/uploads/2017/08/e29-300x123.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/e29-768x315.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/e29-1024x420.png 1024w, https://gavinsoorma.com/wp-content/uploads/2017/08/e29-825x340.png 825w" sizes="(max-width: 1181px) 100vw, 1181px" /></a></p> <p>&nbsp;</p> <p>After the Database Machine discovery is complete, we will see a new menu option called “Exadata” added to the Targets menu in OEM 12c Cloud Control</p> <p>Launch <strong>DB Machine Home</strong></p> <p>Click on the Exadata target and that will take us to the Oracle Exadata Schematic page</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e30.png"><img class="aligncenter size-full wp-image-7851" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e30.png" alt="" width="1869" height="916" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e30.png 1869w, https://gavinsoorma.com/wp-content/uploads/2017/08/e30-300x147.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/e30-768x376.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/e30-1024x502.png 1024w" sizes="(max-width: 1869px) 100vw, 1869px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <h4><strong>Post-Discovery Configuration and Verification</strong></h4> <p>&nbsp;</p> <ul> <li><strong>Set Up SNMP Trap Forwarding on Compute Node</strong></li> </ul> <p><strong> </strong></p> <p>We need to set up  SNMP trap forwarding on the compute node where the Enterprise Manager Agent is running so that the snmptrapd daemon can receive traps using port <strong>162 </strong>and forward the trap to the port the OEM agent is listening on.</p> <p>In this case we have verified from the emd.properties (property EMD_URL) file located in the $AGENT_INST/sysman/config directory that the value of the port is 3872</p> <p>Confirm that the agent receivelet is listening on this port over UDP</p> <p>Then stop the SNMP trap daemon (in this case it is already stoped – otherwise issue command service snmptrapd stop)</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e31.png"><img class="aligncenter wp-image-7852" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e31.png" alt="" width="639" height="310" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e31.png 699w, https://gavinsoorma.com/wp-content/uploads/2017/08/e31-300x145.png 300w" sizes="(max-width: 639px) 100vw, 639px" /></a></p> <p>&nbsp;</p> <p>Add the following entry to the <strong>/etc/snmp/snmptrapd.conf</strong> configuration file:</p> <p>&nbsp;</p> <p>authcommunity log,execute,net &lt;community string&gt;</p> <p>forward default udp:localhost:3872</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e32.png"><img class="aligncenter size-full wp-image-7853" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e32.png" alt="" width="877" height="238" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e32.png 877w, https://gavinsoorma.com/wp-content/uploads/2017/08/e32-300x81.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/e32-768x208.png 768w" sizes="(max-width: 877px) 100vw, 877px" /></a></p> <p>&nbsp;</p> <p><strong>Note:</strong> Do this on both compute nodes</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e33.png"><img class="aligncenter wp-image-7855" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e33.png" alt="" width="754" height="193" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e33.png 660w, https://gavinsoorma.com/wp-content/uploads/2017/08/e33-300x77.png 300w" sizes="(max-width: 754px) 100vw, 754px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>Edit the <strong>/etc/hosts.allow</strong> file to add the following line:</p> <p>snmptrapd : ALL</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e34.png"><img class="aligncenter wp-image-7856" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e34.png" alt="" width="721" height="191" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e34.png 577w, https://gavinsoorma.com/wp-content/uploads/2017/08/e34-300x80.png 300w" sizes="(max-width: 721px) 100vw, 721px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>Start the SNMP trap daemon and ensure via chkconfig command that the daemon will start on a node reboot</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e35.png"><img class="aligncenter wp-image-7857" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e35.png" alt="" width="840" height="45" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e35.png 579w, https://gavinsoorma.com/wp-content/uploads/2017/08/e35-300x16.png 300w" sizes="(max-width: 840px) 100vw, 840px" /></a></p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e36.png"><img class="aligncenter wp-image-7858" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e36.png" alt="" width="826" height="47" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e36.png 615w, https://gavinsoorma.com/wp-content/uploads/2017/08/e36-300x17.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/e36-600x35.png 600w" sizes="(max-width: 826px) 100vw, 826px" /></a></p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e37.png"><img class="aligncenter wp-image-7859" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e37.png" alt="" width="797" height="47" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e37.png 610w, https://gavinsoorma.com/wp-content/uploads/2017/08/e37-300x18.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/e37-600x36.png 600w" sizes="(max-width: 797px) 100vw, 797px" /></a></p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e38.png"><img class="aligncenter wp-image-7860" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e38.png" alt="" width="866" height="82" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e38.png 665w, https://gavinsoorma.com/wp-content/uploads/2017/08/e38-300x28.png 300w" sizes="(max-width: 866px) 100vw, 866px" /></a></p> <p>&nbsp;</p> <ul> <li><strong>Verify SNMP Configuration for Storage Cells </strong></li> </ul> <p>&nbsp;</p> <p>For Exadata plug-in Release 12.1.0.2.0 and later, SNMP trap setup for Exadata Storage Cells is done automatically during the discovery process</p> <p>&nbsp;</p> <p><strong>Verify</strong></p> <p>&nbsp;</p> <p>[root@exdb1celadm01 ~]# <strong>cellcli -e list cell attributes snmpSubscriber</strong></p> <p>((host=exdb1dbadm02.rac.com.au,port=1830,community=public),(host=exdb1dbadm01.rac.com.au,port=1830,community=public),(host=exdb1db01.rac.com.au,port=3872,community=public),(host=exdb1db02.rac.com.au,port=3872,community=public),(host=61.88.37.93,port=162,community=public,type=ASR))</p> <p>[root@exdb1celadm01 ~]# <strong>cellcli -e list cell attributes notificationMethod</strong></p> <p>mail,snmp</p> <p>[root@exdb1celadm01 ~]#<strong> cellcli -e list cell attributes notificationPolicy</strong></p> <p>critical,warning,clear</p> <p>&nbsp;</p> <ul> <li><strong>Configure and Verify SNMP for InfiniBand Switch Targets</strong></li> </ul> <p><strong> </strong></p> <p>For Exadata plug-in Release 12.1.0.2.0 and later during the discovery process, we provide the necessary root credentials to set up SNMP trap for the InfiniBand Switch.</p> <p>SNMP trap setup for Infiniband Switches is done automatically during the discovery process.</p> <p>We can verify this by connecting via ILOM web interface to the Infiniband Switch.</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e39.png"><img class="aligncenter wp-image-7861" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e39.png" alt="" width="787" height="493" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e39.png 731w, https://gavinsoorma.com/wp-content/uploads/2017/08/e39-300x188.png 300w" sizes="(max-width: 787px) 100vw, 787px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e40.png"><img class="aligncenter wp-image-7862" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e40.png" alt="" width="817" height="495" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e40.png 718w, https://gavinsoorma.com/wp-content/uploads/2017/08/e40-300x182.png 300w" sizes="(max-width: 817px) 100vw, 817px" /></a></p> <p>&nbsp;</p> <p>Click <strong>Configuration</strong>, then <strong>System Management Access</strong>, and finally <strong>SNMP</strong></p> <p><strong><br /> </strong></p> <p>Ensure the following values are set:</p> <p>&nbsp;</p> <p>State=Enabled</p> <p>Port=161</p> <p>Protocols=v1,v2c,v3</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e41.png"><img class="aligncenter size-full wp-image-7863" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e41.png" alt="" width="1131" height="788" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e41.png 1131w, https://gavinsoorma.com/wp-content/uploads/2017/08/e41-300x209.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/e41-768x535.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/e41-1024x713.png 1024w" sizes="(max-width: 1131px) 100vw, 1131px" /></a></p> <p>&nbsp;</p> <p>Verify the InfiniBand Switch SNMP configuration for Enterprise Manager monitoring</p> <p>From one of the compute nodes execute the command:</p> <p>snmpget -v 1 -c public exdb1sw-iba01 1.3.6.1.4.1.42.2.70.101.1.1.9.1.1.5</p> <p>&nbsp;</p> <p>[root@exdb1db01 onecommand]# <strong>snmpget -v 1 -c public exdb1sw-iba01 1.3.6.1.4.1.42.2.70.101.1.1.9.1.1.5</strong></p> <p>SNMPv2-SMI::enterprises.42.2.70.101.1.1.9.1.1.5 = INTEGER: 1</p> <p>&nbsp;</p> <p>Note: We should not get a Timeout message. If so, it means that the SNMP configuration for OEM monitoring is not complete.</p> <p>&nbsp;</p> <h4><strong>Create Exadata Database Machine Dashboard</strong></h4> <p>&nbsp;</p> <p>We create the Database Machine dashboard to give us a single pane-of-glass view of the performance and usage metrics of the Exadata Database Machine system as well as its components.</p> <p>&nbsp;</p> <p>Navigate to “<strong>Enterprise</strong>” -&gt; “<strong>Job</strong>” -&gt; “<strong>Activity</strong>”</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e42.png"><img class="aligncenter size-full wp-image-7864" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e42.png" alt="" width="1530" height="464" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e42.png 1530w, https://gavinsoorma.com/wp-content/uploads/2017/08/e42-300x91.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/e42-768x233.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/e42-1024x311.png 1024w" sizes="(max-width: 1530px) 100vw, 1530px" /></a></p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e43.png"><img class="aligncenter size-full wp-image-7865" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e43.png" alt="" width="1099" height="672" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e43.png 1099w, https://gavinsoorma.com/wp-content/uploads/2017/08/e43-300x183.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/e43-768x470.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/e43-1024x626.png 1024w" sizes="(max-width: 1099px) 100vw, 1099px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e44.png"><img class="aligncenter size-full wp-image-7866" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e44.png" alt="" width="1755" height="464" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e44.png 1755w, https://gavinsoorma.com/wp-content/uploads/2017/08/e44-300x79.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/e44-768x203.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/e44-1024x271.png 1024w" sizes="(max-width: 1755px) 100vw, 1755px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e45.png"><img class="aligncenter size-full wp-image-7867" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e45.png" alt="" width="1848" height="339" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e45.png 1848w, https://gavinsoorma.com/wp-content/uploads/2017/08/e45-300x55.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/e45-768x141.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/e45-1024x188.png 1024w" sizes="(max-width: 1848px) 100vw, 1848px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e46.png"><img class="aligncenter wp-image-7868" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e46.png" alt="" width="915" height="444" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e46.png 699w, https://gavinsoorma.com/wp-content/uploads/2017/08/e46-300x145.png 300w" sizes="(max-width: 915px) 100vw, 915px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e47.png"><img class="aligncenter wp-image-7869" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e47.png" alt="" width="1283" height="356" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e47.png 1222w, https://gavinsoorma.com/wp-content/uploads/2017/08/e47-300x83.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/e47-768x213.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/e47-1024x284.png 1024w" sizes="(max-width: 1283px) 100vw, 1283px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/08/e50.png"><img class="aligncenter size-full wp-image-7871" src="https://gavinsoorma.com/wp-content/uploads/2017/08/e50.png" alt="" width="1473" height="594" srcset="https://gavinsoorma.com/wp-content/uploads/2017/08/e50.png 1473w, https://gavinsoorma.com/wp-content/uploads/2017/08/e50-300x121.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/08/e50-768x310.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/08/e50-1024x413.png 1024w" sizes="(max-width: 1473px) 100vw, 1473px" /></a></p> Gavin Soorma https://gavinsoorma.com/?p=7789 Thu Aug 24 2017 21:23:29 GMT-0400 (EDT) How to Use the New R ODBC Package to Connect to an Oracle Database https://blog.redpillanalytics.com/how-to-use-the-new-r-odbc-package-to-connect-to-an-oracle-database-70ce6783e397?source=rss----abcc62a8d63e---4 <figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*wIBpQULM-GZqCJSHRP6WrQ.jpeg" /></figure><p>Last month a new R package was released called ODBC to improve the ability to connect to relational databases. By using these universal connection packages such as DBI and ODBC, you’ll be able to easily port your code to different databases. If you currently use RODBC to connect to Oracle, you’ll like ODBC more! ODBC is a completely rewritten package from RODBC. The creators state that it’s been well tested on SQL Server, PostgreSQL and MySQL. I found some issues with using it against an Oracle source but not enough to keep me from using it.</p><p>The benefit of using this ODBC connection is that you can now push R commands and processing to the database instead of running in your R instance. When working with large datasets, this will speed up the amount of time your R code takes to run by using database server resources instead of your own machine or R server.</p><p><strong>Connecting to the Oracle Database</strong></p><p>To start, you’ll need an Oracle ODBC connection setup on your computer. That requires an Oracle client on your machine to be able to set it up. I’m not going to walk through setting this up but you can find some help <a href="http://www.oracle.com/technetwork/database/windows/index-098976.html">here</a>.</p><p>The ODBC package uses the DBI package to connect to the database. DBI is a common interface between R and DBMS systems and has also recently been updated. You’ll need to install both the DBI and the ODBC packages and load them into your environment.</p><pre>install.packages(&quot;DBI&quot;)<br>install.packages(&quot;ODBC&quot;)<br>library(DBI)<br>library(odbc)</pre><p>Next we’ll setup a connection in R to the ODBC data source. My ODBC data source name is oracledb as you’ll see below. Note if you are not using RStudio, you’ll need to find another secure method for storing your password. If you are using RStudio, install the rstudioapi package to be able to use a prompt for the database password when connecting. It’s also possible to use the keyring or config packages to pull from your operating system’s stored passwords.</p><pre>con &lt;- dbConnect(odbc::odbc(), &quot;oracledb&quot;, UID=&quot;samples&quot;, PWD= rstudioapi::askForPassword(&quot;Samples User Password&quot;))</pre><p>The connection to the Oracle database is giving me an error about a feature not being implemented but I’m still able to query it successfully so I just ignore this message.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*GGXIEuTHjZmUyNL3SlohQA.png" /></figure><p>Once connected, you can use DBI methods to read tables or show the tables available:</p><pre>#Show all tables this user can view in this schema<br>dbListTables(con, schema = &quot;SAMPLES&quot;)</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/372/1*J1usjHj939U-ageSZD9uEw.png" /></figure><p>If you get a response of character(0) when you try to list the tables, check the case of the schema you entered. If I use lower case for SAMPLES in the code above, I’ll get no tables returned and character(0) instead.</p><p><strong>DPLYR Improvements with ODBC</strong></p><p>When you use an ODBC source with DPLYR &amp; DBPLYR methods, R will translate your R code to SQL and run against the database without pulling the data into your R environment. This is awesome because when you are working in R it is typically with large datasets that are difficult to use on your local machine or R instance.</p><p>Using that connection that we created earlier called “con”, we’ll first create a reference to our ORDERS table in the Oracle database.</p><pre>db_orders &lt;- tbl(con, &quot;ORDERS&quot;)</pre><p>We can view the first six rows of this table with head and then just to prove it’s running in the database, we can view the SQL created with the show_query method. You’ll notice that the SQL created is specific Oracle syntax. If you run this against postgres or SQL Server or others, it’ll be specific to those databases.</p><pre>head(db_orders)<br>show_query(head(db_orders))</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/767/1*xOWdAZTWqtYc_ljOLrwyqQ.png" /></figure><p>We can use the DBPLYR package to put together SQL syntax for querying. While the commands are not identical to SQL, they are fairly logical and easily translate.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/451/1*VoZrjyq0v8K3zthbIGXLFA.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/749/1*5rI_UO198W_PpdZRWFrsEQ.png" /></figure><p>We can aggregate and use grouping and ordering also:</p><pre>show_query(db_orders %&gt;% group_by(WEBSITE) %&gt;% summarize(order_count = count()) %&gt;% arrange(WEBSITE))</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/845/1*btt5dQOPlDecm4A0S-ACOA.png" /></figure><p>You can check the SQL of this statement to evaluate the quality of the SQL that R is building. There’s two ways we can do this. We can paste our R DBPLYR code into a show_query method. Or, we can save our pre-built code into a variable that we can reference with show_query.</p><pre>show_query(db_orders %&gt;% group_by(WEBSITE) %&gt;% summarize(order_count = count()) %&gt;% arrange(WEBSITE))</pre><pre>order_count_by_site &lt;- db_orders %&gt;% group_by(WEBSITE) %&gt;% summarize(order_count = count()) %&gt;% arrange(WEBSITE)</pre><pre>order_count_by_site %&gt;% show_query()</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/409/1*OHv4lsxnHELFcRcfCe7plQ.png" /></figure><p>It’s possible to use the SQL that R is creating to extract a dataset from the database and store in your R environment using the collect method. Keep in mind that this could take a while if the dataset is large.</p><pre>order_count_site_download &lt;- order_count_by_site %&gt;% collect()</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/477/1*-cX0TZsAbzbdCd3lPXU5oA.png" /><figcaption>A view of order_count_site_download from the Environment tab in RStudio</figcaption></figure><p>The data transfer can also work the other way and upload data into the Oracle database using the copy_to method. Below I’m referencing my R data frame called order_count_site_download and asking it to create a new table in the database called ORDER_COUNT_AGG with the data in the data frame.</p><pre>copy_to(con, order_count_site_download, &quot;ORDER_COUNT_AGG&quot;,<br> temporary = FALSE, <br> indexes = list(WEBSITE)<br>)</pre><p>The copy_to method is also able to create indexes on the table. However, I found that the Oracle implementation of this table creation throws an error when the method tries to analyze the table. In my environment the table was created with the data in it but the table does not have statistics gathered or indexes.</p><pre>copy_to(con, order_count_site_download, &quot;ORDER_COUNT_AGG&quot;,<br> temporary = FALSE, <br> indexes = list(WEBSITE)<br>)</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/808/1*CiouruOKpOC1l3pI_En_9Q.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/789/1*BasZroGAd8NTmtCkom1qdA.png" /><figcaption>View of ORDER_COUNT_AGG from SQL Developer after running copy_to in RStudio</figcaption></figure><p>We can view this new table in R using the DBI method dbReadTable.</p><pre>dbReadTable(con, &quot;ORDER_COUNT_AGG&quot;)</pre><p>There are more packages and methods which can leverage this ODBC connection so that you can run R code in the database. This is only the beginning!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=70ce6783e397" width="1" height="1"><hr><p><a href="https://blog.redpillanalytics.com/how-to-use-the-new-r-odbc-package-to-connect-to-an-oracle-database-70ce6783e397">How to Use the New R ODBC Package to Connect to an Oracle Database</a> was originally published in <a href="https://blog.redpillanalytics.com">Red Pill Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p> Michelle Kolbe https://medium.com/p/70ce6783e397 Thu Aug 24 2017 14:24:44 GMT-0400 (EDT) How to Use the New R ODBC Package to Connect to an Oracle Database http://redpillanalytics.com/how-to-use-the-new-r-odbc-package-to-connect-to-an-oracle-database/ <p><img width="300" height="200" src="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/08/000648-0022-000069.jpg?fit=300%2C200" class="attachment-medium size-medium wp-post-image" alt="Data Pipeline" srcset="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/08/000648-0022-000069.jpg?w=1920 1920w, https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/08/000648-0022-000069.jpg?resize=300%2C200 300w, https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/08/000648-0022-000069.jpg?resize=768%2C512 768w, https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/08/000648-0022-000069.jpg?resize=1024%2C682 1024w" sizes="(max-width: 300px) 100vw, 300px" data-attachment-id="5386" data-permalink="http://redpillanalytics.com/how-to-use-the-new-r-odbc-package-to-connect-to-an-oracle-database/abstract-digital-technology-illustration-with-tunnel-and-lights/" data-orig-file="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/08/000648-0022-000069.jpg?fit=1920%2C1279" data-orig-size="1920,1279" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;5&quot;,&quot;credit&quot;:&quot;Eugene Sergeev&quot;,&quot;camera&quot;:&quot;Canon EOS 5D Mark II&quot;,&quot;caption&quot;:&quot;Abstract digital technology illustration with red tunnel and blue lights&quot;,&quot;created_timestamp&quot;:&quot;1392564274&quot;,&quot;copyright&quot;:&quot;Copyright: Eugene Sergeev&quot;,&quot;focal_length&quot;:&quot;24&quot;,&quot;iso&quot;:&quot;800&quot;,&quot;shutter_speed&quot;:&quot;0.166666666667&quot;,&quot;title&quot;:&quot;Abstract digital technology illustration with tunnel and lights&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="Data Pipeline" data-image-description="" data-medium-file="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/08/000648-0022-000069.jpg?fit=300%2C200" data-large-file="https://i2.wp.com/redpillanalytics.com/wp-content/uploads/2017/08/000648-0022-000069.jpg?fit=1024%2C682" /></p><p class="graf graf--p">Last month a new R package was released called ODBC to improve the ability to connect to relational databases. By using these universal connection packages such as DBI and ODBC, you’ll be able to easily port your code to different databases. If you currently use RODBC to connect to Oracle, you’ll like ODBC more! ODBC is a completely rewritten package from RODBC. The creators state that it’s been well tested on SQL Server, PostgreSQL and MySQL. I found some issues with using it against an Oracle source but not enough to keep me from using it.</p> <p class="graf graf--p">The benefit of using this ODBC connection is that you can now push R commands and processing to the database instead of running in your R instance. When working with large datasets, this will speed up the amount of time your R code takes to run by using database server resources instead of your own machine or R server.</p> <p class="graf graf--p"><strong class="markup--strong markup--p-strong">Connecting to the Oracle Database</strong></p> <p class="graf graf--p">To start, you’ll need an Oracle ODBC connection setup on your computer. That requires an Oracle client on your machine to be able to set it up. I’m not going to walk through setting this up but you can find some help <a class="markup--anchor markup--p-anchor" href="http://www.oracle.com/technetwork/database/windows/index-098976.html" target="_blank" rel="noopener" data-href="http://www.oracle.com/technetwork/database/windows/index-098976.html">here</a>.</p> <p class="graf graf--p">The ODBC package uses the DBI package to connect to the database. DBI is a common interface between R and DBMS systems and has also recently been updated. You’ll need to install both the DBI and the ODBC packages and load them into your environment.</p> <pre class="graf graf--pre">install.packages("DBI") install.packages("ODBC") library(DBI) library(odbc)</pre> <p class="graf graf--p">Next we’ll setup a connection in R to the ODBC data source. My ODBC data source name is oracledb as you’ll see below. Note if you are not using RStudio, you’ll need to find another secure method for storing your password. If you are using RStudio, install the rstudioapi package to be able to use a prompt for the database password when connecting. It’s also possible to use the keyring or config packages to pull from your operating system’s stored passwords.</p> <pre class="graf graf--pre">con &lt;- dbConnect(odbc::odbc(), "oracledb", UID="samples", PWD= rstudioapi::askForPassword("Samples User Password"))</pre> <p class="graf graf--p">The connection to the Oracle database is giving me an error about a feature not being implemented but I’m still able to query it successfully so I just ignore this message.</p> <figure class="graf graf--figure"><img class="graf-image" src="https://i2.wp.com/cdn-images-1.medium.com/max/1600/1*GGXIEuTHjZmUyNL3SlohQA.png?resize=1075%2C82&#038;ssl=1" data-image-id="1*GGXIEuTHjZmUyNL3SlohQA.png" data-width="1075" data-height="82" data-recalc-dims="1" /></figure> <p class="graf graf--p">Once connected, you can use DBI methods to read tables or show the tables available:</p> <pre class="graf graf--pre">#Show all tables this user can view in this schema dbListTables(con, schema = "SAMPLES")</pre> <figure class="graf graf--figure"><img class="graf-image" src="https://i1.wp.com/cdn-images-1.medium.com/max/1600/1*J1usjHj939U-ageSZD9uEw.png?resize=372%2C36&#038;ssl=1" data-image-id="1*J1usjHj939U-ageSZD9uEw.png" data-width="372" data-height="36" data-recalc-dims="1" /></figure> <p class="graf graf--p">If you get a response of character(0) when you try to list the tables, check the case of the schema you entered. If I use lower case for SAMPLES in the code above, I’ll get no tables returned and character(0) instead.</p> <p class="graf graf--p"><strong class="markup--strong markup--p-strong">DPLYR Improvements with ODBC</strong></p> <p class="graf graf--p">When you use an ODBC source with DPLYR &amp; DBPLYR methods, R will translate your R code to SQL and run against the database without pulling the data into your R environment. This is awesome because when you are working in R it is typically with large datasets that are difficult to use on your local machine or R instance.</p> <p class="graf graf--p">Using that connection that we created earlier called “con”, we’ll first create a reference to our ORDERS table in the Oracle database.</p> <pre class="graf graf--pre">db_orders &lt;- tbl(con, "ORDERS")</pre> <p class="graf graf--p">We can view the first six rows of this table with head and then just to prove it’s running in the database, we can view the SQL created with the show_query method. You’ll notice that the SQL created is specific Oracle syntax. If you run this against postgres or SQL Server or others, it’ll be specific to those databases.</p> <pre class="graf graf--pre">head(db_orders) show_query(head(db_orders))</pre> <figure class="graf graf--figure"><img class="graf-image" src="https://i1.wp.com/cdn-images-1.medium.com/max/1600/1*xOWdAZTWqtYc_ljOLrwyqQ.png?resize=767%2C288&#038;ssl=1" data-image-id="1*xOWdAZTWqtYc_ljOLrwyqQ.png" data-width="767" data-height="288" data-recalc-dims="1" /></figure> <p class="graf graf--p">We can use the DBPLYR package to put together SQL syntax for querying. While the commands are not identical to SQL, they are fairly logical and easily translate.</p> <figure class="graf graf--figure"><img class="graf-image" src="https://i1.wp.com/cdn-images-1.medium.com/max/1600/1*VoZrjyq0v8K3zthbIGXLFA.png?resize=451%2C292&#038;ssl=1" data-image-id="1*VoZrjyq0v8K3zthbIGXLFA.png" data-width="451" data-height="292" data-recalc-dims="1" /></figure> <figure class="graf graf--figure"><img class="graf-image" src="https://i1.wp.com/cdn-images-1.medium.com/max/1600/1*5rI_UO198W_PpdZRWFrsEQ.png?resize=749%2C296&#038;ssl=1" data-image-id="1*5rI_UO198W_PpdZRWFrsEQ.png" data-width="749" data-height="296" data-recalc-dims="1" /></figure> <p class="graf graf--p">We can aggregate and use grouping and ordering also:</p> <pre class="graf graf--pre">show_query(db_orders %&gt;% group_by(WEBSITE) %&gt;% summarize(order_count = count()) %&gt;% arrange(WEBSITE))</pre> <figure class="graf graf--figure"><img class="graf-image" src="https://i0.wp.com/cdn-images-1.medium.com/max/1600/1*btt5dQOPlDecm4A0S-ACOA.png?resize=845%2C307&#038;ssl=1" data-image-id="1*btt5dQOPlDecm4A0S-ACOA.png" data-width="845" data-height="307" data-recalc-dims="1" /></figure> <p class="graf graf--p">You can check the SQL of this statement to evaluate the quality of the SQL that R is building. There’s two ways we can do this. We can paste our R DBPLYR code into a show_query method. Or, we can save our pre-built code into a variable that we can reference with show_query.</p> <pre class="graf graf--pre">show_query(db_orders %&gt;% group_by(WEBSITE) %&gt;% summarize(order_count = count()) %&gt;% arrange(WEBSITE))</pre> <pre class="graf graf--pre">order_count_by_site &lt;- db_orders %&gt;% group_by(WEBSITE) %&gt;% summarize(order_count = count()) %&gt;% arrange(WEBSITE)</pre> <pre class="graf graf--pre">order_count_by_site %&gt;% show_query()</pre> <figure class="graf graf--figure"><img class="graf-image" src="https://i1.wp.com/cdn-images-1.medium.com/max/1600/1*OHv4lsxnHELFcRcfCe7plQ.png?resize=409%2C113&#038;ssl=1" data-image-id="1*OHv4lsxnHELFcRcfCe7plQ.png" data-width="409" data-height="113" data-recalc-dims="1" /></figure> <p class="graf graf--p">It’s possible to use the SQL that R is creating to extract a dataset from the database and store in your R environment using the collect method. Keep in mind that this could take a while if the dataset is large.</p> <pre class="graf graf--pre">order_count_site_download &lt;- order_count_by_site %&gt;% collect()</pre> <figure class="graf graf--figure"><img class="graf-image" src="https://i0.wp.com/cdn-images-1.medium.com/max/1600/1*-cX0TZsAbzbdCd3lPXU5oA.png?resize=477%2C65&#038;ssl=1" data-image-id="1*-cX0TZsAbzbdCd3lPXU5oA.png" data-width="477" data-height="65" data-recalc-dims="1" /><figcaption class="imageCaption">A view of order_count_site_download from the Environment tab in RStudio</figcaption></figure> <p class="graf graf--p">The data transfer can also work the other way and upload data into the Oracle database using the copy_to method. Below I’m referencing my R data frame called order_count_site_download and asking it to create a new table in the database called ORDER_COUNT_AGG with the data in the data frame.</p> <pre class="graf graf--pre">copy_to(con, order_count_site_download, "ORDER_COUNT_AGG", temporary = FALSE, indexes = list(WEBSITE) )</pre> <p class="graf graf--p">The copy_to method is also able to create indexes on the table. However, I found that the Oracle implementation of this table creation throws an error when the method tries to analyze the table. In my environment the table was created with the data in it but the table does not have statistics gathered or indexes.</p> <pre class="graf graf--pre">copy_to(con, order_count_site_download, "ORDER_COUNT_AGG", temporary = FALSE, indexes = list(WEBSITE) )</pre> <figure class="graf graf--figure"><img class="graf-image" src="https://i2.wp.com/cdn-images-1.medium.com/max/1600/1*CiouruOKpOC1l3pI_En_9Q.png?resize=808%2C122&#038;ssl=1" data-image-id="1*CiouruOKpOC1l3pI_En_9Q.png" data-width="808" data-height="122" data-recalc-dims="1" /></figure> <figure class="graf graf--figure"><img class="graf-image" src="https://i2.wp.com/cdn-images-1.medium.com/max/1600/1*BasZroGAd8NTmtCkom1qdA.png?resize=789%2C184&#038;ssl=1" data-image-id="1*BasZroGAd8NTmtCkom1qdA.png" data-width="789" data-height="184" data-recalc-dims="1" /><figcaption class="imageCaption">View of ORDER_COUNT_AGG from SQL Developer after running copy_to in RStudio</figcaption></figure> <p class="graf graf--p">We can view this new table in R using the DBI method dbReadTable.</p> <pre class="graf graf--pre">dbReadTable(con, "ORDER_COUNT_AGG")</pre> <p class="graf graf--p">There are more packages and methods which can leverage this ODBC connection so that you can run R code in the database. This is only the beginning!</p> Michelle Kolbe http://redpillanalytics.com/?p=5379 Thu Aug 24 2017 14:24:40 GMT-0400 (EDT) A Taxonomy of Oracle EPM (Hyperion) On-Premise and Cloud Products http://blog.performancearchitects.com/wp/2017/08/22/a-taxonomy-of-oracle-epm-hyperion-on-premise-and-cloud-products/ <p>Author: Kirby Lunger, Performance Architects</p> <p>For many years, Oracle has been the leader in the enterprise performance management (EPM) (also called corporate performance management or CPM if you follow <a href="http://www.gartner.com/it-glossary/cpm-suites">Gartner</a>) arena with a suite of products called “Oracle EPM.”  These products started on-premise, and Oracle has very quickly migrated this functionality to the cloud since the release of its first EPM cloud product back in February 2014.</p> <p>For those of us who have been in this area for a while, the rapid product evolution can be confusing…so this blog post attempts to clarify the state of the world right now in terms of what Oracle is offering in on-premise and in the cloud (as software-as-a-service or SaaS solutions).</p> <p><strong>Oracle EPM History</strong></p> <p>These products have a storied history, having started back in the 1990s as Arbor Software (which marketed Essbase, the database that still powers most of the Oracle EPM solutions today) and Hyperion Software, which merged with Arbor Software to become Hyperion Solutions.  Oracle eventually acquired Hyperion in the mid-2000s. As a result, many of the on-premise Oracle EPM applications have “Hyperion” in the title.</p> <p><strong>Oracle EPM On-Premise Solutions </strong></p> <p>This chart from Oracle demonstrates a variation of the four functional focus areas of the Oracle EPM (Hyperion) product suite (as many of you know who’ve been in this area for a while, there are several variations of this chart floating around, so please consider this “representative”):</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/kirby1-2.png"><img class="alignnone size-medium wp-image-2122" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/kirby1-2-300x169.png" alt="" width="300" height="169" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/kirby1-2-300x169.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/kirby1-2-768x433.png 768w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/kirby1-2-624x352.png 624w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/kirby1-2.png 839w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Oracle’s major EPM on-premise product offerings map to these functional areas in the following way:</p> <ul> <li>Planning and Forecasting (also often referred to as “Planning, Budgeting and Forecasting”) <ul> <li>Oracle Hyperion Planning (Planning)</li> <li>Oracle Hyperion Public Sector Planning and Budgeting (PSPB)</li> <li>Oracle Hyperion Strategic Finance (HSF)</li> <li>Oracle Hyperion Workforce Planning (Workforce Planning)</li> <li>Oracle Hyperion Capital Asset Planning (Capital Planning or CapEx Planning)</li> <li>Oracle Hyperion Project Financial Planning (PFP or Project Financial Planning)</li> </ul> </li> </ul> <ul> <li>Strategy Management (note this often gets merged into the “Planning” category above) <ul> <li>Oracle Hyperion Strategic Finance (HSF)</li> </ul> </li> </ul> <ul> <li>Financial Close and Reporting (also often referred to as “Financial Close and Consolidation”) <ul> <li>Oracle Hyperion Financial Management (HFM)</li> <li>Oracle Hyperion Financial Close Management (FCM)</li> <li>Oracle Hyperion Disclosure Management (Disclosure Management)</li> <li>Oracle Hyperion Tax Provision (Tax Provision)</li> </ul> </li> </ul> <ul> <li>Profitability Management <ul> <li>Oracle Hyperion Profitability and Cost Management (HPCM)</li> </ul> </li> </ul> <p>There are also “horizontal” capabilities that map across these product categories that are also offered as either products or “named” functionality within products that are useful to know about; these include:</p> <ul> <li>Reporting and Analysis <ul> <li>Oracle Hyperion Financial Reporting (FR)</li> <li>Oracle Hyperion Interactive Reporting (BRIO)</li> <li>Oracle Hyperion SQR Production Reporting</li> <li>Oracle Hyperion Web Analysis (Web Analysis)</li> <li>Oracle Hyperion Smart View for Office (SmartView or Smart View)</li> </ul> </li> </ul> <ul> <li>Data Management and Integration <ul> <li>Oracle Data Relationship Management (DRM)</li> <li>Oracle Hyperion Financial Data Quality Management Enterprise Edition (FDMEE)</li> <li>Oracle Data Relationship Governance (DRG)</li> <li>Oracle Data Integrator (ODI)</li> <li>Oracle GoldenGate (Golden Gate)</li> <li>Oracle Reports Services</li> <li>Oracle Business Activity Monitoring (BAM)</li> </ul> </li> </ul> <p><strong>Oracle SaaS/Cloud Solutions</strong></p> <p><strong> </strong>Oracle’s EPM (Hyperion) software-as-a-service (SaaS or cloud) solutions also map to the same four functional focus areas of the Oracle EPM (Hyperion) product suite:</p> <ul> <li>Planning and Forecasting (also often referred to as “Planning, Budgeting and Forecasting”) <ul> <li>Oracle Enterprise Planning and Budgeting Cloud Service (EPBCS or E-PBCS)</li> <li>Oracle Planning and Budgeting Cloud Service (PBCS)</li> <li><em>Important note: As of the date of publication of this blog entry, Oracle is exploring simplifying the name of these solutions to “Oracle Enterprise Planning Cloud” and “Oracle Planning Cloud,” but this isn’t definitive yet; also, many of the modules offered in addition to Oracle Hyperion Planning on-premise such as capital, workforce, and project financial planning are offered as part of the EPBCS suite and the pricing/bundling model for this is evolving as of the date of publication of this blog entry.</em></li> </ul> </li> </ul> <ul> <li>Strategy Management (note this often gets merged into the “Planning” category above) <ul> <li>This became a feature of E-PBCS called “Strategic Modeling”</li> </ul> </li> </ul> <ul> <li>Financial Close and Reporting (also often referred to as “Financial Close and Consolidation”) <ul> <li>Oracle Financial Consolidation and Close Cloud Service (FCCCS or FCCS)</li> <li>Oracle Account Reconciliation Cloud Service (ARCS)</li> <li>Oracle Tax Reporting Cloud Service (TRCS)</li> </ul> </li> </ul> <ul> <li>Profitability Management <ul> <li>Oracle Profitability and Cost Management Cloud Service (PCMCS)</li> </ul> </li> </ul> <p>Just like on-premise, there are also “horizontal” capabilities that map across these product categories that are also offered as either products or “named” functionality within products that are useful to know about; these include:</p> <ul> <li>Reporting and Analysis <ul> <li>Oracle Hyperion Financial Reporting (FR)</li> <li>Oracle Hyperion Smart View for Office (SmartView or Smart View)</li> <li>Oracle Enterprise Performance Reporting Cloud Service (EPRCS)</li> </ul> </li> </ul> <ul> <li>Data Management and Integration <ul> <li>Oracle Data Integrator Cloud Service (ODICS)</li> <li>Oracle GoldenGate Cloud Service (GGCS)</li> </ul> </li> </ul> <p><strong>Where’s Essbase?</strong></p> <p>Going back to the history of how this all started, you may recall that there’s a database underlying most of these solutions on-premise &#8211; and pretty much all of these solutions in the cloud &#8211; called Essbase…and you’re probably wondering why it’s not listed as a separate product in either the on-premise or cloud lists above.  This is because Oracle’s team views it as a “foundational” offering (a database) as opposed to a “business application” (like the four functional categories listed above).</p> <p>What this means is that Essbase is grouped internally at Oracle with its technology-oriented offerings (its platform-as-a-service or PaaS solutions) within the business analytics/BI arena.  This means that it’s sold by a different team than the EPM team – and is viewed as a separate product line – at Oracle.</p> <p>With a nod to its roots in EPM – and because at the end of the day, EPM is how you spell out your strategy and BI/business analytics is how you report your strategy – here are the on-premise Essbase/BI/business analytics products for your reference:</p> <ul> <li>Essbase <ul> <li>Oracle Essbase (Essbase)</li> <li>Oracle Essbase Integration Services (EIS)</li> <li>Oracle Essbase Studio (Essbase Studio)</li> </ul> </li> </ul> <ul> <li>Business Intelligence (BI or Business Analytics) <ul> <li>Oracle Data Visualization (DV)</li> <li>Oracle Big Data Discovery (BDD)</li> <li>Oracle Endeca Information Discovery (OEID)</li> <li>Oracle Business Intelligence Enterprise Edition (OBI or OBIEE)</li> <li>Oracle Business Intelligence Publisher (BI Publisher or BIP)</li> </ul> </li> </ul> <p>These translate to the following platform-as-a-service (PaaS) solutions in the cloud, which are now all grouped in one category:</p> <ul> <li>Business Intelligence (BI or Business Analytics) <ul> <li>Oracle Analytics Cloud (OAC)</li> <li>Oracle Business Intelligence Cloud (BICS)</li> <li>Oracle Data Visualization Cloud Service (DVCS)</li> <li>Oracle Essbase Cloud (Essbase Cloud)</li> <li>Oracle Day by Day (Day by Day)</li> <li>Oracle Synopsis (Synopsis)<strong> </strong></li> </ul> </li> </ul> <p><strong>The Current View of the World: Oracle EPM (Hyperion) On-Premise versus Cloud Solutions Taxonomy</strong><strong> </strong></p> <p>What this means is that there’s almost a 1:1 parity in terms of functional categories between on-premise and cloud EPM offerings at Oracle, as demonstrated in this chart:</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/kirby2-1.jpg"><img class="alignnone size-medium wp-image-2120" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/kirby2-1-300x232.jpg" alt="" width="300" height="232" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/kirby2-1-300x232.jpg 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/kirby2-1-768x594.jpg 768w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/kirby2-1-1024x792.jpg 1024w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/kirby2-1-624x482.jpg 624w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/kirby2-1.jpg 1142w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>However, as always, the devil is in the details. Almost all of the on-premise products have been commercially available for over ten years, while many of the cloud products were only released in the last 12 months or less.  This means that Oracle is racing (and doing a good job, by the way) to provide the same breadth and depth of functionality that they offer on-premise in their cloud solutions.  Various cloud offerings offer varying levels of parity with their on-premise products (feel free to contact us directly if you want a more detailed comparison at a product level).</p> <p>Still need help?  Please contact us at <a href="mailto:communications@performancearchitects.com">communications@performancearchitects.com</a> or contact me directly on <a href="https://www.linkedin.com/in/kirbylunger/">LinkedIn</a> and we’ll help clarify!</p> Melanie Mathews http://blog.performancearchitects.com/wp/?p=2117 Tue Aug 22 2017 05:31:46 GMT-0400 (EDT) Scheduling ODMr Workflows in SQL Developer 4.2+ http://www.oralytics.com/2017/08/scheduling-odmr-workflows-in-sql.html A new feature for Oracle Data Mining (ODM) (part of SQL Developer 4.2) is the ability to schedule an ODM workflow to run a defined time or frequency. This blog post will bring you through the steps need to schedule an ODM workflow using this new feature. The first thing that you need is an ODMr workflow. The following image is a familiar looking one that I typically use to get a very quick demo of how easy it is to build a machine learning workflow. <img src="https://lh3.googleusercontent.com/-pur8-VniANQ/WYx-QP9-Z1I/AAAAAAAAMPE/j8gk2CPYZboVbORW9Do6DUP23nLEWpeowCHMYCw/NewImage.png?imgmax=800" alt="NewImage" title="NewImage.png" border="0" width="580" height="338" /> Just above the workflow worksheet we have a row of icon buttons. In the above image one of these is highlighted by a red box. This is the workflow scheduler. So go ahead on click on it. <img src="https://lh3.googleusercontent.com/-36OVzuOZBbc/WYx-7XA4f-I/AAAAAAAAMPQ/j2bvDOLYIK8QROR7AyOUz8gFAakrTBR3QCHMYCw/NewImage.png?imgmax=800" alt="NewImage" title="NewImage.png" border="0" width="295" height="120" /> In most cases you will want to run the entire workflow. The default option presented to is 'All Nodes'. If you would only like a subset of the nodes to run, you can click-on or select the node in the workflow and then click on the scheduler icon. In our example we are going to run the entire workflow, so select 'All Nodes' from the menu. <img src="https://lh3.googleusercontent.com/-EtBy9SczMY0/WYx_sZ7bK9I/AAAAAAAAMPg/ATAOyKx1DHwJ-YdpxrQ7L4qjZ4a8fT1hwCHMYCw/NewImage.png?imgmax=800" alt="NewImage" title="NewImage.png" border="0" width="250" height="200" /> The main scheduler window will open. Here you can set the Start Date and time of the first run, what the Repeat frequency is (none, every day, every week or custom) and to End the Repeat (Never, After, On Date). To schedule a once off run of the workflow just set the Date and Time, set the Repeat to 'None' and End Repeat should disappear in this instance. If Repeat was set to another value then you can set a value for End Repeat. Go ahead and run the scheduler by clicking on the OK button. <img src="https://lh3.googleusercontent.com/-EYlQ2cB-ycg/WYyB8b-pLBI/AAAAAAAAMPs/VzY2v6gd2a8p0xxkptRZbE6zCLhy_f-6gCHMYCw/NewImage.png?imgmax=800" alt="NewImage" title="NewImage.png" border="0" width="250" height="85" /> A Scheduled Jobs window should open that will display the details of the scheduled job. When this job is run in the database, this will be shown in the Workflow Jobs window. Here you can see and monitor the progress of the of the workflow. <img src="https://lh3.googleusercontent.com/-vPdc1SnVz2o/WYyCQ-rTK0I/AAAAAAAAMPw/WMhY78Shk_Ez2ImATggOsPz1XCmH0eT-ACHMYCw/NewImage.png?imgmax=800" alt="NewImage" title="NewImage.png" border="0" width="250" height="85" /> and that's it. Nice an simple. But there is a something you needed to be WARNED about. When you schedule a workflow, Oracle Data Miner will lock the workflow. This is to ensure that no changes can be made to the scheduled workflow. This is indicated with the Locked button appearing on the icon menu. If you click on this button to unlock the workflow, it will also cancel your scheduled jobs associated with this workflow. <img src="https://lh3.googleusercontent.com/-MXXV-NNqE30/WYyC5wdxiDI/AAAAAAAAMP4/WH7Wyr7YdZ483TM3vUdH4r8vYIrMm49mgCHMYCw/NewImage.png?imgmax=800" alt="NewImage" title="NewImage.png" border="0" width="250" height="85" /> Also when the scheduled workflow is finished, the workflow will remain locked. So you will have to click on this Locked button to unlock the workflow. There are a few additional advanced features. These can be found by clicking on the 'Advanced...' button in the main scheduler window. The first table displayed allows you to specify if you want an email sent for the different stages of the scheduled job. The second tab allows you to set the Job Priority, Max Failures, Max Run Duration and Schedule Limits. <img src="https://lh3.googleusercontent.com/-rKXK2kFv-Tk/WYyEAP1VKCI/AAAAAAAAMQE/o6DIS_aAoKQMxd3lI__zS7jQ7GojCeL-ACHMYCw/NewImage.png?imgmax=800" alt="NewImage" title="NewImage.png" border="0" width="300" height="250" /> Brendan Tierney tag:blogger.com,1999:blog-4669933501315263808.post-4585728720110366404 Mon Aug 21 2017 10:06:00 GMT-0400 (EDT) OAC - Import Essbase Cloud to OAC-BI Admin Tool http://beyond-just-data.blogspot.com/2017/08/oac-import-essbase-cloud-to-oac-bi.html <div class="separator" style="clear: both; text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;">I finally have time to play with Oracle Analytics Cloud Enterprise Edition (OAC EE). &nbsp;</span></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;">I have been interested in setting up my OAC BI instance to work off an Essbase Cloud cube.</span></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: x-small;"><br /></span></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: x-small;"><br /></span></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;">So; First Things First...Download the latest version of the OBIEE Admin Tool that supports BICloud</span></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;">http://www.oracle.com/technetwork/middleware/bicloud/downloads/index.html</span></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;">At the time of this post it was 12.2.2.0.20</span></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;">Keep an eye out for updates...</span></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span></span></div><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: x-small;"><a href="https://4.bp.blogspot.com/-DLM8dNQuBUA/WZUeFQsAvdI/AAAAAAAAK9k/4P4rHQ7Dmv0Y04W3xB-EECx9VckWCLn_ACLcBGAs/s1600/00.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="461" data-original-width="1568" height="117" src="https://4.bp.blogspot.com/-DLM8dNQuBUA/WZUeFQsAvdI/AAAAAAAAK9k/4P4rHQ7Dmv0Y04W3xB-EECx9VckWCLn_ACLcBGAs/s400/00.png" width="400" /></a></span></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"></span></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;">I have an Oracle Analytics Cloud Enterprise Edition instance that allows me to work with an RPD for Data Modeling instead of the built in data modeler that we know from BICS. &nbsp;The BICS Data Modeler does not let me connect to Essbase Cloud Service.&nbsp; I also have an </span></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;">Oracle Analytics Cloud Essbase Cloud Service.&nbsp; I need to make my Essbase Cloud Cubes available as subject areas in my OAC-BI instance.</span></span></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;">The cube I will start with is the Sample.Basic from my Essbsae Cloud server.</span></span></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-Y7i_w25XJes/WZcQ_NFoOTI/AAAAAAAAK-Q/K4bUBxo7nYot9o_4v8S73SMJoVW2XX6JwCLcBGAs/s1600/2017-08-18_10-58-03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="375" data-original-width="1002" height="148" src="https://2.bp.blogspot.com/-Y7i_w25XJes/WZcQ_NFoOTI/AAAAAAAAK-Q/K4bUBxo7nYot9o_4v8S73SMJoVW2XX6JwCLcBGAs/s400/2017-08-18_10-58-03.png" width="400" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;">So starting up the Admin Tool I need to create a new RPD. &nbsp;I selected 'No' for the Import Metadata because I like to create my Physical Layer one piece at a time.&nbsp;</span></span></div><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span></span></div><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: x-small;"><a href="https://1.bp.blogspot.com/-BZUzakY4Rp0/WZUZWdP5lfI/AAAAAAAAK8Y/mQJkUc5tbhQZxt5pGf6mA0IcRjMJwVYBwCLcBGAs/s1600/01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><img border="0" data-original-height="1048" data-original-width="1600" height="261" src="https://1.bp.blogspot.com/-BZUzakY4Rp0/WZUZWdP5lfI/AAAAAAAAK8Y/mQJkUc5tbhQZxt5pGf6mA0IcRjMJwVYBwCLcBGAs/s400/01.png" width="400" /></span></a></span></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;">In the Physical Layer I created a New Database...</span><span style="font-size: x-small;"></span></span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span></span><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: x-small;"><a href="https://4.bp.blogspot.com/-dn4x4hUPPN8/WZUZdJosdUI/AAAAAAAAK9c/5s171Qz0-SkNtBuxmD01laI2RFV3B7NAQCEwYBhgL/s1600/02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><img border="0" data-original-height="376" data-original-width="706" height="212" src="https://4.bp.blogspot.com/-dn4x4hUPPN8/WZUZdJosdUI/AAAAAAAAK9c/5s171Qz0-SkNtBuxmD01laI2RFV3B7NAQCEwYBhgL/s400/02.png" width="400" /></span></a></span></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;">Since I am connecting to an Essbase Cloud instance I selected the latest version of Essbase that is available in the list of Database Types,</span></span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span></span><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: x-small;"><a href="https://2.bp.blogspot.com/-QsnPG1uL39U/WZUZWSt7j-I/AAAAAAAAK9c/IoUXoSiuVi8Nb2FeCOt3sSJZWd3YqsvywCEwYBhgL/s1600/03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><img border="0" data-original-height="968" data-original-width="822" height="400" src="https://2.bp.blogspot.com/-QsnPG1uL39U/WZUZWSt7j-I/AAAAAAAAK9c/IoUXoSiuVi8Nb2FeCOt3sSJZWd3YqsvywCEwYBhgL/s400/03.png" width="338" /></span></a></span></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span></span><br /><!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:RelyOnVML/> <o:AllowPNG/> </o:OfficeDocumentSettings></xml><![endif]--><br /><!--[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="false" DefSemiHidden="false" DefQFormat="false" DefPriority="99" LatentStyleCount="371"> <w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 9"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="header"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footer"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index heading"/> <w:LsdException Locked="false" Priority="35" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="caption"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of figures"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope return"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="line number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="page number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of authorities"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="macro"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="toa heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 5"/> <w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Closing"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Signature"/> <w:LsdException Locked="false" Priority="1" SemiHidden="true" UnhideWhenUsed="true" Name="Default Paragraph Font"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Message Header"/> <w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Salutation"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Date"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Note Heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Block Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Hyperlink"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="FollowedHyperlink"/> <w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Document Map"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Plain Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="E-mail Signature"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Top of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Bottom of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal (Web)"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Acronym"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Cite"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Code"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Definition"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Keyboard"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Preformatted"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Sample"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Typewriter"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Variable"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Table"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation subject"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="No List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Contemporary"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Elegant"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Professional"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Balloon Text"/> <w:LsdException Locked="false" Priority="39" Name="Table Grid"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Theme"/> <w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" Name="Light List"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" SemiHidden="true" Name="Revision"/> <w:LsdException Locked="false" Priority="34" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" SemiHidden="true" UnhideWhenUsed="true" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/> <w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/> <w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/> <w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/> <w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/> <w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/> <w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 6"/> </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:8.0pt; mso-para-margin-left:0in; line-height:107%; 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; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} </style><![endif]--> <br /><div style="margin: 0in;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="color: black; font-size: x-small;">Next I created the connection pool.<span style="mso-spacerun: yes;">&nbsp; </span>I put the Public IP address for my Essbase Cloud Instance</span></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: x-small;"><br /></span></span><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: x-small;"><a href="https://4.bp.blogspot.com/-QajS_FQrB1Q/WZUZW1bA8SI/AAAAAAAAK9c/3VQXywDAazkD7cuUkfUcNxAk8mDZT6mjwCEwYBhgL/s1600/04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><img border="0" data-original-height="1138" data-original-width="948" height="400" src="https://4.bp.blogspot.com/-QajS_FQrB1Q/WZUZW1bA8SI/AAAAAAAAK9c/3VQXywDAazkD7cuUkfUcNxAk8mDZT6mjwCEwYBhgL/s400/04.png" width="332" /></span></a></span></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: x-small;"><br /></span></span><!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:RelyOnVML/> <o:AllowPNG/> </o:OfficeDocumentSettings></xml><![endif]--><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: x-small;"></span></span><!--[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="false" DefSemiHidden="false" DefQFormat="false" DefPriority="99" LatentStyleCount="371"> <w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 9"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="header"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footer"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index heading"/> <w:LsdException Locked="false" Priority="35" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="caption"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of figures"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope return"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="line number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="page number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of authorities"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="macro"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="toa heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 5"/> <w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Closing"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Signature"/> <w:LsdException Locked="false" Priority="1" SemiHidden="true" UnhideWhenUsed="true" Name="Default Paragraph Font"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Message Header"/> <w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Salutation"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Date"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Note Heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Block Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Hyperlink"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="FollowedHyperlink"/> <w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Document Map"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Plain Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="E-mail Signature"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Top of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Bottom of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal (Web)"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Acronym"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Cite"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Code"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Definition"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Keyboard"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Preformatted"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Sample"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Typewriter"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Variable"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Table"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation subject"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="No List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Contemporary"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Elegant"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Professional"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Balloon Text"/> <w:LsdException Locked="false" Priority="39" Name="Table Grid"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Theme"/> <w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" Name="Light List"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" SemiHidden="true" Name="Revision"/> <w:LsdException Locked="false" Priority="34" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" SemiHidden="true" UnhideWhenUsed="true" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/> <w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/> <w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/> <w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/> <w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/> <w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/> <w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 6"/> </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:8.0pt; mso-para-margin-left:0in; line-height:107%; 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; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} </style><![endif]--> <br /><div style="margin: 0in;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="color: black; font-size: x-small;">I import the Essbase metadata by right clicking on connection pool</span></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: x-small;"><br /></span></span><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: x-small;"><a href="https://1.bp.blogspot.com/-8JBB_amymBw/WZUZWro4chI/AAAAAAAAK9c/3DfvAUilCFMGT01qFL2NHK56qz0yIn_7wCEwYBhgL/s1600/05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><img border="0" data-original-height="413" data-original-width="692" height="237" src="https://1.bp.blogspot.com/-8JBB_amymBw/WZUZWro4chI/AAAAAAAAK9c/3DfvAUilCFMGT01qFL2NHK56qz0yIn_7wCEwYBhgL/s400/05.png" width="400" /></span></a></span></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"></span></span> <!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:RelyOnVML/> <o:AllowPNG/> </o:OfficeDocumentSettings></xml><![endif]--><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: x-small;"><br /></span></span><!--[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="false" DefSemiHidden="false" DefQFormat="false" DefPriority="99" LatentStyleCount="371"> <w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 9"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="header"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footer"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index heading"/> <w:LsdException Locked="false" Priority="35" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="caption"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of figures"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope return"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="line number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="page number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of authorities"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="macro"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="toa heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 5"/> <w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Closing"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Signature"/> <w:LsdException Locked="false" Priority="1" SemiHidden="true" UnhideWhenUsed="true" Name="Default Paragraph Font"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Message Header"/> <w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Salutation"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Date"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Note Heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Block Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Hyperlink"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="FollowedHyperlink"/> <w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Document Map"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Plain Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="E-mail Signature"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Top of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Bottom of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal (Web)"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Acronym"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Cite"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Code"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Definition"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Keyboard"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Preformatted"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Sample"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Typewriter"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Variable"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Table"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation subject"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="No List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Contemporary"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Elegant"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Professional"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Balloon Text"/> <w:LsdException Locked="false" Priority="39" Name="Table Grid"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Theme"/> <w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" Name="Light List"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" SemiHidden="true" Name="Revision"/> <w:LsdException Locked="false" Priority="34" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" SemiHidden="true" UnhideWhenUsed="true" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/> <w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/> <w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/> <w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/> <w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/> <w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/> <w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 6"/> </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:8.0pt; mso-para-margin-left:0in; line-height:107%; 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; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} </style><![endif]--> <br /><div style="margin: 0in;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="color: black; font-size: x-small;">I authenticated to the Essbase Cloud instance and navigated to my Cube to import and started the Import.&nbsp; </span><span style="font-size: x-small;"><span style="color: black;">The process started and up popped a message.</span></span></span><!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:RelyOnVML/> <o:AllowPNG/> </o:OfficeDocumentSettings></xml><![endif]--><br /><!--[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]--><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: x-small;"><span style="color: black;"></span></span></span> </div><div style="margin: 0in;"><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: x-small;"><a href="https://1.bp.blogspot.com/-C5QeOldwhqY/WZb_t7bVUHI/AAAAAAAAK90/JIksQ7sXmIo33O2djfyHESIqpg-FrqkYQCLcBGAs/s1600/07.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1048" data-original-width="1600" height="261" src="https://1.bp.blogspot.com/-C5QeOldwhqY/WZb_t7bVUHI/AAAAAAAAK90/JIksQ7sXmIo33O2djfyHESIqpg-FrqkYQCLcBGAs/s400/07.png" width="400" /></a></span></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: x-small;"></span></span></div><br /><!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:RelyOnVML/> <o:AllowPNG/> </o:OfficeDocumentSettings></xml><![endif]--><!--[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="false" DefSemiHidden="false" DefQFormat="false" DefPriority="99" LatentStyleCount="371"> <w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 9"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="header"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footer"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index heading"/> <w:LsdException Locked="false" Priority="35" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="caption"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of figures"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope return"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="line number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="page number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of authorities"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="macro"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="toa heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 5"/> <w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Closing"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Signature"/> <w:LsdException Locked="false" Priority="1" SemiHidden="true" UnhideWhenUsed="true" Name="Default Paragraph Font"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Message Header"/> <w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Salutation"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Date"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Note Heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Block Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Hyperlink"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="FollowedHyperlink"/> <w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Document Map"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Plain Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="E-mail Signature"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Top of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Bottom of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal (Web)"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Acronym"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Cite"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Code"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Definition"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Keyboard"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Preformatted"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Sample"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Typewriter"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Variable"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Table"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation subject"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="No List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Contemporary"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Elegant"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Professional"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Balloon Text"/> <w:LsdException Locked="false" Priority="39" Name="Table Grid"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Theme"/> <w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" Name="Light List"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" SemiHidden="true" Name="Revision"/> <w:LsdException Locked="false" Priority="34" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" SemiHidden="true" UnhideWhenUsed="true" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/> <w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/> <w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/> <w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/> <w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/> <w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/> <w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 6"/> </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:8.0pt; mso-para-margin-left:0in; line-height:107%; 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; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} </style><![endif]--> <br /><div style="margin-bottom: .0001pt; margin: 0in;"><span style="color: black; font-family: &quot;arial&quot; , sans-serif; font-size: 10.0pt;">So it was time to see what following the Import Metadata option from File menu after deleting everything in the Physical Layer.</span></div><div style="margin-bottom: .0001pt; margin: 0in;"><br /></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"></span> <div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: x-small;"><a href="https://1.bp.blogspot.com/-UU63wKe4OaY/WZUZYIDUrRI/AAAAAAAAK9c/gFg7FhAxoY8vqOBErwFKU7BdtWR9G9ElQCEwYBhgL/s1600/08.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><img border="0" data-original-height="832" data-original-width="783" height="400" src="https://1.bp.blogspot.com/-UU63wKe4OaY/WZUZYIDUrRI/AAAAAAAAK9c/gFg7FhAxoY8vqOBErwFKU7BdtWR9G9ElQCEwYBhgL/s400/08.png" width="376" /></span></a></span></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"></span><br /><!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:RelyOnVML/> <o:AllowPNG/> </o:OfficeDocumentSettings></xml><![endif]--><!--[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="false" DefSemiHidden="false" DefQFormat="false" DefPriority="99" LatentStyleCount="371"> <w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 9"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="header"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footer"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index heading"/> <w:LsdException Locked="false" Priority="35" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="caption"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of figures"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope return"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="line number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="page number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of authorities"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="macro"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="toa heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 5"/> <w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Closing"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Signature"/> <w:LsdException Locked="false" Priority="1" SemiHidden="true" UnhideWhenUsed="true" Name="Default Paragraph Font"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Message Header"/> <w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Salutation"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Date"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Note Heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Block Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Hyperlink"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="FollowedHyperlink"/> <w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Document Map"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Plain Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="E-mail Signature"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Top of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Bottom of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal (Web)"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Acronym"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Cite"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Code"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Definition"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Keyboard"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Preformatted"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Sample"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Typewriter"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Variable"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Table"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation subject"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="No List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Contemporary"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Elegant"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Professional"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Balloon Text"/> <w:LsdException Locked="false" Priority="39" Name="Table Grid"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Theme"/> <w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" Name="Light List"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" SemiHidden="true" Name="Revision"/> <w:LsdException Locked="false" Priority="34" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" SemiHidden="true" UnhideWhenUsed="true" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/> <w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/> <w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/> <w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/> <w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/> <w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/> <w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 6"/> </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:8.0pt; mso-para-margin-left:0in; line-height:107%; 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; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} </style><![endif]--> <br /><div style="margin-bottom: .0001pt; margin: 0in;"><span style="color: black; font-family: &quot;arial&quot; , sans-serif; font-size: 10.0pt;">I selected the available Connection Type - Essbase 9+</span>&nbsp;</div><div style="margin-bottom: .0001pt; margin: 0in;"></div><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: x-small;"><a href="https://3.bp.blogspot.com/-a0TldBeErTM/WZUZYEprMWI/AAAAAAAAK9c/RkQlVNnlcwwBuBdwbgXzW75TtCL_6uV-ACEwYBhgL/s1600/09.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><img border="0" data-original-height="1044" data-original-width="1600" height="260" src="https://3.bp.blogspot.com/-a0TldBeErTM/WZUZYEprMWI/AAAAAAAAK9c/RkQlVNnlcwwBuBdwbgXzW75TtCL_6uV-ACEwYBhgL/s400/09.png" width="400" />&nbsp;</span></a></span></span></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: x-small;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">set my connection to the public IP </span></span></span></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-E3DTykBPTS4/WZcBc1stLiI/AAAAAAAAK-A/RWu-FtWCNOox92q7pJGe2nOQxffYPqqXQCLcBGAs/s1600/10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1048" data-original-width="1600" height="261" src="https://2.bp.blogspot.com/-E3DTykBPTS4/WZcBc1stLiI/AAAAAAAAK-A/RWu-FtWCNOox92q7pJGe2nOQxffYPqqXQCLcBGAs/s400/10.png" width="400" /></a></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"></span></span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;">Once again navigated to my cube and imported it</span></span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span></span><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: x-small;"><a href="https://1.bp.blogspot.com/-T8P02aJoweg/WZUZYTNPMOI/AAAAAAAAK9c/Wlo7rASPo0s0yzKYxvi9jAkxhP4H8bHrwCEwYBhgL/s1600/11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><img border="0" data-original-height="1048" data-original-width="1600" height="261" src="https://1.bp.blogspot.com/-T8P02aJoweg/WZUZYTNPMOI/AAAAAAAAK9c/Wlo7rASPo0s0yzKYxvi9jAkxhP4H8bHrwCEwYBhgL/s400/11.png" width="400" /></span></a></span></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"></span></span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"></span></span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;">This time it worked</span></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"></span></span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span></span><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: x-small;"><a href="https://3.bp.blogspot.com/-ec62ioI7KXo/WZUZYaQw5RI/AAAAAAAAK9c/Aqn66Mc2uaULx5IZCA5ORoSixaLndC1YwCEwYBhgL/s1600/12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><img border="0" data-original-height="1048" data-original-width="1600" height="261" src="https://3.bp.blogspot.com/-ec62ioI7KXo/WZUZYaQw5RI/AAAAAAAAK9c/Aqn66Mc2uaULx5IZCA5ORoSixaLndC1YwCEwYBhgL/s400/12.png" width="400" /></span></a></span></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;">And my cube shows up fine in the Physical Layer.</span></span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span></span><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: x-small;"><a href="https://4.bp.blogspot.com/-dLasCUb6hhY/WZUZYiA9rJI/AAAAAAAAK9c/z1fVQf0nPYkZrOC4DjGopwwTwAeQ_R2MQCEwYBhgL/s1600/13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><img border="0" data-original-height="690" data-original-width="693" height="318" src="https://4.bp.blogspot.com/-dLasCUb6hhY/WZUZYiA9rJI/AAAAAAAAK9c/z1fVQf0nPYkZrOC4DjGopwwTwAeQ_R2MQCEwYBhgL/s320/13.png" width="320" /></span></a></span></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;">After renaming the Database, Connection Pool adjusting Dimension properties to suit my needs I followed same process as an on-prem cube in the RPD.</span></span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span></span><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: x-small;"><a href="https://4.bp.blogspot.com/-5WLQvNfSqMs/WZUZYubOXSI/AAAAAAAAK9c/m9H7XMHKEtYp-bWlqUa202crlOCyMeMzQCEwYBhgL/s1600/14.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><img border="0" data-original-height="954" data-original-width="1502" height="253" src="https://4.bp.blogspot.com/-5WLQvNfSqMs/WZUZYubOXSI/AAAAAAAAK9c/m9H7XMHKEtYp-bWlqUa202crlOCyMeMzQCEwYBhgL/s400/14.png" width="400" /></span></a></span></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;">It is time to save all my work and like any good RPD Developer I click yes on the Global Consistency Checker.</span></span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span></span><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: x-small;"><a href="https://4.bp.blogspot.com/-dPgAJBubeK8/WZUZY0oE0II/AAAAAAAAK9c/aq8g8xc42TAZCQnVf3GedVBAXGWM5XRSwCEwYBhgL/s1600/15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><img border="0" data-original-height="954" data-original-width="1502" height="253" src="https://4.bp.blogspot.com/-dPgAJBubeK8/WZUZY0oE0II/AAAAAAAAK9c/aq8g8xc42TAZCQnVf3GedVBAXGWM5XRSwCEwYBhgL/s400/15.png" width="400" /></span></a></span></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;">And what do we have here...? &nbsp;The warning indicates that my Database Type is not correct.</span></span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span></span><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: x-small;"><a href="https://2.bp.blogspot.com/-iQvQE_qioJw/WZUZY8HUVnI/AAAAAAAAK9c/2oj0UhNBQKUvwlu3BOYfYwuOqDoe2ZDPQCEwYBhgL/s1600/16.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><img border="0" data-original-height="824" data-original-width="1600" height="205" src="https://2.bp.blogspot.com/-iQvQE_qioJw/WZUZY8HUVnI/AAAAAAAAK9c/2oj0UhNBQKUvwlu3BOYfYwuOqDoe2ZDPQCEwYBhgL/s400/16.png" width="400" /></span></a></span></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span></span><span style="font-size: x-small;">I</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"> checked the Physical Layer properties of the database, I see that i have a couple more options than I did when I selected Import Metadata. &nbsp;I selected the most recent release version available in the list.</span></span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span></span><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: x-small;"><a href="https://3.bp.blogspot.com/-SwKUjii4uss/WZUZZLHU5pI/AAAAAAAAK9c/yfn1zX0wtf0Sy22_6a19ktT4d05Xs2HyQCEwYBhgL/s1600/17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><img border="0" data-original-height="970" data-original-width="817" height="400" src="https://3.bp.blogspot.com/-SwKUjii4uss/WZUZZLHU5pI/AAAAAAAAK9c/yfn1zX0wtf0Sy22_6a19ktT4d05Xs2HyQCEwYBhgL/s400/17.png" width="336" /></span></a></span></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;">This time when I saved and allowed for Global Consistency Check I did not get any warnings or errors!</span></span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span></span><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: x-small;"><a href="https://1.bp.blogspot.com/-HMd7JzeH9H8/WZUZZOyjOjI/AAAAAAAAK9c/QHGQIUbNcZMZIYzD3L0TkI0eXYjdRwD-wCEwYBhgL/s1600/18.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><img border="0" data-original-height="954" data-original-width="1502" height="253" src="https://1.bp.blogspot.com/-HMd7JzeH9H8/WZUZZOyjOjI/AAAAAAAAK9c/QHGQIUbNcZMZIYzD3L0TkI0eXYjdRwD-wCEwYBhgL/s400/18.png" width="400" /></span></a></span></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;"><br /></span></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-small;">So it is time to submit an SR and&nbsp; deploy to the cloud! &nbsp;But that is topic for another post....</span></span><br /><br /> Wayne D. Van Sluys tag:blogger.com,1999:blog-7768091516190336427.post-3314267337444036097 Fri Aug 18 2017 12:13:00 GMT-0400 (EDT) How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau http://www.rittmanmead.com/blog/2017/08/how-was-game-of-thrones-s07-e05-tweet-analysis-with-kafka-bigquery-and-tableau/ <img src="http://www.rittmanmead.com/blog/content/images/2017/08/Images-View-3.png" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"><p>I don't trust statistics and personally believe that at least 74% of them are wrong.... <strong>but</strong> I bet nearly 100% of people with any interest in fantasy (or just any) TV shows are watching the 7th series of <a href="http://www.hbo.com/game-of-thrones">Game of Thrones</a> (GoT) by HBO. <br> If you are one of those, join me in the analysis of the latest tweets regarding the subject. Please be also aware that, if you're not on the latest episode, some spoilers may be revealed by this article. My suggestion is then to go back and watch the episodes first and then come back here for the analysis!</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Brace-Stark.jpg" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p>If you aren't part of the above group then <code>¯\_(ツ)_/¯</code>. Still this post contains a lot of details on how to perform analysis on any tweet with Tableau and BigQuery together with Kafka sources and sink configurations. I'll leave to you to find another topic to put all this in practice.</p> <h1 id="overallsetup">Overall Setup</h1> <p>As described in my previous post on <a href="https://www.rittmanmead.com/blog/2017/07/analyzing-wimbledon-twitter-feeds-in-real-time-with-kafka-presto-and-oracle-dvd-v3/">analysing Wimbledon tweets</a> I've used Kafka for the tweet extraction phase. In this case however, instead of querying the data directly in Kafka with <a href="https://prestodb.io">Presto</a>, I'm landing the data into a <a href="https://cloud.google.com/bigquery/">Google BigQuery</a> Table. The last step is optional, since as in last blog I was directly querying Kafka, but in my opinion represents the perfect use case of all technologies: Kafka for streaming and BigQuery for storing and querying data. <br> The endpoint is represented by Tableau, which has a native connector to BigQuery. The following image represents the complete flow</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Overall-Flow.png" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p>One thing to notice: at this point in time I'm using a on-premises installation of Kafka which I kept from my previous blog. However since source and target are natively cloud application I could easily move also Kafka in the cloud using for example the recently announced <a href="https://www.confluent.io/confluent-cloud/">Confluent Kafka Cloud</a>. </p> <p>Now let's add some details about the overall setup.</p> <h2 id="kafka">Kafka</h2> <p>For the purpose of this blog post I've switched from the <a href="https://kafka.apache.org/downloads">original Apache Kafka</a> distribution to the open source <a href="https://www.confluent.io/download/">Confluent Platform</a> one. I've chosen the Confluent distribution for several reasons - it’s easier to install (e.g. with Docker images, yum, etc), it includes important components such as a Schema Registry - and it ships with several very useful connectors for Kafka Connect. </p> <p>Kafka Connect is part of Apache Kafka, and provides a framework for easily ingesting streams of data into Kafka, and from Kafka out to target systems. </p> <p>With this framework anybody can write a connector to streampush data from any system (Source Connector) to Kafka or streampull data from it to a target (Sink Connector). Moreover Kafka Connect provides the benefit of optionally converting the message body into Avro format which makes it easier to access and faster to retrieve. The schema for the Avro message is stored in the open-source Schema Registry, which is part of the Confluent Platform (or standalone, if you want). <a href="https://www.confluent.io/product/connectors/">This</a> is a list of available connectors developed and maintained either from Confluent or from the community. In this article I’m going to use two community connectors -- Twitter as the source and BigQuery as the sink.</p> <h3 id="kafkasourcefortwitter">Kafka Source for Twitter</h3> <p>In order to source from Twitter I've been using <a href="https://github.com/jcustenborder/kafka-connect-twitter">this connector</a>. The setup is pretty easy: copy the source folder named <code>kafka-connect-twitter-master</code> under <code>$CONFLUENT_HOME/share/java</code> and modify the file <code>TwitterSourceConnector.properties</code> located under the <code>config</code> subfolder in order to include the connection details and the topics.</p> <p>The configuration file in my case looked like the following:</p> <pre><code>name=connector1 tasks.max=1 connector.class=com.github.jcustenborder.kafka.connect.twitter.TwitterSourceConnector # Set these required values twitter.oauth.accessTokenSecret=&lt;TWITTER_TOKEN_SECRET&gt; process.deletes=false filter.keywords=#got,gameofthrones,stark,lannister,targaryen kafka.status.topic=rm.got kafka.delete.topic=rm.got twitter.oauth.consumerSecret=&lt;TWITTER_CONSUMER_SECRET&gt; twitter.oauth.accessToken=&lt;TWITTER_ACCESS_TOKEN&gt; twitter.oauth.consumerKey=&lt;TWITTER_CONSUMER_KEY&gt; </code></pre> <p>Few things to notice:</p> <ul> <li><code>process.deletes=false</code>: I'll not delete any message from the stream</li> <li><code>kafka.status.topic=rm.got</code>: I'll write against a topic named <code>rm.got</code></li> <li><code>filter.keywords=#got,gameofthrones,stark,lannister,targaryen</code>: I'll take all the tweets with one of the following keywords included. The list could be expanded, this was just a test case.</li> </ul> <p>All the work is done! the next step is to start the Kafka Connect execution via the following call from <code>$CONFLUENT_HOME/share/java/kafka-connect-twitter</code></p> <pre><code>$CONFLUENT_HOME/bin/connect-standalone config/connect-avro-docker.properties config/TwitterSourceConnector.properties </code></pre> <p>I can see the flow of messages in Kafka using the <code>avro-console-consumer</code> command</p> <pre><code>./bin/kafka-avro-console-consumer --bootstrap-server localhost:9092 --property schema.registry.url=http://localhost:8081 --property print.key=true --topic twitter --from-beginning </code></pre> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/TweetFlow.gif" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p>You can see (or maybe it's a little bit difficult from the GIF) that the message body was transformed from JSON to AVRO format, the following is an example</p> <pre><code>{"CreatedAt":{"long":1502444851000}, "Id":{"long":895944759549640704}, "Text":{"string":"RT @haranatom: Daenerys Targaryen\uD83D\uDE0D https://t.co/EGQRvLEPIM"}, [...] ,"WithheldInCountries":[]} </code></pre> <h2 id="kafkasinktobigquery">Kafka Sink to BigQuery</h2> <p>Once the data is in Kafka, the next step is push it to the selected datastore: BigQuery. I can rely on Kafka Connect also for this task, with the related code written and supported by the community and available in <a href="https://github.com/wepay/kafka-connect-bigquery">github</a>.</p> <p>All I had to do is to download the code and change the file <code>kcbq-connector/quickstart/properties/connector.properties</code></p> <pre><code>... topics=rm.got .. autoCreateTables=true autoUpdateSchemas=true ... # The name of the BigQuery project to write to project=&lt;NAME_OF_THE_BIGQUERY_PROJECT&gt; # The name of the BigQuery dataset to write to (leave the '.*=' at the beginning, enter your # dataset after it) datasets=.*=&lt;NAME_OF_THE_BIGQUERY_DATASET&gt; # The location of a BigQuery service account JSON key file keyfile=/home/oracle/Big-Query-Key.json </code></pre> <p>The changes included:</p> <ul> <li>the <strong>topic name</strong> to source from Kafka</li> <li>the <strong>project</strong>, <strong>dataset</strong> and <strong>Keyfile</strong> which are the connection parameters to BigQuery. Note that the Keyfile is automatically generated when creating a BigQuery service.</li> </ul> <p>After verifying the settings, as per Kafka connect instructions, I had to create the tarball of the connector and extract it's contents</p> <pre><code>cd /path/to/kafka-connect-bigquery/ ./gradlew clean confluentTarBall mkdir bin/jar/ &amp;&amp; tar -C bin/jar/ -xf bin/tar/kcbq-connector-*-confluent-dist.tar </code></pre> <p>The last step is to launch the connector by moving into the <code>kcbq-connector/quickstart/</code> subfolder and executing</p> <pre><code>./connector.sh </code></pre> <p>Note that you may need to specify the <code>CONFLUENT_DIR</code> if the Confluent installation home is not in a sibling directory</p> <pre><code>export CONFLUENT_DIR=/path/to/confluent </code></pre> <p>When everything start up without any error a table named <code>rm_got</code> (the name is automatically generated) appears in the BigQuery dataset I defined previously and starts populating.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/BigQuery.png" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p>A side note: I encountered a <code>Java Heap Space</code> error during the run of the BigQuery sink. This was resolved by increasing the heap space setting of the connector via the following call</p> <pre><code>export KAFKA_HEAP_OPTS="-Xms512m -Xmx1g" </code></pre> <h1 id="bigquery">BigQuery</h1> <p>BigQuery, based on <a href="https://research.google.com/pubs/pub36632.html">Dremel's paper</a>, is Google's proposition for an enterprise cloud datawarehouse which combines speed and scalability with separate pricing for storage and compute. If the cost of storage is common knowledge in the IT world, the compute cost is a fairly new concept. What this means is that the cost of the same query can vary depending on how the data is organized. In Oracle terms, we are used to associating the query cost to the one defined in the explain plan. In BigQuery that concept is translated from "performance cost" to also "financial cost" of a query: the more data a single query has to scan, the higher is the cost for it. This makes the work of optimizing data structures not only visible performance wise but also on the financial side. </p> <p>For the purpose of the blog post, I had almost 0 settings to configure other than creating a <a href="https://cloud.google.com">Google Cloud Platform</a>, creating a BigQuery project and a dataset. </p> <p>During the Project creation phase, a <strong>Keyfile</strong> is generated and stored locally on the computer. This file contains all the credentials needed to connect to BigQuery from any external application, my suggestion is to store it in a secure place. </p> <pre><code>{ "type": "service_account", "project_id": "&lt;PROJECT_ID&gt;", "private_key_id": "&lt;PROJECT_KEY_ID&gt;", "private_key": "&lt;PRIVATE_KEY&gt;", "client_email": "&lt;E-MAIL&gt;", "client_id": "&lt;ID&gt;", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://accounts.google.com/o/oauth2/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "&lt;URL&gt;" } </code></pre> <p>This file is used in the Kafka sink as we saw above.</p> <h1 id="tableau">Tableau</h1> <p>Once the data is landed in BigQuery, It's time to analyse it with Tableau! <br> The Connection is really simple: from Tableau home I just need to select <code>Connect-&gt; To a Server -&gt; Google BigQuery</code>, fill in the connection details and select the project and datasource.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Tableau-BigQuery.png" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p>An important feature to set is the <strong>Use Legacy SQL</strong> checkbox in the datasource definition. Without this setting checked I wasn't able to properly query the BigQuery datasource. This is due to the fact that "Standard SQL" doesn't support nested columns while Legacy SQL (also known as BigQuery SQL) does, for more info check the <a href="http://onlinehelp.tableau.com/current/pro/desktop/en-us/examples_googlebigquery.html#switch_to_bql">related tableau website</a>.</p> <h1 id="analysingthedata">Analysing the data</h1> <p>Now it starts the fun part: analysing the data! The integration between Tableau and BigQuery automatically exposes all the columns of the selected tables together with the correctly mapped datatypes, so I can immediately start playing with the dataset without having to worry about datatype conversions or date formats. I can simply include in the analysis the <code>CreatedAt</code> date and the <code>Number of Records</code> measure (named <code># of Tweets</code>) and display the number of tweets over time.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/--of-Tweets.png" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p>Now I want to analyse where the tweets are coming from. I can use using the the <code>Place.Country</code> or the <code>Geolocation.Latitude</code> and <code>Geolocation.Longitude</code> fields in the tweet detail. Latitute and Longitude are more detailed while the Country is rolled up at state level, but both solutions have the same problem: they are available only for tweets with geolocation activated. </p> <p>After adding <code>Place.Country</code> and <code># of Tweets</code> in the canvas, I can then select the map as visualization. Two columns <code>Latitude (generated)</code> and <code>Longitude (generated)</code> are created on the fly mapping the country locations and the selected visualization is shown.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Map-1.png" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p>However as mentioned before, this map shows only a subset of the tweets since the majority of tweets (almost 99%) has no location.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Nulls-In-Location.png" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p>The fields <code>User.Location</code> and <code>User.TimeZone</code> suffer from a different problem: either are null or the possible values are not coming from a predefined list but are left to the creativity of the account owner which can type whatever string. As you can see, it seems we have some tweets coming from directly from <strong>Winterfell</strong>, <strong>Westeros</strong>, and interesting enough... <strong>Hogwarts</strong>!</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Location-and-TimeZone.png" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p>Checking the most engaged accounts based on <code>User.Name</code> field clearly shows that <strong>Daenerys</strong> and <strong>Jon Snow</strong> take the time to tweet between fighting Cercei and the Whitewalkers.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Authors.png" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p>The field <code>User.Lang</code> can be used to identify the language of the User. However, when analysing the raw data, it can be noticed that there are language splits for regional language settings (note <code>en</code> vs <code>en-gb</code>). We can solve the problem by creating a new field <code>User.Lang.Clean</code> taking only the first part of the string with a formula like</p> <pre><code>IF FIND([User.Lang],'-') =0 THEN [User.Lang] ELSE LEFT([User.Lang],FIND([User.Lang],'-')-1) END </code></pre> <p>With the interesting result of Italian being the 4th most used language, overtaking portuguese, and showing the high interest in the show in my home country.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Language-1.png" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <h2 id="characterandhouseanalysis">Character and House Analysis</h2> <p>Still with me? So far we've done some pretty basic analysis on top of pre-built fields or with little transformations... now it's time to go deep into the tweet's <code>Text</code> field and check what the people are talking about!</p> <p>The first thing I wanted to do is check mentions about the characters and related houses. The more a house is mentioned, the more should be relevant correct? <br> The first text analysis I want to perform was <strong>Stark</strong> vs <strong>Targaryen</strong> mention war: showing how many tweets were mentioning both, only one or none of two of the main houses. I achieved it with the below <code>IF</code> statement</p> <pre><code>IF contains(upper([Text]), 'STARK') AND contains(upper([Text]),'TARGARYEN') THEN 'Both' ELSEIF contains(upper([Text]), 'STARK') THEN 'Stark' ELSEIF contains(upper([Text]), 'TARGARYEN') THEN 'Targaryen' ELSE 'None' END </code></pre> <p>With the results supporting the house <strong>Stark</strong></p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Mentions-by-Family.png" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p>I can do the same at single character level counting the mentions on separate columns like for <strong>Jon Snow</strong></p> <pre><code>IIF(contains(upper([Text]), 'JON') OR contains(upper([Text]),'SNOW'), 1,0) </code></pre> <p>Note the <code>OR</code> condition since I want to count as mentions both the words <code>JON</code> and <code>SNOW</code> since those can uniquely be referred at the same character. Similarly I can create a column counting the mentions to <strong>Arya Stark</strong> with the following formula</p> <pre><code>IIF(contains(upper([Text]), 'ARYA'), 1,0) </code></pre> <p>Note in this case I'm filtering only the name (<code>ARYA</code>) since <em>Stark</em> can be a reference to multiple characters (Sansa, Bran ...). I created several columns like the two above for some characters and displayed them in a histogram ordered by <code># of Mentions</code> in descending order.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/mentions-by-Character.png" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p>As expected, after looking at the Houses results above, Jon Snow is leading the user mentions with a big margin over the others with Daenerys in second place.</p> <p>The methods mentioned above however have some big limitations:</p> <ul> <li>I need to create a different column for every character/house I want to analyse</li> <li>The formula complexity increases if I want to analyse more houses/characters at the same time</li> </ul> <p>My goal would be to have an Excel file, where I set the research Key (like <code>JON</code> and <code>SNOW</code>) together with the related character and house and mash this data with the BigQuery table.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Table-of-References.png" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p>The joining key would be like </p> <pre><code>CONTAINS([BigQuery].[Text], [Excel].[Key]) &gt;0 </code></pre> <p>Unfortunately Tableau allows only <code>=</code> operators in text joining conditions during data blending making the above syntax impossible to implement. I have now three options:</p> <ul> <li><strong>Give Up</strong>: Never if there is still hope!</li> <li><strong>Move the Excel into a BigQuery table</strong> and resolve the problem there by writing a view on top of the data: works but increases the complexity on BigQuery side, plus most Tableau users will not have write access to related datasources.</li> <li><strong>Find an alternative way of joining the data</strong>: If the <code>CONTAINS</code> join is not possible during data-blending phase, I may use it a little bit later...</li> </ul> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Tyrion-Drink.jpg" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p><mark>Warning: the method mentioned below is not the optimal performance wise and should be used carefully since it causes data duplication if not handled properly.</mark></p> <p>Without the option of using the <code>CONTAINS</code> I had to create a <strong>cartesian join</strong> during data-blending phase. By using a cartesian join every row in the BigQuery table is repeated for every row in the Excel table. I managed to create a cartesian join by simply put a <code>1-1</code> condition in the data-blending section.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/1-1-Join.png" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p>I can then apply a filter on the resulting dataset to keep only the BigQuery rows mentioning one (or more) <code>Key</code> from the Excel file with the following formula.</p> <pre><code>IIF(CONTAINS(UPPER([Text]),[Key]),[Id],NULL) </code></pre> <p>This formula filters the tweet <code>Id</code> where the Excel's <code>[Key]</code> field is contained in the <code>UPPER([Text])</code> coming from Twitter. Since there are multiple Keys assigned to the same character/house (see Jon Snow with both keywords <code>JON</code> and <code>SNOW</code>) the aggregation for this column is <strong>count distinct</strong> which in Tableau is achieved with <code>COUNTD</code> formula. <br> I can now simply drag the <code>Name</code> from the Excel file and the <code># of Mentions</code> column with the above formula and aggregation method as count distinct.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/--of-Mentions-by-Character-2.png" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p>The beauty of this solution is that now if I need to do the same graph by house, I don't need to create columns with new formulas, but simply remove the <code>Name</code> field and replace it with <code>Family</code> coming from the Excel file.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/--of-Mentions-by-Family-1.png" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p>Also if I forgot a character or family I simply need to add the relevant rows in the Excel lookup file and reload it, nothing to change in the formulas.</p> <h2 id="sentimentanalysis">Sentiment Analysis</h2> <p>Another goal I had in mind when analysing GoT data was the <strong>sentiment analysis</strong> of tweets and the average sentiment associated to a character or house. Doing sentiment analysis in Tableau is not too hard, since we can reuse already existing packages coming from R. </p> <p>For the Tableau-R integration to work I had to install and execute the <code>RServe</code> package from a workstation where R was already installed and set the connection in Tableau. More details on this configuration can be found in <a href="https://community.tableau.com/docs/DOC-9916">Tableau documentation</a></p> <p>Once configured Tableau to call R functions it's time to analyse the sentiment. I used <a href="https://cran.r-project.org/web/packages/syuzhet/syuzhet.pdf">Syuzhet</a> package (previously downloaded) for this purpose. The <code>Sentiment</code> calculation is done by the following formula:</p> <pre><code>SCRIPT_INT( "library(syuzhet); r&lt;-(get_sentiment(.arg1,method = 'nrc'))", ATTR([Text])) </code></pre> <p>Where</p> <ul> <li><code>SCRIPT_INT</code>: The method will return an integer score for each Tweet with positives sentiments having positives scores and negative sentiments negative scores</li> <li><code>get_sentiment(.arg1,method = 'nrc')</code>: is the function used</li> <li><code>ATTR([Text])</code>: the input parameter of the function which is the tweet text</li> </ul> <p>At this point I can see the score associated to every tweet, and since that R package uses dictionaries, I limited my research to tweets in english language (filtering on the column <code>User.Lang.Clean</code> mentioned above by <code>en</code>).</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Sentiment-By-Tweet.png" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p>The next step is to average the sentiment by character, seems an easy step but devil is in the details! Tableau takes the output of the <code>SCRIPT_INT</code> call to R as aggregated metric, thus not giving any visual options to re-aggregate! Plus the tweet <code>Text</code> field must be present in the layout for the sentiment to be calculated otherwise the metric results <code>NULL</code>.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Cade.jpg" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p>Fortunately there are <a href="http://onlinehelp.tableau.com/current/pro/desktop/en-us/functions_functions_tablecalculation.html">functions</a>, and specifically <strong>window functions</strong> like <code>WINDOW_AVG</code> allowing a post aggregation based of a formula defining the start and end. The other cool fact is that window function work per <strong>partition</strong> of the data and the start and end of the window can be defined using the <code>FIRST()</code> and <code>LAST()</code> functions.</p> <p>We can now create an aggregated version of our <code>Sentiment</code> column with the following formula</p> <pre><code>WINDOW_AVG(FLOAT([Sentiment]), FIRST(), LAST()) </code></pre> <p>This column will be repeated with the same value for all rows within the same <em>"partition"</em>, in this case the character <code>Name</code>.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Sentiment-Agg.png" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p>Be aware that this solution doesn't re-aggregate the data, we'll still see the data by single tweet <code>Text</code> and character <code>Name</code>. However the metric is calculated at total per character so graphs can be displayed.</p> <p>I wanted to show a <strong>Scatter Plot</strong> based on the <code># of Mentions</code> and <code>Sentiment</code> of each character. With the window functions and the defined above it's as easy as dragging the fields in the proper place and select the scatter plot viz.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Default-View.png" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p>The default view is not very informative since I can't really associate a character to its position in the chart until I go over the related image. Fortunately Tableau allows the definition of <a href="https://www.tableau.com/drive/custom-shapes">custom shapes</a> and I could easily assign character photos to related names.</p> <p><img width="600px" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau" src="http://www.rittmanmead.com/blog/content/images/2017/08/Images-View-2.png"></p> <p>If negative mentions for <strong>Littlefinger</strong> and <strong>Cercei</strong> was somehow expected, the characters with most negative sentiment are <strong>Sansa Stark</strong>, probably due to the mysterious letter found by Arya in Baelish room, and <strong>Ellaria Sand</strong>. On the opposite side we strangely see the <strong>Night King</strong> and more in general the <strong>WhiteWalkers</strong> with a very positive sentiment associated to them. Strange, this needs further investigation.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Night-king.jpg" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <h2 id="deepdiveonwhitewalkersandsansa">Deep Dive on Whitewalkers and Sansa</h2> <p>I can create a view per Character with associate tweets and sentiment score and filter it for the <strong>WhiteWalkers</strong>. Looks like there are great expectations for this character in the next episodes (the battle is coming) which are associated with positive sentiments.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Night-King-Tweets.png" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p>When analysing the detail of the number of tweets falling in each sentiment score category it's clear why <strong>Sansa</strong> and <strong>Whitewalkers</strong> have such a different sentiment average. Both appear as normal distributions, but the center of the Whitewalkers curve is around 1 (positive sentiment) while for Sansa is between -1 and 0 (negative sentiment).</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Analysis-of-Tweets-by-Sentiment-1.png" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p>This explanation however doesn't give me enough information, and want to understand more about what are the <strong>most used words</strong> included in tweets mentioning WhiteWalkers or Night King. </p> <p><mark>Warning: the method mentioned above is not the optimal performance wise and should be used carefully since it causes data duplication if not handled properly.</mark></p> <p>There is no easy way to do so directly in Tableau, even using R since all the functions expect the output size to be 1-1 with the input, like sentiment score and text. <br> For this purpose I created a view on top of the BigQuery table directly in Tableau using the <strong>New Custom SQL</strong> option. The SQL used is the following</p> <pre><code>SELECT ID, REPLACE(REPLACE(SPLIT(UPPER(TEXT),' '),'#',''),'@','') word FROM [Dataset.rm_got] </code></pre> <p>The <code>SPLIT</code> function divides the <code>Text</code> field in multiple rows one for every word separated by space. This is a very basic split and can of course be enhanced if needed. On top of it the SQL removes references to <code>#</code> and <code>@</code>. Since the view contains the tweet's <code>Id</code> field, this can be used to join this dataset with the main table.</p> <p>The graph showing the overall words belonging to characters is not really helpful since the amount of words (even if I included only the ones with more than e chars) is too huge to be analysed properly.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Overall-Words.png" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p>When analysing the single words in particular tweets I can clearly see that the <strong>Whitewalkers</strong> sentiment is driven by words like <code>King</code>, <code>Iron</code>, <code>Throne</code> having a positive sentiment. On the other hand <strong>Sansa</strong> stark is penalized by words like <code>Kill</code> and <code>Fight</code> probably due to the possible troubles with Arya.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Word-Sentiment-Analysis.png" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p>One thing to mention is that the word <a href="http://dictionary.cambridge.org/dictionary/english/stark">Stark</a> is classified with a negative sentiment due to the general english dictionary used for the scoring. This affects all the tweets and in particular the average scores of all the characters belonging to the <strong>House Stark</strong>. A new "GoT" dictionary should be created and used in order to avoid those kind of misinterpretations. </p> <p>Also when talking about "Game of Thrones", words like <code>Kill</code> or <code>Death</code> can have positive or negative meaning depending on the sentence, a imaginary tweet like </p> <blockquote> <p>Finally Arya kills Cercei</p> </blockquote> <p>Should have a positive sentiment for <strong>Arya</strong> and a negative for <strong>Cercei</strong>, but this is where automatic techniques of sentiment classification show their limits. Not even a new dictionary could help in this case.</p> <p>The chart below shows the percentage of words classified with positive (score 1 or 2) or negative (score -1 or -2) for the two selected characters. We can clearly see that <strong>Sansa</strong> has more negative words than positive as expected while <strong>Whitewalkers</strong> is on the opposite side.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Balance-Positive-Negative-2.png" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p>Furthermore the overall sentiment for the two characters may be explained by the following graph. This shows for every sentence sentiment category (divided in bins <code>Positive</code>, <code>Neutral</code>, <code>Negative</code>), an histogram based on the count of words by single word sentiment. We can clearly see how words with positive sentiment are driving the <code>Positive</code> sentence category (and the opposite).</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Positive-sentence-positive-Words-1.png" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p>Finally the last graph shows the words that have mostly impacted the overall positive and negative sentiment for both characters.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/08/Top-Words.png" alt="How was Game Of Thrones S07 E05? Tweet Analysis with Kafka, BigQuery and Tableau"></p> <p>We can clearly see that <strong>Sansa</strong> negative sentiment is due to <code>Stark</code>, <code>Hate</code> and <code>Victim</code>. On the other side <strong>Whitewalkers</strong> positive sentiment is due to words like <code>King</code> (Night King is the character) and <code>Finally</code> probably due to the battle coming in the next episode. As you can see there are also multiple instances of the <code>King</code> word due to different punctualization preceeding or following the world. I stated above that the BigQuery SQL extracting the words via the <code>SPLIT</code> function was very basic, we can now see why. Little enhancements in the function would aggregate properly the words.</p> <p>Are you still there? Do you wonder what's left? Well there is a whole set of analysis that can be done on top of this dataset, including checking the sentiment behaviour by time during the live event or comparing this week's dataset with the next episode's one. The latter may happen next week so... <a href="mailto:info+ftGot@rittmanmead.com">Keep in touch</a>!</p> <p>Hope you enjoyed the analysis... otherwise... Dracarys!</p> <p><center><iframe src="https://giphy.com/embed/fsHMfeK2YWfeM" width="480" height="266" frameborder="0" class="giphy-embed" allowfullscreen></iframe><p><a href="https://giphy.com/gifs/got-spoiler-dracarys-fsHMfeK2YWfeM">via GIPHY</a></p></center></p> Francesco Tisiot a00cb72b-7498-4226-840f-66db47335d98 Thu Aug 17 2017 11:54:42 GMT-0400 (EDT) Fun with Oracle Analytics Cloud (OAC): Creating Essbase Cubes http://blog.performancearchitects.com/wp/2017/08/16/fun-with-oracle-analytics-cloud-oac-creating-essbase-cubes/ <p>Author: Andrew Tauro, Performance Architects</p> <p>Just like there are multiple ways to skin a cat, there’s more than one way to create an Essbase cube in <a href="https://cloud.oracle.com/en_US/oac">Oracle Analytics Cloud (OAC)</a>. While the best way to migrate on-premise <a href="https://docs.oracle.com/cloud/latest/analytics-cloud/ESSUG/overview.htm#ESSUG-getting_started_1">Essbase cubes</a> to OAC is to use the standalone “EssbaseLCMUtility” tool, to create cubes from scratch there are three ways that I have used so far: use the Web UI; build an Application Workbook by hand (or from a template); or use the Cube builder. The latter two are the focus of this blog.</p> <p>The Application Workbook is essentially a Microsoft Excel workbook that contains a predefined set of tabs, with the contents arranged in a predetermined manner. What that means is the workbook has a bunch of tabs like this:</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at1.png"><img class="alignnone size-medium wp-image-2115" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at1-300x21.png" alt="" width="300" height="21" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at1-300x21.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at1-768x54.png 768w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at1-1024x73.png 1024w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at1-624x44.png 624w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Each of these tabs serves a particular purpose, but from what I can tell only the first two are a “must” when creating the application:</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at2.png"><img class="alignnone size-medium wp-image-2114" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at2-300x136.png" alt="" width="300" height="136" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at2-300x136.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at2-768x349.png 768w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at2-1024x466.png 1024w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at2-624x284.png 624w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at2.png 1163w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>The “Essbase.Cube” worksheet defines the application and database names, which are required information when creating a cube. In addition, this sheet is used to define the cube dimensions:</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at3.png"><img class="alignnone size-medium wp-image-2113" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at3-300x161.png" alt="" width="300" height="161" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at3-300x161.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at3-768x413.png 768w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at3-624x335.png 624w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at3.png 994w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>“Cube.Settings” and “Cube.Generations” define properties of the Essbase database. The former defines some crucial cube information, such as whether it is going to be a <a href="https://en.wikipedia.org/wiki/Essbase">block storage option (BSO) or aggregate storage option (ASO)</a> cube, and if it will allow for duplicate member names.</p> <p>The remaining tabs populate the dimensions (“Dim” tabs), data (“Data” tabs) and/or define calculation scripts (“Calc” tabs) for the cube. If you are familiar with building Essbase dimensions or data files and/or writing calc scripts, these will look very familiar.</p> <p>For those of you who are not familiar with these items, there is the option of using the Cube Designer.</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at4.png"><img class="alignnone size-medium wp-image-2112" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at4-300x76.png" alt="" width="300" height="76" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at4-300x76.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at4-768x195.png 768w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at4-1024x260.png 1024w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at4-624x158.png 624w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at4.png 1203w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>This is an add-in for Microsoft Excel that you can download via Smart View from your OAC instance.</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at5.png"><img class="alignnone size-medium wp-image-2111" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at5-160x300.png" alt="" width="160" height="300" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at5-160x300.png 160w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at5.png 437w" sizes="(max-width: 160px) 100vw, 160px" /></a> <a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at6.png"><img class="alignnone size-medium wp-image-2110" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at6-155x300.png" alt="" width="155" height="300" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at6-155x300.png 155w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at6.png 435w" sizes="(max-width: 155px) 100vw, 155px" /></a></p> <p>The “Cube Designer” menu item provides tabbed screens for creating the application workbook. Walking through the tabs allows to setup the application workbook, and the “To Sheet” and “From Sheet” options facilitate reading from, and pushing to, the active workbook:</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at7.png"><img class="alignnone size-medium wp-image-2109" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at7-300x143.png" alt="" width="300" height="143" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at7-300x143.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at7-768x367.png 768w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at7-1024x490.png 1024w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at7-624x298.png 624w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/at7.png 1301w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Once complete, the cube can be created via the web user interface as an import.</p> <p>This has greatly reduced the complexity of creating Essbase cubes, and is just one of the ways that OAC is redefining the way we perform analytics using Essbase.</p> <p>As we explore the capabilities of OAC, we will continue to share our thoughts with you, so stay tuned. While you take this journey with us, if you have any questions on this, feel free to send us a note at <a href="mailto:communications@performancearchitects.com">communications@performancearchitects.com</a> and we will be in touch.</p> Melanie Mathews http://blog.performancearchitects.com/wp/?p=2108 Wed Aug 16 2017 05:20:55 GMT-0400 (EDT) #datavault 2.0, Hashes, one more time http://danlinstedt.com/allposts/datavaultcat/datavault-2-0-hashes-one-more-time/ A fact based look at Hashing and Sequences and Collision Strategies in Data Vault 2.0 Standards. Dan Linstedt http://danlinstedt.com/?p=2864 Tue Aug 15 2017 12:52:25 GMT-0400 (EDT) #datavault 2.0 and Hash Keys, Again? http://danlinstedt.com/allposts/datavaultcat/datavault-2-0-and-hash-keys-again/ Yet another dive in to Hash Keys and Data Vault 2.0 Dan Linstedt http://danlinstedt.com/?p=2861 Mon Aug 14 2017 15:07:12 GMT-0400 (EDT) FDMEE Custom Reports: Query Definition http://beyond-just-data.blogspot.com/2017/08/fdmee-custom-reports-query-definition.html <a href="https://3.bp.blogspot.com/-XHYgA5rigSk/WD5qSOQJczI/AAAAAAAAKgk/KAyyUnQ8WbQrUQKqmqaPtutuPjlGyJxHwCLcB/s1600/1-copy.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"></span></a><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">When creating a new custom report one first needs data and the Query Definition is the starting point in the process.&nbsp; As I wrote in the first post of this series the report engine for FMDEE Reports is Oracle BI Publisher.&nbsp; The query engine within BI Publisher generates and XML file and that XML file is joined up with the Layout Template and Translation Template to produce the Report output.</span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><span style="clear: left; float: left; font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="118" src="https://4.bp.blogspot.com/-JyoVhxsCdss/WKHc5FnUGTI/AAAAAAAAK2w/9Kvy656yGdI9HyxZguibSqqm3SlM1YoKACLcB/s400/query.png" width="400" /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"></span><br /></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">As with most of the ERP/EPM systems on the market the database supporting the </span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">application can be quite intimidating and the vast number of tables confusing.&nbsp; Fortunately most custom reports are derivatives of existing reports and therefore using the&nbsp;existing&nbsp;Query Definitions as a starting point can be beneficial in learning the tables used and their purpose.</span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">For this exercise I am interested in a report to list Locations and the Data Load Rules associated with that Location.&nbsp;</span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">In the Query Definition section there is a Query that looks similar to what I need. &nbsp;I will copy the SQL from the 3 text boxes. &nbsp;The three different boxes allow for the use of inline parameters from prompts in the WHERE clause.</span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><span style="clear: left; float: left; font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="230" src="https://3.bp.blogspot.com/-XHYgA5rigSk/WD5qSOQJczI/AAAAAAAAKgk/KAyyUnQ8WbQrUQKqmqaPtutuPjlGyJxHwCLcB/s400/1-copy.png" width="400" /></span><span style="clear: left; float: left; font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; margin-bottom: 1em; margin-right: 1em;"><br /></span></div><div style="text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Since my FDMEE Repository is on Oracle Database I will paste the SQL into SQL Developer. &nbsp;Using [Ctrl] [F7] keys I can view the SQL in a nicely formatted layout.</span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><a href="https://2.bp.blogspot.com/-casgbzesQlU/WD5qRzrbPzI/AAAAAAAAKgg/JKL2-MUtXsABuHH667Rc--qO1E3Fgz9sQCEw/s1600/2-FormattedSQL.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" height="400" src="https://2.bp.blogspot.com/-casgbzesQlU/WD5qRzrbPzI/AAAAAAAAKgg/JKL2-MUtXsABuHH667Rc--qO1E3Fgz9sQCEw/s400/2-FormattedSQL.png" width="343" /></a></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Since I like to work in a Graphical view of my queries I will switch to the Query Builder view. This allows me to see the tables and joins easier.</span></div><div style="text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; margin-left: 1em; margin-right: 1em; text-align: center;"></span></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;"><a href="https://2.bp.blogspot.com/-3bgshwjaDCY/WD5qRyMSCNI/AAAAAAAAKgc/Qp1jX3TPrAwv5wibtydzF57n2Q0n38x-QCEw/s1600/3-QueryBuilder.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><img border="0" height="343" src="https://2.bp.blogspot.com/-3bgshwjaDCY/WD5qRyMSCNI/AAAAAAAAKgc/Qp1jX3TPrAwv5wibtydzF57n2Q0n38x-QCEw/s400/3-QueryBuilder.png" width="400" /></span></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-3bgshwjaDCY/WD5qRyMSCNI/AAAAAAAAKgc/Qp1jX3TPrAwv5wibtydzF57n2Q0n38x-QCEw/s1600/3-QueryBuilder.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"></span></a></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"></span><br /></span><br /><div style="margin-bottom: .0001pt; margin: 0in;"><span style="font-family: &quot;arial&quot; , sans-serif;">The following image show some of the more frequently used tables within the FDMEE database/schema and what information they contain.</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"></span><br /></span></div><div class="separator" style="clear: both; text-align: left;"><a href="https://4.bp.blogspot.com/-ocH2AGw2PSs/WKHbWzJmikI/AAAAAAAAK2k/z3JRbReQj2EXaQQq6CTqqaU4x61u_4K6wCLcB/s1600/Tabes.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="174" src="https://4.bp.blogspot.com/-ocH2AGw2PSs/WKHbWzJmikI/AAAAAAAAK2k/z3JRbReQj2EXaQQq6CTqqaU4x61u_4K6wCLcB/s400/Tabes.png" width="400" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div style="margin-bottom: .0001pt; margin: 0in;"><span style="font-family: &quot;arial&quot; , sans-serif;">So now that I have a better understanding of the tables.<o:p></o:p></span></div><div style="margin-bottom: .0001pt; margin: 0in;"><br /></div><div style="margin-bottom: .0001pt; margin: 0in;"><span style="font-family: &quot;arial&quot; , sans-serif;">The report I want to produce is Data Load Rules per location and since the Data Load Rules are tied to Category I would like to know that as well.<o:p></o:p></span></div><div style="margin-bottom: .0001pt; margin: 0in;"><br /></div><div class="separator" style="clear: both;"></div><div style="margin-bottom: .0001pt; margin: 0in;"><span style="font-family: &quot;arial&quot; , sans-serif;">Since my report only needs 3 columns I will create a new query in SQL Developer and drag the AIF_BALANCE_RULES, TPOVPARTITION and TPOVCATEGORY tables into the Query Builder and Join them as shown below.&nbsp; Then I will select the columns I am interested in from the tables and finally I will set the sort order.&nbsp; One tip with Reports it is faster to sort the data on query rather than within the report layout.<o:p></o:p></span></div><div style="margin-bottom: .0001pt; margin: 0in;"><span style="font-family: &quot;arial&quot; , sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><a href="https://2.bp.blogspot.com/-zVZ1UkruW0c/WD5qSCTAuDI/AAAAAAAAKgo/_U-TYWwZmT4_4KnWx0KdqsDdboVMiuI4gCEw/s1600/4-QueryBuilder.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><img border="0" height="293" src="https://2.bp.blogspot.com/-zVZ1UkruW0c/WD5qSCTAuDI/AAAAAAAAKgo/_U-TYWwZmT4_4KnWx0KdqsDdboVMiuI4gCEw/s400/4-QueryBuilder.png" width="400" /></span></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-XHYgA5rigSk/WD5qSOQJczI/AAAAAAAAKgk/KAyyUnQ8WbQrUQKqmqaPtutuPjlGyJxHwCLcB/s1600/1-copy.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"></span></a></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"></span><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"></span></span><br /><div style="margin-bottom: .0001pt; margin: 0in;"><span style="font-family: &quot;arial&quot; , sans-serif;">I will need to switch back to the Worksheet view in order to collect the SQL for my query.<o:p></o:p></span><br /><span style="font-family: &quot;arial&quot; , sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><a href="https://3.bp.blogspot.com/-Kg4jiZ9LZP8/WD5qSJcSC6I/AAAAAAAAKgs/9XLkGi9_2QsNTR5qDatLV3wi13KvrzV4gCEw/s1600/5-SQL.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><img border="0" height="262" src="https://3.bp.blogspot.com/-Kg4jiZ9LZP8/WD5qSJcSC6I/AAAAAAAAKgs/9XLkGi9_2QsNTR5qDatLV3wi13KvrzV4gCEw/s400/5-SQL.png" width="400" /></span></a></div><br /><div class="separator" style="clear: both; text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"></span></span></div><div class="separator" style="margin-bottom: .0001pt; margin: 0in;"><span style="font-family: &quot;arial&quot; , sans-serif;">In FDMEE I will create a new query definition named Location Data Load Rules and paste into the 2 text areas; the SELECT statement up to the ORDER BY into the Select Clause and paste the ORDER BY statement into the Group By/Order By Clause.<o:p></o:p></span></div><div class="separator" style="margin-bottom: .0001pt; margin: 0in;"><span style="font-family: &quot;arial&quot; , sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><a href="https://3.bp.blogspot.com/-ZR8hDmFoUXA/WD5qScBf2EI/AAAAAAAAKgw/0KwRBjfe6Zg__w_hD5QG6U-SEhMqbuOgACEw/s1600/6-Paste-NewQueryDef.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><img border="0" height="157" src="https://3.bp.blogspot.com/-ZR8hDmFoUXA/WD5qScBf2EI/AAAAAAAAKgw/0KwRBjfe6Zg__w_hD5QG6U-SEhMqbuOgACEw/s400/6-Paste-NewQueryDef.png" width="400" /></span></a></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"></span><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"></span></span><br /><div style="margin-bottom: .0001pt; margin: 0in;"><span style="font-family: &quot;arial&quot; , sans-serif;">Save the Definition and then click the Validate Query to make sure that FDMEE does not have any issues with the query.<o:p></o:p></span><br /><span style="font-family: &quot;arial&quot; , sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><a href="https://1.bp.blogspot.com/-D3TywKRwZCw/WD5qSSm9_2I/AAAAAAAAKg0/WnsLCIgCCzUwJl311ei9xHDioDqCp8DUgCEw/s1600/7-Validate.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><img border="0" height="170" src="https://1.bp.blogspot.com/-D3TywKRwZCw/WD5qSSm9_2I/AAAAAAAAKg0/WnsLCIgCCzUwJl311ei9xHDioDqCp8DUgCEw/s400/7-Validate.png" width="400" /></span></a></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"></span><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"></span><br /></span><br /><div class="separator" style="margin-bottom: .0001pt; margin: 0in;"><span style="font-family: &quot;arial&quot; , sans-serif;">In order to work with the BIPublisher MSWord Template Builder I will need a sample data file. The Query Definition interface has a Generate XML button. Clicking this button allows me to create the sample XML data file. Typically it will return 25 rows of data.<o:p></o:p></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot;;"></span><br /></span><br /><div class="separator" style="clear: both; text-align: left;"><a href="https://4.bp.blogspot.com/-uGPSJ3_vZK8/WD5qSV_k3PI/AAAAAAAAKg4/8OL78t801v41Nm7ehzBREvAkWyA6n6vCQCEw/s1600/8-GenerateXML.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><img border="0" height="206" src="https://4.bp.blogspot.com/-uGPSJ3_vZK8/WD5qSV_k3PI/AAAAAAAAKg4/8OL78t801v41Nm7ehzBREvAkWyA6n6vCQCEw/s400/8-GenerateXML.png" width="400" /></span></a></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="margin-bottom: .0001pt; margin: 0in;"><span style="font-family: &quot;arial&quot; , sans-serif;">When I open the file I can see the data structure of the query. In the case the result of&nbsp;my simple query there is the Location name, the Category name and the Data Load Rule name for each row of data.&nbsp;<o:p></o:p></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"></span><br /></span><br /><div class="separator" style="clear: both; text-align: left;"><a href="https://3.bp.blogspot.com/-ArV4mTqAeug/WJjyBXYYzOI/AAAAAAAAK14/Yxp1gZ7ujtkEqGrMD_gVVMF4eh-9OpkMQCLcB/s1600/xml_output.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><img border="0" height="286" src="https://3.bp.blogspot.com/-ArV4mTqAeug/WJjyBXYYzOI/AAAAAAAAK14/Yxp1gZ7ujtkEqGrMD_gVVMF4eh-9OpkMQCLcB/s320/xml_output.png" width="320" /></span></a></div><br /><div style="margin-bottom: .0001pt; margin: 0in;"><span style="font-family: &quot;arial&quot; , sans-serif;">Now that have a sample data set I can create the layout for my report. But that is the topic for another post.</span><b><span style="font-family: &quot;arial&quot; , sans-serif; font-size: 10.0pt;"><o:p></o:p></span></b></div> Wayne D. Van Sluys tag:blogger.com,1999:blog-7768091516190336427.post-7642577877769691734 Fri Aug 11 2017 15:26:00 GMT-0400 (EDT) Projection Process Case Study for Oracle Planning and Budgeting Cloud Service (PBCS) http://blog.performancearchitects.com/wp/2017/08/09/projection-process-case-study-for-oracle-planning-and-budgeting-cloud-service-pbcs/ <p>Author: Mike McLean, Performance Architects</p> <p>One of the requirements during a recent Performance Architects <a href="http://www.oracle.com/us/solutions/cloud/planning-budgeting/overview/index.html">Oracle Planning and Budgeting Cloud Service (PBCS)</a> implementation project was to create a solution for their projection process.   During discussions with the Budget Office, we learned that requirements included:</p> <ul> <li>Projections occur three times a year: <ul> <li>After Q1 actuals are complete</li> <li>After Q2 actuals are complete</li> <li>After Q3 actuals are complete</li> </ul> </li> <li>Historical actuals and budget data must be used to seed the projection scenario</li> <li>Revenues need to be seeded using one methodology, while expenses are seeded using another methodology</li> <li>After the projection scenario is seeded, additional adjustments may need to be made by department, fund, program, etc.</li> </ul> <p>The calculation to seed the “Projection” scenario contains several components:</p> <ol> <li>Q1 revenue and expense actuals were copied to “Q1 Projection&#8221;:<br /> <a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/07/Projection-Process-1.png"><img class="alignnone size-medium wp-image-2102" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/07/Projection-Process-1-300x191.png" alt="" width="300" height="191" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/07/Projection-Process-1-300x191.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/07/Projection-Process-1.png 404w" sizes="(max-width: 300px) 100vw, 300px" /></a></li> </ol> <ol start="2"> <li>Using prior year actuals, “% of YearTotal” was calculated for all revenue accounts for each month. See the exampl