Is it possible to create user-defined variables in the SQL queries/transformation?
For example
@set bob='Bob'
select * from table1 where name=@bob
UNION ALL
select * from table2 where name=@bob
...etc tableN
Hi all,
Can anybody help @ptran with their question?Thanks!
Yes, it is possible to create these variables within a MySQL data flow. The syntax however would be slightly different. You would want to use @bob:=Bob and then when referencing it within your select statement use @bob. If you experience any problems implementing this in a data flow, please feel free to email Domo Support at support@domo.com.
@ptran, did hrh514's response help answer your question?
Not sure I understand.
SET @bob:='bob';SELECT * FROM table WHERE name=@bob;
I will follow-up with support, but for completeness, the above SQL gives the following error "SQL statement must be a SELECT clause if "Generate Output Table" is selected."
@ptran,
In my experience, you can't set user defined variables like a typical MySQL script with a SET statement upfront, but you can initialize them inline in a subquery and then reference in an outer select statement. For example, the statement below will initialize @row = 0 and increment +1 for each row in the select statement.
SELECT mydata.*,@row := @row + 1 as `RowNumber`FROM mydata, (SELECT @row := 0) r;
Technically, you could declare a variable such as @Bob in your statement and then filter on that value, like this:
SELECT nameFROM sample_table, (select @Bob := 'Bob') r on name = @Bob
But that would defeat the purpose of declaring a variable and referencing it in many statements, like you indicated with your UNION approach, so I would suggest another approach:
Step 1: Create a lookup table to store your values. This could be a webform, or a select statement to generate the columns and values in the first transform step.
Step 2: Join your transaction tables to the lookup table to filter on the specified values
Hope this helps!