Forum Discussion

arpost's avatar
arpost
Post Prodigy
4 years ago
Solved

Is it possible to create a query from text?

I have a scenario where I need to generate a dynamic query and wondered if it is possible to do so by "creating" a query from text.

 

For example, if I had a text field that contained the following:

let
    Source = 1 = 1
in
    Source

could that then be executed as a query somehow?

 

4 Replies

    • arpost's avatar
      arpost
      Post Prodigy

      Very cool! Didn't know about that function, mahoneypat. Can this handle more complex queries? I keep getting an error when I try something like the following:

       

      = Expression.Evaluate(    "Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText(""i45WclTSUTI0MFCK1YlWcgKyjaBsZyDbGMSOBQA="", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Name = _t, Value = _t]),
          #""Changed Type"" = Table.TransformColumnTypes(Source,{{""Name"", type text}, {""Value"", Int64.Type}}),
          #""Filtered Rows"" = Table.SelectRows(#""Changed Type"", each ([Name] = ""B""))""""")

      Here's the original in the Advanced Editor:

       

      and here's the original code:

      let
          Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUTI0MFCK1YlWcgKyjaBsZyDbGMSOBQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Name = _t, Value = _t]),
          #"Changed Type" = Table.TransformColumnTypes(Source,{{"Name", type text}, {"Value", Int64.Type}}),
          #"Filtered Rows" = Table.SelectRows(#"Changed Type", each ([Name] = "B"))
      in
          #"Filtered Rows"

       

  • mahoneypat's avatar
    mahoneypat
    Microsoft Employee

    Looks like you are missing the let and in parts of your query inside your Expression.Evaluate.

     

    Pat

     

    • arpost's avatar
      arpost
      Post Prodigy

      That did the trick! It's a bummer the applied steps aren't listed using this method, but the method is great just the same. Appreciate it!