VegaLite.jl plot from multiple columns

Dear Community,
I would like to plot a stacked plot with VegaLite.jl and the stacked bars come from different columns.
In particular, I would like to obtain a format like the one below, but with a different structure of the DataFrame

a = DataFrame(col1=repeat(1:3,2), col2=repeat(["a", "b"], inner = 3), col3=10:15)
a |> @vlplot(:bar, x="col1:o", y={"col3", axis={stack=nothing}}, color=:col2)

The output is

In particular, the structure of the DataFrame that I would like to use is the following, where the information of the different bars are spread over multiple columns.

b = DataFrame(col1=1:3, a=10:12, b=13:15)

How can I use DataFrame b to create the same image as in the a case efficiently?
The idea I see is to transform DataFrame a into b, but it may be inefficient.
Obviously the problem above is very simplified, in my case the number of columns is large and reading them by rows is also easy to debug, use, etc.