update: data is in a google sheet.
Security filter on a table. Which expression is more efficient, or does it matter?
LOOKUP(USEREMAIL(), โUsersโ, โUSER_EMAILโ, "PI_NOโ)>=15
My User[PI_NO]>=15
where slice My User only contains the current userโs info based on Row Filter: (USEREMAIL() = [USER_EMAIL])
Of course, this assumes that I wrote the expressions correctly.
This article seems to indicate that security filters are applied before sending the data to the app. I would assume that the calculation of which records are in the slice, would be part of the appโs calculation after the security filter is applied. So my guess would be to use your LOOKUP() expression. โGuessโ being a key word here though. Would be very interested in other peoplesโ responses as well.
@Marc_Dillon Youโre right when you say
But you actually CAN use slices inside the security filter formula - AppSheet has handled all the order of operations to make sure everything is handled correctly and the appropriate security criteria is followed - even if thereโs slices and virtual columns that need to be calculated first.
For instance, the following security filter is on the Clients table of my Time-Tracking app
You can see I make user of โCurrent_Userโ - a slice of the User table - and a column called [Auto_Status] (which is a virtual column). So when loading the app, the following must happen:
But it getโs my point across.
I should also point out that in my case, I need all the records in the user table so I can accomplish other tasks.
I would do it in this wayโฆ
First use a security filter with your โMy Userโ table as USEREMAIL()=[User Email].
In the other table useโฆ
ANY(My User[PI_NO])>=15.
Because you have only one record in โMy Userโ table, ANY will pick that record.
User | Count |
---|---|
40 | |
36 | |
33 | |
23 | |
17 |