How to expose only certain levels of a hierarchy in SSAS? - ssas

So, this is an interesting problem:
I have hierarchies that are divided by a supplier. So for example, a geography hierarchy:
Client1 - Geography Hierarchy
Supplier1
Global
NA
Michigan
Europe
Supplier2
Global
NA
NJ
Is there a method in which I can expose only children of Supplier1 to certain users, and only children of Supplier2 to a different set of users? Specifically, a way without using roles?

Related

SRSS - Double GROUPS from same SQL request in two columns

I'm completly stuck as Im new to SSRS.
I have a set of data formed like this :
A "Selection" of rights concerns several "Companies"
A "Company" contains several "Conductors"
A "Selection" is accessible by several "Accessors"
My SQL results look like this :
SELECTION_NAME
COMPANY_NAME
CONDUCTORS_NAME
ACCESSORS_NAME
SELECT_A
COMPANY_A
John
Maggie
SELECT_A
COMPANY_A
John
Lucy
SELECT_A
COMPANY_A
John
Veronica
SELECT_A
COMPANY_A
Bob
Maggie
SELECT_A
COMPANY_A
Bob
Lucy
SELECT_A
COMPANY_A
Bob
Veronica
SELECT_A
COMPANY_AA
Luke
Maggie
SELECT_A
COMPANY_AA
Luke
Lucy
SELECT_A
COMPANY_AA
Luke
Veronica
as you can see, conductors are repeated as many time as there are accessors to the relative Selection.
I would like to have, in my SSRS report, a relatively same structure BUT I want that conductors, and associated accessors, listed each ONCE.
And, grouping by Selection > Company.
It could be something like this :
SELECTION_NAME
COMPANY_NAME
CONDUCTORS_NAME
ACCESSORS_NAME
SELECT_A
COMPANY_A
John
Maggie
Bob
Lucy
Veronica
COMPANY_AA
Luke
Maggie
Lucy
Veronica
I tried to create 2 datasets and use LOOKUP but if it list conductors only once, at each line, I got the first accessor repeated, no more lines, no other accessors names..
How can I display conductors in 3rd column, regardless number of accessors, grouping by SELECTION > Company AND only SELECTION accessors in the 4th one regardless conductors and also grouping by SELECTION > Company (even if accessors will be repeated on each companies lines of the same Selection) ?
Is this possible with SSRS ?
I'm using Microsoft Visual Studio 2010.
Thank you
You do not need to do anything complicated.
Create a dataset that gives you the table you showed at the start of your question.
Then add a tablix (table) to your report.
There are several ways to create the design but if you start by dragging accessor onto the detail row. Now, under the main design windows you will see a section with Row Groups listed, you will only have one called "Detailed", now you can either drag the Conductor just above the detail row group, or you can right-click the detail row group and add a parent group and select Conductor. Repeat to add row groups for the other two columns.
The SSRS documentation explains this process in more detail
https://learn.microsoft.com/en-us/sql/reporting-services/lesson-6-adding-grouping-and-totals-reporting-services?view=sql-server-ver15
He's quick GIF using your data to show you the basic steps. Notice that I drag the field names just above the existing row group name so that a blue line appears, then I release the mouse button.
I didn't find any ways to do it with only groups..
I created a subreport with accessors (linked to Selection > Company > Accessors).
I added it in a new column in the main report which only displays "Conductors" (Selection > Company > Conductors).
The only negative point is that it's really long charging report.. :/

How to check string similarity from two tables with multiple words input in BigQuery

I have two tables containing a list of company names. The first one would be the index table therefore the value inside would be clean and the format is consistent. The second table contains user-input company information and therefore there might be typos and format inconsistencies.
The first one (the index table) looks similar to this:
company_name | industry
Apple Inc Technology
Amazon Inc Retail
Kraft Heinz Food Processing
New York Life Insurance Company Insurance
Tesla Inc Tesla
Walmart Inc Retail
The second table (user input table) looks similar to this
company_name
Apple
Apple Inc.
Amazon, Inc
Kraft
New York Life
Tsla
Walmart
Notice that the second table does not have the industry column since the main goal would be to add the industry column to the second table, but since there is no key we can't simply join the two tables.
I think the first step would be to compare the similarity between the company_name and if it is similar enough we can just assume it is the same.
I have done some research and I think we would need to use Levenshtein Distance. Honestly, I am not very familiar with that method, but from my limited understanding, I wonder if it is applicable for inputs containing multiple words (e.g New York Life Insurance Company) or it is just effective for one-word input (e.g Apple).
Any suggestions or guidance would be greatly appreciated.

SSAS adding a custom attribute member to a cube for reporting

We have a cube with many measures and one of the main dimensions is a 'site' dimension with about a dozen sites.
I've been asked to add a 'site' that is basically ALL the sites.
They don't want the actual hierarchy,
I tried defining the ALLMEMBER attribute but they don't want another hierarchy level, they want an actual attribute member at the same level. They want the whole displayed as another site next to the actual site values
Example:
Right now with the all member attribute I can show
All Sites - 140
+
New York 45
Chicago 60
Boston 35
But what they want is this:
New York 45
Chicago 60
Boston 35
All Sites 140
I'm not sure where to go from here in BIDS. It's not really a named dataset, nor a calculated measure. It's really a custom attribute member.
You can define a calculated Dimension member in your cube calculation script.
You'd need something like:
Create member Site.site.AllSiteCalc AS SUM(Site.site.children,Measures.currentmember)
Once you've processed the cube this should become available in ssms,excel or to use in a query

How to cache sql queries, the result of which never change?

I have three tables - Countries, USRegions and Regions. For the different countries Regions holds a particular administrative division of the territory of that country. For the US these are the 50 states and Washington, D.C.. So again:
Countries - USA, Germany, Japan etc.
USRegions - Pacific, Middle Atlantic, South Atlantic (a total of 9 rows)
Regions - Virginia, Texas etc., but also similar divisions for other countries, like regional cities for Poland etc.
In one of the views I have a form, where the user can select certain US Regions and certain States. So in order to display the names of these, I make two calls to the database. One with all rows to the USRegions table and one with all rows with country_id = USA.id to the Regions table. The thing is - the result of these calls will always be the same (unless there are new states, which is very unlikely, although possible). So is there a way to cache these calls and if yes - how and where?
Rails automatically caches the SQL queries if it encounters the same query again. Here is the reference link for this. SQL Caching. If still you want to cache it then you can use Low Level Caching. Use a key based caching it would do the work.

Exclude members in a dimension attribute

Is there a way in a SSAS cube to exclude members in a dimension attribute by changing the dimension structure? I am wanting a solution that doesn't use perspectives.
Example:
California
- Los Angeles
- Sacremento
- San Francisco
Let's say in the above hierarchy I wanted to exclude Sacremento. Is there a way to exclude this members and others by changing the dimension structure, or is the only possibiltiy to use a perspective?
There are 3 possibilities:
Place a filter on the queries of the data source view of the UDM and remove any data you do not want to see in the cube.
Set security on your cube and deny access to the sacremento member of that dimension for a certain role.
Write specific MDX queries that exclude dimension members, e.g.
Except(
[States].Members,
[States].[Sacremento]
)