我有一个带有动态列的表,在那里我存储了ID列表,并且我有一个参数,可以传递ID列表。所以,我想获取表中列中任何输入值的行。就像这样。
declare query_parameters (
i_ids: dynamic = dynamic([15,33,37])
);
let T = datatable(id: int, ids:dynamic)
[
1, dynamic([10, 15, 18]),
2, dynamic([22,25,29]),
3, dynamic([31, 33, 37]),
];
T
| where ids has_any(i_ids);
我需要获取1和3行,但它失败了,消息是: 源表达式的类型是'动态',不能与数字参数进行比较.请你帮助我写正确的查询?
你可以尝试使用 set_intersect()
: https:/docs.microsoft.comen-usazuredata-explorerkustoquerysetintersectfunction。
declare query_parameters (
i_ids: dynamic = dynamic([15,33,37])
);
let T = datatable(id: int, ids:dynamic)
[
1, dynamic([10, 15, 18]),
2, dynamic([22,25,29]),
3, dynamic([31, 33, 37]),
];
T
| where array_length(set_intersect(ids, i_ids)) > 0