Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Any help is appreciated.
I have Users and Documents.
Each User can be tied to one or more documents, which that user is allowed to view.
I have 5 documents named: AR, SA, IA, ED, CS
I have 3 users: Holden, Aaron, Brent
NTNAME, DocumentName
Holden,AR
Holden,SA
Holden,IA
Holden,ED
Holden,CS
Aaron,CS
Brent,AR
Brent,SA
Brent,IA
Brent,ED
The above data linking Users and Documents is in an existing QVD
There are three different ‘Types’ of users based on the groups of documents they are assigned.
Aaron would be a type of CS
Holden would be a type of BI + CS
Brent would be a type of BI
BI has access to at least one document but its not CS
CS has access to only CS
BI+CS has access to at least one non-CS doc as well as the CS doc.
How can I assign this ‘Type’ in script?
Create another field called type based on the above parameters?
Thanks!
Hi Aaron,
This is all the script you need for the expression to work in a straight table
Data:
LOAD * INLINE [
NTNAME, DocumentName
Holden,AR
Holden,SA
Holden,IA
Holden,ED
Holden,CS
Aaron,CS
Brent,AR
Brent,SA
Brent,IA
Brent,ED
];
If you want the field to be calculated in script then try:
Data:
LOAD
NTNAME,
Concat(DocumentName,'|') as ConcDoc
Group by NTNAME;
LOAD * INLINE [
NTNAME, DocumentName
Holden,AR
Holden,SA
Holden,IA
Holden,ED
Holden,CS
Aaron,CS
Brent,AR
Brent,SA
Brent,IA
Brent,ED
];
[Typed Data]:
LOAD
*,
if(ConcDoc='CS','CS',
if(SubStringCount(ConcDoc,'|')>0,
if(WildMatch(ConcDoc,'*CS*'),'BI +CS','BI')
)) as Type;
load * Resident Data;
DROP Table Data;
Giving:
NTNAME | Type |
---|---|
Aaron | CS |
Brent | BI |
Holden | BI +CS |
Regards
Andrew
Hi Aaron,
Try this expression:
if(Only(DocumentName)='CS','CS',
if(Count(DocumentName)>1,
if(WildMatch(concat(DocumentName,'|'),'*CS*'),'BI +CS','BI')
))
NTNAME | Type |
---|---|
Aaron | CS |
Brent | BI |
Holden | BI +CS |
Cheers
Andrew
Didn't seem to work for me
Hi Aaron,
This is all the script you need for the expression to work in a straight table
Data:
LOAD * INLINE [
NTNAME, DocumentName
Holden,AR
Holden,SA
Holden,IA
Holden,ED
Holden,CS
Aaron,CS
Brent,AR
Brent,SA
Brent,IA
Brent,ED
];
If you want the field to be calculated in script then try:
Data:
LOAD
NTNAME,
Concat(DocumentName,'|') as ConcDoc
Group by NTNAME;
LOAD * INLINE [
NTNAME, DocumentName
Holden,AR
Holden,SA
Holden,IA
Holden,ED
Holden,CS
Aaron,CS
Brent,AR
Brent,SA
Brent,IA
Brent,ED
];
[Typed Data]:
LOAD
*,
if(ConcDoc='CS','CS',
if(SubStringCount(ConcDoc,'|')>0,
if(WildMatch(ConcDoc,'*CS*'),'BI +CS','BI')
)) as Type;
load * Resident Data;
DROP Table Data;
Giving:
NTNAME | Type |
---|---|
Aaron | CS |
Brent | BI |
Holden | BI +CS |
Regards
Andrew
Hi,
another solution might be:
tabNameDoc:
LOAD * INLINE [
NTNAME, DocumentName
Holden, AR
Holden, SA
Holden, IA
Holden, ED
Holden, CS
Aaron, CS
Brent, AR
Brent, SA
Brent, IA
Brent, ED
];
Join
LOAD NTNAME,
Concat(DISTINCT If(DocumentName='CS','CS','BI'),'+') as Type
Resident tabNameDoc
Group By NTNAME;
hope this helps
regards
Marco
Thanks!
Thanks!