Hello @KingJava and welcome to Microsoft Q&A and thank you for sharing your research.
There are multiple ways to go about this, but I think having the Azure Function write to blob, and then returning the blob path to Data Factory for use in Copy activity (Blob -> SQL) is the most solid way to go.
Webhook would be useful for a process that takes so long the connection to ADF would time out. Personally, I haven't really used Webhook enough to be confident.
The determining factors on what to use are:
- Do we need to use Azure Function? Is Azure function transforming data, or just fetching? Some API's don't play well with ADF, and Function is used for fetching.
- How deep or complex is the JSON? Copy Activity works for simple flattening. Data Flow is better for flattening complex or multiple nests in JSON. Another approach is to move the JSON as-is to the SQL and use SQL commands to digest the JSON into tabular format.
- How big is the data? If the output of the Function is small, like a record or two, we can pass the output to Stored Proc activity for writing. Not recommended for big data.
- Do you want to use ADF at all? I imagine it is possible to have your Function connect to your SQL directly. Not something I have done.