An Azure service for ingesting, preparing, and transforming data at scale.
Hello !
Thank you for posting on MS Learn Q&A.
Yes this is possible but ADF mapping data flow is not the simplest way unless you truly need row by row transformation logic.
For your case, the cleanest way in is:
source (CSV) then build a complex object/map for each row then stringify then sink (Azure SQL single column)
Stringify transformation is specifically meant to turn complex types like structures, maps, or arrays into a single string value, which is exactly what you need before writing into one SQL column. Mapping data flow also supports functions like columnNames(), columns(), and keyValues() that can help build key/value objects dynamically.
https://learn.microsoft.com/en-us/azure/data-factory/data-flow-stringify
If your schema is fixed, use a derived column to create a structured column from the CSV fields, then pass that column through stringify and write the result to SQL.
For a dynamic schema, you can build a map from all incoming column names and values using columnNames() + columns() + keyValues(), then stringify that map. Those functions are documented in mapping data flow expressions.
https://learn.microsoft.com/en-us/azure/data-factory/data-flow-expressions-usage
The main consideration is whether you actually need SQL to hold opaque JSON blobs rather than relational columns.
If you mostly just archive each source row as it is so storing JSON in one column is fine.
If you will filter, join, or report heavily on fields like age or name, relational columns are usually better for performance and maintenance.
If you do store JSON, Azure SQL supports indexing JSON-accessed properties via computed columns, and in newer SQL versions there is also JSON index support. https://learn.microsoft.com/en-us/sql/relational-databases/json/index-json-data?view=sql-server-ver17