У меня есть следующие определяемые пользователем функции с намерением использовать условный регистр для вывода таблицы из нулей или единиц, указывающих, активна ли учетная запись.
case требует скалярных значений в качестве аргументов, т.е. pro_account_active (account) и basic_account_active (account) должны быть скалярными значениями.
Я изо всех сил пытаюсь обойти ограничение toscalar:
Пользовательские функции не могут передавать в вызов toscalar () информацию, которая зависит от контекста строки, в которой вызывается функция.
Я думаю, что если бы была функция, которую я мог бы использовать вместо ?????? который преобразует active в скаляр и вернет его из функции, с которой он будет работать.
Любая помощь очень ценится
let basic_account_active=(account:string) {
basic_check_1(account) // returns 0 or 1 row only
| union basic_check_2(account)
| summarize result_count = count()
| extend active = iff(result_count == 2, 1, 0)
| ??????
};
let pro_account_active=(account:string) {
pro_check_1(account) // returns 0 or 1 row only
| union pro_check_2(account)
| summarize result_count = count()
| extend active = iff(result_count == 2, 1, 0)
| ??????
};
let is_active=(account_type:string, account:string) {
case(
account_type == 'pro', pro_account_active(account),
account_type == 'basic', basic_account_active(account),
-1
)
};
datatable(account_type:string, account:string)
[
'pro', '89e5678a92',
'basic', '9d8263da45',
'pro', '0b975f2454a',
'basic', '112a3f4753',
]
| extend result = is_active(account_type, account)