Merging data in Datalake - azure-data-factory

I'm working on a project where we need to bring data from SQL Server database into a Datalake.
I succeded that through a pipeline which ingest data from the source and load it into a DL in parquet format.
My question is how to merge new data from data source to the existing file into that data lake(Upserting).

You can use Azure data flows wherein you can map the source file with other sources and override the existing file. There is no upsert activity directly in ADF for files unlike for databases.
reference :
https://learn.microsoft.com/en-us/answers/questions/542994/azure-data-factory-merge-2-csv-files-with-differen.html

Related

Move Entire Azure Data Lake Folders using Data Factory?

I'm currently using Azure Data Factory to load flat file data from our Gen 2 data lake into Synapse database tables. Unfortunately, we receive (many) thousands of files into timestamped folders for each feed. I'm currently using Synapse external tables to copy this data into standard heap tables.
Since each folder contains so many files, I'd like to move (or Copy/Delete) the entire folder (after processing) somewhere else in the lake. Is there some practical way to do that with Azure Data Factory?
Yes, you can use copy activity with a wild card. I tried to reproduce the same in my environment and I got the below results:
First, add source dataset and select wildcard with folder name. In my scenario, I have a folder name pool.
Then select sink dataset with file path
The pipeline run is successful. It transferred the file from one location to another location with the required name. Look at the following image for reference.

ADF Staged Copy Not Applying Schema Mapping for XML

I'm trying to copy data between a SOAP Web Service and an Azure SQL Database. When I use the staging option of the copy activity, mappings are not applied and no data is copied. If I disable the stage and write directly to a text file, mappings are applied as expected. How can I make the mappings apply when the staging option is enabled?
Additional Information
Source: HTTP
Sink: Azure SQL Database
Direct copies between the source and sink do not work because of where they're located, so I need to stage the copy.
However, when staging the copy, the defined mappings are not being applied and the sink database table ends up with a single null row.
When using a delimited text sink without a staging step, the mappings work as expected.
However, as soon as I add a staging step, the same issue occurs with a delimited text sink.
Question:
I have reproduced the same issue. I used http (xml response) as source and Azure SQL DB as sink. Staging is also stored as XML file. While doing so, few columns are null and only few data are getting copied in sink. Mapping is not happening as given in mapping tab of copy activity.
This issue is not happening when another source format like delimited file is used. In those cases, Mapping occurs as given in the mapping tab.
Perhaps you can try the workaround of using two copy activities. One copy activity from HTTP source to blob and then blob to sink. And these activities should happen sequentially.
In copy data activity 1, HTTP is used as source and csv file in Blob storage is used as a sink.
In Mapping tab, I have given the corresponding mapping
In copy activity 2, I used same dataset for blob storage as a source dataset and Azure SQL db sink dataset.
In copy activity 2 also, I tested with auto-mapping and with manual mapping. Both worked in my case.
Final Sink Table

accumulate data from multiple csv from a blob storage to a hive table with MS Databricks or ADF

Can you please help me to find the best practice for the next task:
I have a blob storage shared with SAS. There are multiple csv in folder hierarchy like root_folder -> leve1_folders -> level2_folders -> csv.
I need firstly read every csv that exists, save it as a hive table and then append new data to the hive table once new folders with csv (leve1_folders -> level2_folders -> csv) are uploaded.
The problem for me is to read last uploaded folders with csv only, the new folders name could be different, but the file name is the same always.
append new data to the hive table once new folders with csv (leve1_folders -> level2_folders -> csv) are uploaded.
The above requirement can be fulfilled using Azure Data Factory using "Event Trigger".
Data integration scenarios often require customers to trigger
pipelines based on events happening in storage account, such as the
arrival or deletion of a file in Azure Blob Storage account. Data
Factory and Synapse pipelines natively integrate with Azure Event
Grid, which lets you trigger pipelines on such events.
Limitation: The Storage Event Trigger currently supports only Azure Data Lake Storage Gen2 and General-purpose version 2 storage accounts.
Therefore, you need to convert the simple blob storage to Hierarchical namespace to make it ADLS account.
Refer: Create a trigger that runs a pipeline in response to a storage event

Azure data factory: Implementing the SCD2 on txt files

I have flat files in adls source,
for full load we are adding 2 columns Insert and datatimestamp.
For change load we need to Lookup with full data, the data available in full should be taken as Updated and not available data as Insert and copy.
below is the approach I tried to work out, but i'm unable to perform.
Can any one help me on this.
Thanks you and waiting for quick response.
Currently, the feature to update the existing flat file using the Azure data factory sink is not supported. You have to create a new flat file.
You can also use data flow activity to read full and incremental data and load to a new file in sink transformation.

How to remove extra files when sinking CSV files to Azure Data Lake Gen2 with Azure Data Factory data flow?

I have done data flow tutorial. Sink currently created 4 files to Azure Data Lake Gen2.
I suppose this is related to HDFS file system.
Is it possible to save without success, committed, started files?
What is best practice? Should they be removed after saving to data lake gen2?
Are then needed in further data processing?
https://learn.microsoft.com/en-us/azure/data-factory/tutorial-data-flow
There are a couple of options available.
You can mention the output filename in Sink transformation settings.
Select Output to single file from the dropdown of file name option and give the output file name.
You could also parameterize the output file name as required. Refer to this SO thread.
You can add delete activity after the data flow activity in the pipeline and delete the files from the folder.