Embedding dynamic filters into Custom SQL-based Cognos reports is necessary such that we can define where the filter should exist. This report shows why using the Cognos GUI for filtering is not wise, and how to properly use macros in your code.
Abis Over IP/Abis Optimization on-site Workshopetkisizcom
Recognize new system architecture
Understand the dimensioning rules using the Abis planning tools
Activate the Abis over IP
Activate the Abis Optimization
Use the Performance Monitoring
Abis Over IP/Abis Optimization on-site Workshopetkisizcom
Recognize new system architecture
Understand the dimensioning rules using the Abis planning tools
Activate the Abis over IP
Activate the Abis Optimization
Use the Performance Monitoring
The Long Term Evolution (LTE) is the latest step in an advancing series of mobile telecommunications systems. In this paper, authors show interest on the security features and the cryptographic algorithms used to ensure confidentiality and integrity of the transmitted data. A closer look is taken upon EPS confidentiality and integrity algorithms. The authors also defined AKA, AS and NAS security and key derivations during normal Attach process and Handover also.
It is a handbook of UMTS/WCDMA call flows for PS services.
This document is originally edited by Justin MA and it is free to share to everyone who are interested.
All reference/resource are from internet. If there is any copy-right issue, please kindly inform Justin by majachang@gmail.com.
Thanks for your reading!
This basic presentation / video looks at SIM (Subscriber Identity Module) card, its evolution and what is the relation between SIM and UICC (Universal Integrated Circuit Card). It also explains different form factors like 2FF, 3FF, 4FF and MFF2 and UICC contents briefly.
Finally, we look at embedded SIM (eSIM), integrated SIM (iSIM), eUICC Profiles and profile switching via remote provisioning functions.
All our #3G4G5G slides and videos are available at:
Videos: https://www.youtube.com/3G4G5G
Slides: https://www.slideshare.net/3G4GLtd
5G Page: https://www.3g4g.co.uk/5G/
Free TrainingVideos: https://www.3g4g.co.uk/Training/
Embedding dynamic filters into Custom SQL-based Cognos reports is necessary such that we can define where the filter should exist. This report shows why using the Cognos GUI for filtering is not wise, and how to properly use macros in your code.
The Long Term Evolution (LTE) is the latest step in an advancing series of mobile telecommunications systems. In this paper, authors show interest on the security features and the cryptographic algorithms used to ensure confidentiality and integrity of the transmitted data. A closer look is taken upon EPS confidentiality and integrity algorithms. The authors also defined AKA, AS and NAS security and key derivations during normal Attach process and Handover also.
It is a handbook of UMTS/WCDMA call flows for PS services.
This document is originally edited by Justin MA and it is free to share to everyone who are interested.
All reference/resource are from internet. If there is any copy-right issue, please kindly inform Justin by majachang@gmail.com.
Thanks for your reading!
This basic presentation / video looks at SIM (Subscriber Identity Module) card, its evolution and what is the relation between SIM and UICC (Universal Integrated Circuit Card). It also explains different form factors like 2FF, 3FF, 4FF and MFF2 and UICC contents briefly.
Finally, we look at embedded SIM (eSIM), integrated SIM (iSIM), eUICC Profiles and profile switching via remote provisioning functions.
All our #3G4G5G slides and videos are available at:
Videos: https://www.youtube.com/3G4G5G
Slides: https://www.slideshare.net/3G4GLtd
5G Page: https://www.3g4g.co.uk/5G/
Free TrainingVideos: https://www.3g4g.co.uk/Training/
Embedding dynamic filters into Custom SQL-based Cognos reports is necessary such that we can define where the filter should exist. This report shows why using the Cognos GUI for filtering is not wise, and how to properly use macros in your code.
These slides contain the concept of Macros. Macros in C Language are very powerful and used mostly to reduce the time and size of a code. It also allows reusing the code
JIMS BCA Curriculum includes Macros in Unit V of Programming Using C Subject.
JIMS provides an updated Curriculum and includes the concepts in depth.
Admission to BCA is Open.
https://www.jimssouthdelhi.com/admission-procedure.html
Assignment 13/assg-13.cppAssignment 13/assg-13.cpp/**
* @author Jane Programmer
* @cwid 123 45 678
* @class COSC 2336, Spring 2019
* @ide Visual Studio Community 2017
* @date April 8, 2019
* @assg Assignment 13
*
* @description Assignment 13 Dictionaries and Hash table
* implementations.
*/
#include<cassert>
#include<iostream>
#include"KeyValuePair.hpp"
#include"Employee.hpp"
#include"HashDictionary.hpp"
usingnamespace std;
/** main
* The main entry point for this program. Execution of this program
* will begin with this main function.
*
* @param argc The command line argument count which is the number of
* command line arguments provided by user when they started
* the program.
* @param argv The command line arguments, an array of character
* arrays.
*
* @returns An int value indicating program exit status. Usually 0
* is returned to indicate normal exit and a non-zero value
* is returned to indicate an error condition.
*/
int main(int argc,char** argv)
{
// -----------------------------------------------------------------------
cout <<"----- testing Employee record and KeyValuePair class -----------"<< endl;
KeyValuePair<int, string> pair(42,"blue");
cout <<"test key: "<< pair.key()<< endl;
assert(pair.key()==42);
cout <<"test value: "<< pair.value()<< endl;
assert(pair.value()=="blue");
int id =3;
Employee e(id,"Derek Harter","1234 Main Street, Commerce TX",12345.67);
cout << e << endl;
assert(e.getId()==3);
assert(e.getName()=="Derek Harter");
cout << endl;
// -----------------------------------------------------------------------
cout <<"-------------- testing quadratic probing -----------------------"<< endl;
constint TABLE_SIZE =7;
HashDictionary<int,Employee> dict(TABLE_SIZE, EMPTY_EMPLOYEE_ID);
cout <<"Newly created hash dictionary should be empty, size: "<< dict.size()<< endl;
assert(dict.size()==0);
int probeIndex =0;
//cout << "probe index: " << probeIndex
// << " returned probe value: " << dict.probe(id, probeIndex)
// << endl;
//assert(dict.probe(id, probeIndex) == 2);
probeIndex =1;
//cout << "probe index: " << probeIndex
// << " returned probe value: " << dict.probe(id, probeIndex)
// << endl;
//assert(dict.probe(id, probeIndex) == 5);
probeIndex =5;
//cout << "probe index: " << probeIndex
// << " returned probe value: " << dict.probe(id, probeIndex)
// << endl;
//assert(dict.probe(id, probeIndex) == 37);
cout << endl;
// -----------------------------------------------------------------------
cout <<"-------------- testing mid-square hashing ----------------------"<< endl;
// the following asserts will only work for 32 bit ints, leave asserts
// commented out if you have 64 bit asserts
cout <<"Assuming 32 bit (4 byte) ints for these tests: "<<sizeof(int)<< endl;
assert(sizeof(int)==4);
//id = 3918;
//cout << "hash key: " << id
// << " returned hash value: " << dict.hash(id)
// << endl; ...
In this page, we will learn about the basics of OOPs. Object-Oriented Program...Indu32
In this page, we will learn about the basics of OOPs. Object-Oriented Programming is a paradigm that provides many concepts, such as inheritance, data binding, polymorphism, etc.
import java.util.Scanner;Henry Cutler ID 1234 7202.docxwilcockiris
import java.util.Scanner;
/*
Henry Cutler ID 1234 7/20/2015
Assignment #5, 3 features in 1 program
Solution
for Assignment#5 COP2800
Pseudocode:
Program has three features, all in a single program that are user selectable.
Prompt with options and get user choice inside a while statement ( true )
If 1 is entered:
Using a while and for loop, print out the ASCII table from ! to ~.
If 2 is entered:
Prompt the user for number of times to flip for head or tails using the random method. Count number of each and when the request times are done, print out the results.
If 3 is entered:
Prompt the user for a strings and print back the count of vowels and letters
Any other input entered program will exit using a break statement, otherwise loops back to prompt user for feature selection.
*/
public class Module5 {
public static void main(String[] args) {
// prompt the user
System.out.println("Welcome to Henry\'s 3 in 1 Programming Assignment for Module 5\n");
// create Scanner Object
Scanner input = new Scanner(System.in);
// loop until break
while(true){
// new lines for readability
System.out.print("\n");
// Prompt user for choices
System.out.print("Enter 1 for ASCII Table \nEnter 2 for Heads or Tails\nEnter 3 for Count Vowels & Letters\nAny other input will exit");
int choice = input.nextInt();
// Consume newline left-over
input.nextLine();
// first feature
if(choice == 1){
// start value is !
int value = (int) '!';
// newline for formating
System.out.println("You Selected ASCII Table!\n");
// start at ~ which is 33 decimal
while( value <= '~')
{
// print out 20 in a line
for( int count = 0; count < 20; count ++ ){
if( value <= '~'){
// print single value
System.out.print( (char) value++ );
}
else {
// break when we are at last char to print
break;
}
}
// New line every 10
System.out.print("\n");
}
// New line at exit
System.out.print("\n");
}
else if(choice == 2){
// Prompt user
System.out.println("You Selected Head or Tails!");
System.out.println("\nHow many flips would you like to try?");
// get value
int count = input.nextInt();
// clear
input.nextLine();
int headCount = 0;
int tailCount = 0;
// run for a count provided by user
for (int i = 0; i < count; i++) {
// get random number
if (Math.random() > 0.5){
// increment heads
headCount++;
}
else {
// increment tails
tailCount++;
}
}
System.out.println("Head count: " + headCount + " tail count: " + tailCount);
}
else if(choice == 3){
// Prompt user
Sys.
Custom Star Creation for Ellucain's Enterprise Data WarehouseBryan L. Mack
Plugging in new fact & dimension tables to Ellucain's EDW product can be a daunting task. This presentation is an example of a custom star I've created to track employee benefit deductions at a detailed level for trend analysis. The purpose of this presentation is a guideline of how to plug any star into their product using 100% custom code.
Extending the Admin UI: Proactively Preventing Poor BPRA Load/Refresh Perform...Bryan L. Mack
Enhancing Ellucian's Admin UI tool to allow Oracle Chains functionality as well as automatic statistics collections on poorly performing ETL mappings. Presented along with Eric Boyce at Ellucian Live in New Orleans - April 2015.
Oracle's Listagg Function - Uses and Duplicate RemovalBryan L. Mack
Explaining how and why to use the Listagg analytic function delivered in Oracle 11g R2 for pivoting multiple rows' data onto one line. Additionally, tips on how to eliminate duplicate values in a Listagg by using distinct or regular expressions, and writing a function to do all the work for you.
EDW PK Violation Troubleshooting Made EasyBryan L. Mack
Backtracking key-based values from the EDW to Banner by way of the ODS can be a cumbersome task; we have streamlined this by developing reusable code in the form of an Oracle function to dynamically identify redundant records.
SRP Implementation Success in a Complex EnvironmentBryan L. Mack
Colorado Community College System went live with SRP in early 2015. Bringing this to fruition was a large undertaking with many challenges. Among others, these include Banner data errors, cleansing customizations, and MEP compatibility. Additionally, we will discuss the approaches we took to tune our nightly SRP refresh down from 57 hours to 3.5 hours.
Oracle's ListAgg Function & Pertinent UseBryan L. Mack
There is more than one way to skin a cat, and there is more than one way to pivot a table in Oracle. With Oracle release 11gR2, you can dynamically pivot your data sets for undetermined amounts of rows. This quick presentation outlines how to use the ListAgg function.
ODS Data Sleuth: Tracking Down Calculated Fields in BannerBryan L. Mack
Ellucian's Banner product doesn't always store the values you see within its database. Rather, Banner can calculate values on the fly. This presents challenges in moving these pieces of data from the Banner OLTP over to the Operational Data Store (Data Warehouse). This presentation will discuss best practices in doing this, and will walk through a few case studies.
Presented at Ellucian Live conference April 7, 2014 in Anaheim, California
Explore our comprehensive data analysis project presentation on predicting product ad campaign performance. Learn how data-driven insights can optimize your marketing strategies and enhance campaign effectiveness. Perfect for professionals and students looking to understand the power of data analysis in advertising. for more details visit: https://bostoninstituteofanalytics.org/data-science-and-artificial-intelligence/
Data Centers - Striving Within A Narrow Range - Research Report - MCG - May 2...pchutichetpong
M Capital Group (“MCG”) expects to see demand and the changing evolution of supply, facilitated through institutional investment rotation out of offices and into work from home (“WFH”), while the ever-expanding need for data storage as global internet usage expands, with experts predicting 5.3 billion users by 2023. These market factors will be underpinned by technological changes, such as progressing cloud services and edge sites, allowing the industry to see strong expected annual growth of 13% over the next 4 years.
Whilst competitive headwinds remain, represented through the recent second bankruptcy filing of Sungard, which blames “COVID-19 and other macroeconomic trends including delayed customer spending decisions, insourcing and reductions in IT spending, energy inflation and reduction in demand for certain services”, the industry has seen key adjustments, where MCG believes that engineering cost management and technological innovation will be paramount to success.
MCG reports that the more favorable market conditions expected over the next few years, helped by the winding down of pandemic restrictions and a hybrid working environment will be driving market momentum forward. The continuous injection of capital by alternative investment firms, as well as the growing infrastructural investment from cloud service providers and social media companies, whose revenues are expected to grow over 3.6x larger by value in 2026, will likely help propel center provision and innovation. These factors paint a promising picture for the industry players that offset rising input costs and adapt to new technologies.
According to M Capital Group: “Specifically, the long-term cost-saving opportunities available from the rise of remote managing will likely aid value growth for the industry. Through margin optimization and further availability of capital for reinvestment, strong players will maintain their competitive foothold, while weaker players exit the market to balance supply and demand.”
1. S I T U A T I O N A L E X A M P L E S A N D P R O P E R
S Y N T A X F O R V A R I O U S C A S E S
B R Y A N L . M A C K
Cognos Macros
2. Why Do We Need Macros?
In Cognos, we dynamically filter data based on prompt
values input by the user.
When using Custom SQL for a report’s source, Cognos
provides filters for us to filter data.
But what exactly is it filtering?
3. Why Do We Need Macros?
Refer to the following 2 SQL scripts in SQL Developer:
Query 1:
Query 2:
The only difference in Query2 is the academic_period filter in the nested query; Query2
correctly filters our result set, as our desired output count is 2524.
4. Why Do We Need Macros?
Our first SQL Script is embedded to Cognos as a
Query, minus the academic period filter:
Then a filter is added to the query via Cognos
5. Why Do We Need Macros?
If we use term 201320, and export our result set to
Excel, we can see that we have 12148 results (the top 2
rows in Excel are header rows)
As we mentioned earlier, this is not our desired output.
6. Why Do We Need Macros?
Here is the SQL Cognos has generated:
The academic_period filter is being placed incorrectly within the query.
7. Why Do We Need Macros?
Let’s revisit slide 3’s results:
Query 1:
Query 2:
Shouldn’t we be limiting this to 2524 results? Cognos is not applying the
filter to the nested query
8. What is a Cognos Macro?
A Cognos macro allows you to place user-selected
prompt values wherever you’d like within custom SQL.
The macro allows you to manipulate the prompt values
where necessary, and use them for more precise
filtering and processing.
In our example, we want the filter to be placed in the
nested query rather than the outmost query.
9. Proof of Concept
We can filter the prompt values wherever we desire, in this case, within
the nested query:
We can see we now return 2524 rows
The macro worked and our results are correctly filtered. You can see the
macro in the SQL – but how does it work?
10. Macro Syntax
#prompt(ParameterName,Datatype,Defaultvalue,PreText,Sou
rce,PostText)#
ParameterName: Mandatory. This is what you named your prompt value’s parameter.
Datatype: Optional. The default value is ‘string’. Prompt values are validated. In the case of strings, the
provided value is enclosed in single quotation marks and embedded single quotation marks are doubled.
Defaultvalue: Optional. Value if the user makes no selection from an optional prompt
Pretext: Optional. Text to use before displaying the option the user inputs with the prompt.
Example: This is the open-parentheses when using #promptmany for an IN statement (we’ll get
to that in a bit)
Source: Optional. The value(s) selected in the prompt
Posttext: Optional. Text to use after displaying the option the user inputs with the prompt.
Example: This is the close-parentheses when using #promptmany for an IN statement
11. Ways I’ll Demonstrate Macros
Using Oracle join syntax, I will demonstrate all of the
following macro scenarios.
Inner Join (Mandatory Prompts, Optional Prompts)
Outer Join (Mandatory Prompts, Optional Prompts)
Conditional Inner/Outer
If optional prompt used – use inner join
If optional prompt ignored – use outer join
Date/Date Range (Mandatory Prompts, Optional Prompts)
For use within a function
Equal Operator (=) vs IN statement
LIKE clause
HAVING clause
12. Ways I Will NOT Demonstrate Macros
Many!
There are countless combinations of inner join, outer join,
mandatory/optional prompts, single/multi select,
characters/numbers/dates, etc. etc. etc.
I can’t possibly demonstrate every way to do this, so I will
try to build up your base knowledge so you can figure out
scenarios I have not demonstrated.
I will also not be using ANSI join syntax, I will be using
Oracle join syntax
13. Inner-Join Mandatory Macro
Compare characters (=)
<field> = #prompt('parm_multi_source')#
Compare characters (in)
<field> IN (#promptmany('parm_carrier')#)
Real example from a Cognos report:
14. Inner-Join Optional Macro
Compare Characters (=)
<field> =
(#prompt('parm_carrier','string',’<field>’)#)
Let’s say the field is “myfield” and the user selects the prompt value “I Hate
Cognos”. The generated SQL will be:
myfield = ‘I Hate Cognos’
If the user does not use the optional prompt, the macro will generate the following
SQL:
myfield = myfield
Note: You can convert to “IN” by changing the equal to the word IN, and change “prompt” to
“promptmany”
16. Outer-Join Mandatory Macro
Follow the same logic as Inner-Join Mandatory, just
add the plus sign for Oracle’s outer-join logic
and s.spriden_id(+) = (#prompt(‘myparam')#)
and s.spriden_id(+) IN (#promptmany(‘myparam’)#)
18. Outer-Join Optional Macro
Compare Characters (=)
This will build out the entire AND statement for you
#prompt('parmYEAR','string','and 1=1','and pdrhioc_year(+) = ')#
Read this as: parmYear is my string parameter used in my prompt, when the user doesn’t use the prompt, insert
the text “and 1=1”, when the user uses the prompt insert “and pdrhioc_year(+) = “ followed by the value they
input.
Compare Characters (IN)
Option 1: build out the entire AND statement
#promptmany('parmYEAR','string','and 1=1','and pdrhioc_year(+) IN (','',')')#
The last 3 parameters are: (1) what to insert before the prompt value (2) The prompt value itself (3) what to insert
after the prompt value
Option 2: This requires the macro to be within an AND statement
and (a.account_entity_ind IN (#promptmany('ParameterEnt','string',sq('NotSelected'))#)
OR
('NotSelected') in (#promptmany('ParameterEnt','string',sq('NotSelected'))#)
)
The first part of the OR statement addresses the outer-join, the second part of the OR statement keeps the join in
tact when the optional prompt is not used.
20. Conditional Outer/Inner Join Macro
Requirements:
Have an optional prompt
If optional prompt selected, use inner join
If optional prompted ignored, use outer join
and ad.account_uid = sar.person_uid
#prompt('ParameterStuAttr', 'string', '(+)', '/*', '', '*/'
)#
21. Conditional Outer/Inner Join Macro
and ad.account_uid = sar.person_uid #prompt(
'ParameterStuAttr', --parameter name
'string', --DataType
'(+)', --Default text (when prompt ignored)
'/*', --text to precede the prompt text when used
'', --inputs the value selected in the prompt
'*/' --text to follow the value in prompt when used
)#
When the prompt is used, the macro puts /* comments around the prompt value it is
inserting*/, so the code processes nothing and leaves the join (account_uid =
person_uid) as inner.
When the prompt is NOT used, the macro places (+) after the hard-coded join, thus
creating an outer join
Reminder: I am using Oracle outer-join syntax
23. Date Prompts
Mandatory Inner:
Option 1: when using ISO 8601 date format
<field> = to_timestamp(#prompt(‘parm_date')#,'YYYY-
MM-DD"T"HH24:MI:SS.ff3')
Option 2: when using other date format standards
<field> = to_date(#prompt('parm_date')#,'yyyy-mm-dd')
25. Date Range
After exhaustive searching and testing, I have been
unable to find a way to extract the date range values
from a date range prompt with a macro, so you need to
create two individual date prompts (date_from and
date_to)….
26. Date Range Optional Prompt Example
(
(trunc(ad.entry_date) >=
trunc(to_date(#prompt('ParameterEntryFrom','string',sq('NotSelected'))#,'YYYY-MM-DD'))
OR
('NotSelected') = #prompt('ParameterEntryFrom','string',sq('NotSelected'))#
)
and
(trunc(ad.entry_date) <=
trunc(to_date(#prompt('ParameterEntryTo','string',sq('NotSelected'))#,'YYYY-MM-DD'))
OR
('NotSelected') = #prompt('ParameterEntryTo','string',sq('NotSelected'))#
)
)
This syntax uses an OR statement for each of the two parameters. The first
half of each OR block is for if the optional prompt is used, the second half is
for if the prompt is not used.
Note: I typed the code instead of screen shot here so I could color-code the parentheses and make the code
more readable for the example.
28. LIKE clause
To use a LIKE clause with optional, multi-select
prompt:
and eec.earn_code IN (select m.allowance from
mappings m where m.deductions like
('%'||#promptmany('parm_carrier','string','bd.carrier'
)#||'%'))
29. HAVING clause
Sometimes we need to filter on the aggregates, which
is used in SQL with the HAVING clause. Suppose we
have a prompt filtering on an aggregate amount that a
user types into a text prompt – how would we write
this in a macro? Add a caveat: this is an optional
prompt
having sum(ad.balance) >=
(#prompt('ParameterBalance','string','sum(ad.balance
)')#)
31. Function on top of Prompt Value
Sometimes we will get a prompt value and need to use
it to calculate the proper filter. In this case, we use the
prompt value (parm_s) as a parameter to a function
(odsmgr.f_get_pidm) to return a different value upon
which we will filter. We simply wrap the entire macro
within the function call:
And person_uid in
odsmgr.f_get_pidm(#promptmany('parm_s','string','p
erson_uid')#)
33. Wrapping Up
I hope you find this somewhat helpful.
Even if you aren’t using the Oracle RDBMS, you can
use these syntax examples to create macros that work
for you.
If you have other concrete examples you’d like me to
add to this presentation, feel free to let me know and
I’ll consider adding them here.