Google Sheets offers passing in parameters to lambdas as such:
=LAMBDA(x, y, x y)(100, 200)
I was thinking of taking 2 columns from another Sheet, filter it with QUERY and then pass those 2 columns into the LAMBDA. Basically the 2 columns were a key and a CSV text that I wanted to split in one go.
=lambda(a, b, split(b, ","))(query('Alias Key Raw'!A1:B, "select * where A starts with 'X'"))
This gives the following ERROR Wrong number of arguments to call following LAMBDA function. Expected 2 arguments, but got 1 arguments.. Given that QUERY provides 2 columns of actual values, I thought this would be possible.
=byrow(query('Alias Key Raw'!A1:B, "select * where A starts with 'X'"), lambda(row, split(row, ",")))
This gives me only column A. No error otherwise. All of column B is ignored it appears
- I've tried using
BYCOL,BYROW, etc, and a lot of errors areERROR Wrong number of arguments to call following LAMBDA function. Expected 2 arguments, but got 1 arguments.
Data
Input into the lambda
| Key | Lineages |
|---|---|
| CU | B.1.1.529.5.1.26 |
| CV | B.1.1.529.2.75.3.1.1.3 |
| XA | B.1.1.7,B.1.177 |
| XB | B.1.634,B.1.631 |
| XC | AY.29,B.1.1.7 |
| XAZ | BA.2.5,BA.5,BA.2.5 |
| XBC | BA.2*,B.1.617.2*,BA.2*,B.1.617.2* |
Expected
Output from the lambda
| Key | Lineages | |||
|---|---|---|---|---|
| XA | B.1.1.7 | B.1.177 | ||
| XB | B.1.634 | B.1.631 | ||
| XC | AY.29 | B.1.1.7 | ||
| XAZ | BA.2.5 | BA.5 | BA.2.5 | |
| XBC | BA.2* | B.1.617.2* | BA.2* | B.1.617.2* |
Note: There can be any number of lineages in the CSV cell
CodePudding user response:
Updated
=ArrayFormula(
LAMBDA(a, {QUERY({a},"Select Col1"),SPLIT(QUERY({a},"Select Col2"),",")})
(QUERY('Alias Key Raw'!A1:B, "select * where A starts with 'X'",1)))
Explanaition:
using an Array {} to return:
Col1: {QUERY({a},"Select Col1"),...}
Col2: {...,SPLIT(QUERY({a},"Select Col2"),",")}
Of the Query QUERY('Alias Key Raw'!A1:B, "select * where A starts with 'X'",1) found in the Lambda call named a
Used formulas help
ARRAYFORMULA - LAMBDA - QUERY - SPLIT
CodePudding user response:
Perhaps worth pointing out that the expected data can be returned with a more compact formula that uses neither QUERY nor LAMBDA:
=filter({A1:A,split(B1:B,",")},regexmatch(A1:A,"^X"))

