This Snap executes a SQL update using the input document. Keys from the document will be used as the columns to update and their values will be the updated value in the column.
While trying to access a column name that contains specific characters as supported by Azure SQL such as $, #, @ etc., such field names should be enclosed in the square brackets.
ETL Transformations & Data Flow
This Snap enables the following ETL operations/flows:
Load data in an Azure SQL table
Input & Output
Input: This Snap must have an upstream Snap that can passes documents to its output view. The documents are the data that is used in the SQL update.
Output: The Snap can have a downstream Snap. This snap writes a document to the output view summarizing each update execution.
This Snap uses account references created on the Accounts page of SnapLogic Manager to handle access to this endpoint. See Azure SQL Account for information on setting up this type of account.
Views
Input
This Snap has exactly one document input view. The input document is used to build the update query. Below is an example for how an input document is translated to a query.
Input document:
{
"Color": "blue",
"ListPrice": 7.22
}
Query:
update "Database"."Table"
set [ListPrice] = 7.22,
[Color] = 'blue'
Output
This Snap has at most one output view and produces documents in the view. The output fields of a single view are:
message - the summary of the query outcome
status - for successful queries the number of rows updated and for failed queries the error code
original - the input document
Error
This Snap has at most one document error view and produces zero or more documents in the view.
Troubleshooting:
The section describes typical issues you may encounter while using this Snap, and instructions on how to workaround them:
Issue: A Snap with an update condition such as "Name = username" fails with error "Invalid column name 'username'.".
Solution: The issue is that the string value specified in the update condition, username, must be quoted with single quotations. The proper update condition in this example is "Name = 'username'".
Settings
Label
Required. The name for the Snap. You can modify this to be more specific, especially if you have more than one of the same Snap in your pipeline.
Schema Name
This is the name of the Azure SQL database that includes the table that will be updated. If this is not specified then the Table Name should be fully qualified with the database name. Optionally, the value can use double quotation marks as an identifier.
The values can be passed using the pipeline parameters but not the upstream parameter.
Example: SalesData
Example: "SalesData"
Table Name
Required. This is the table that will be updated. It can be specified as the table name only if the Schema Name is defined. Otherwise, it can be specified as a fully qualified name "Database"."Table". Optionally, the value can use double quotation marks as an identifier.
The values can be passed using the pipeline parameters but not the upstream parameter.
Example: ProductInfo
Example: "SalesData"."ProductInfo"
Update Condition
Specify the SQL WHERE clause of the update statement. You can define specific values or columns to update (Set condition) in the upstream Snap, such as Mapper Snap, and then use the WHERE clause to apply these conditions on the columns sourced from the upstream Snap. For instance, here is a sample of an Update SQL query:
UPDATE table_name SET column1 = value1, column2 = value2, WHERE condition;
If the Update Condition field is left blank, the condition is applied on all the records of the target table.
In certain scenarios where you want to use specific data from the upstream Snaps, and do not want to change that data in the Update Snap, then you need to place the data in the original structure of the input document. Hence, we recommend that you use the format for Update condition and input data format as shown below:
Instead of building multiple Snaps with inter dependent DML queries, it is recommended to use the Stored Procedure or the Multi Execute Snap. In a scenario where the downstream Snap does depends on the data processed on an Upstream Database Bulk Load Snap, use the Script Snap to add delay for the data to be available.
Refer to the example to understand how to use the Update Condition.
"EMPNO=" + $EMPNO + " and ENAME='" + $EMPNAME+ "'"
Caution
Using expressions that join strings together to create SQL queries or conditions has a potential SQL injection risk and is hence unsafe. Ensure that you understand all implications and risks involved before using concatenation of strings with '=' Expression enabled.
Snap execution
Select one of the three modes in which the Snap executes. Available options are:
Validate & Execute: Performs limited execution of the Snap, and generates a data preview during Pipeline validation. Subsequently, performs full execution of the Snap (unlimited records) during Pipeline runtime.
Execute only: Performs full execution of the Snap during Pipeline execution without generating preview data.
Disabled: Disables the Snap and all Snaps that are downstream from it.
Typical Snap Configurations
The key Snap configurations:
Without Expressions
In the below pipleine, the Snap updates the table, "dbo"."AV_EMP" with the given condition, EMPID = 500.
With Expressions
Upstream
Pipeline Parameters
In the below pipeline, the Update Snap retrieves the values from the upstream as well as from the Pipeline parameters.
The Mapper Snap maps the values to be passed using the output schema:
The Azure SQL update Snap uses the value for the table name as passed in the pipeline parameters (_TableTo BeUsed), and the value for the update condition as passed via the upstream.
Advanced Use Case
The following describes a pipeline, with a broader business logic involving multiple ETL transformations, that shows how typically in an enterprise environment, Update functionality can be used. Pipeline download link below.
This pipeline reads and moves the records from the SQL Server table to update the Azure SQL database. The records (EmployeeID, Salary, title) from a table on the SQL Server database are moved to the table on the Azure SQL. The Bulk Load Snap loads the table, while the Update Snap updates the values using an upstream.
Extract: The SQL Server Snap retrives the records from a table on the SQL Server database.
Transform: The Mapper Snap maps the values to be updated on the Azure SQL table.
Load: The Azure SQL Bulk Load Snap loads the data into the Azure SQL database.
Load: The Azure SQL Update Snap updates the table on the Azure SQL.
Read: The Azure SQL Execute Sanp reads the values as updated on the table.
Downloads
Important steps to successfully reuse Pipelines
Download and import the pipeline into the SnapLogic application.
The Snap displayed an error when the DateTime was of the LocalDateTime type.
The Snap lost milliseconds when the DateTime was in the String data type because the given DateTime format was parsed into a Date object and the timestamp object was created from that date.
Updated and certified against the current SnapLogic Platform release.
November 2023
main23721
Stable
Updated and certified against the current SnapLogic Platform release.
August 2023
main22460
Stable
The Azure SQL Execute Snap now includes a new Query type field. When Auto is selected, the Snap determines the query type automatically.
May 2023
main21015
Stable
Upgraded with the latest SnapLogic Platform release.
May 2023
432patches20967
Latest
Fixed an issue with the connection pool in the Azure SQL accounts, which was affecting the Snap Pack's performance. You should now experience improved performance when using these accounts.
Fixed an issue with the Azure SQL - Bulk Load Snap involving special characters in JDBC URL properties, such as passwords. Special characters are properly escaped now
March 2023
432patches20049
Latest
Intermittent connectivity issues no longer occur when using some Snaps in the Azure SQL Snap Pack. These issues caused the following message to display: The connection is broken and recovery is not possible. The connection is marked by the client driver as unrecoverable. No attempt was made to restore the connection.
February 2023
main19844
Stable
Upgraded with the latest SnapLogic Platform release.
January 2023
431patches19493
Latest
The Azure SQL Active Directory and the Azure SQL Active Directory Dynamic accounts now include an Authentication Mode dropdown list, which allows you to choose the Active Directory authentication mode you would like to use. This enhancement supports Active Directory Service Principal authentication for the Snap Pack.
The Azure Synapse SQL Insert Snap no longer includes the Preserve case-sensitivitycheckboxbecause the database is case-insensitive. The database stores the data regardless of whether the columns in the target table and the input data are in mixed, lower, or upper case.
November 2022
main18944
Stable
The Azure SQL Snap Pack uses the 11.2x driver by default. If you specify any specific driver, ensure that you provide a version higher than 9.1 that is compatible with Microsoft Authentication Library for Java, as this Snap Pack uses the MSAL4J. Otherwise, you may run into issues.
Fixed an issue with the Azure SQL-Stored Procedure Snap where the Snap failed with an Invalid value type error when the stored procedure contained an NCHAR data type.
4.29 Patch
429patches16460
Latest
Fixed an issue with Azure SQL Bulk Load Snap where the Snaplex exited due to insufficient memory when a large number of rows are loaded into the target table and the input data contained a null value for a non-nullable column.
Fixed an issue with the Azure SQL - Update Snap where the Snap failed with an Incorrect syntax error when a column in a table is of NVARCHAR, NCHAR, or NTEXT data type and this column is part of another NVARCHAR, NCHAR, or NTEXT data type column name and the update condition is specified as an expression.
4.28 Patch
428patches15114
Latest
Fixed an issue with the Azure SQL - Bulk Load Snap where the decimal values lost precision when they were inserted into the database.
4.28
main14627
Stable
Upgraded with the latest SnapLogic Platform release.
Upgraded with the latest SnapLogic Platform release.
4.25
main9554
Stable
Upgraded with the latest SnapLogic Platform release.
4.24
main8556
Stable
Enhances the Azure SQL - Stored Procedure to accept parameters from input documents by column keys. If the values are empty, the parameters are populated based on the column keys for easier mapping in the upstream Mapper Snap.
4.23
main7430
Stable
Enhances the Azure SQL - Bulk ExtractSnap by adding a new check box Enable UTF-8 encodingto support UTF-8 encoded characters. This check box allows the Snap to update the BCP command to read the special characters.
4.22 Patch
422Patches6751
Latest
Enhances the Azure SQL - Bulk ExtractSnap by adding a new check boxEnable UTF-8 encoding to support UTF-8 encoded characters. Selected by default, this check box allows the Snap to update the BCP command to read these special characters.
4.22
main6403
Stable
Upgraded with the latest SnapLogic Platform release.
4.21 Patch
421patches6272
Latest
Fixes the issue whereSnowflake SCD2Snap generates two output documents despite no changes toCause-historizationfieldswithDATE, TIME and TIMESTAMPSnowflake data types, and withIgnore unchanged rowsfield selected.
4.21 Patch
421patches6144
Latest
Fixes the following issues with DB Snaps:
The connection thread waits indefinitely causing the subsequent connection requests to become unresponsive.
Fixes the connection issue in Database Snaps by detecting and closing open connections after the Snap execution ends.
4.21
snapsmrc542
Stable
Upgraded with the latest SnapLogic Platform release.
4.20
snapsmrc535
Stable
Upgraded with the latest SnapLogic Platform release.
4.19 Patch
db/azuresql8403
Latest
Fixes an issue with the Azure SQL - Update Snap wherein the Snap is unable to perform operations when:
An expression is used in theUpdate conditionproperty.
Input data contain the character '?'.
4.19
snaprsmrc528
Stable
Enhanced the error handling in PolyBase Bulk Load Snap when writing to a data warehouse. The Snap writes a new blob in the Azure container. This new blob highlights the first invalid row that caused the bulk load operation to fail.
4.18
snapsmrc523
Stable
Upgraded with the latest SnapLogic Platform release.
4.17
ALL7402
Latest
Pushed automatic rebuild of the latest version of each Snap Pack to SnapLogic UAT and Elastic servers.
4.17
snapsmrc515
Latest
Fixes an issue with the Azure SQL Execute Snap wherein the Snap would send the input document to the output view even if the Pass through field is not selected in the Snap configuration. With this fix, the Snap sends the input document to the output view, under the key original, only if you select the Pass through field.
Added the Snap Execution field to all Standard-mode Snaps. In some Snaps, this field replaces the existing Execute during preview check box.
4.16 Patch
db/azuresql7179
Latest
Fixes an issue with the Azure SQL Bulk Extract Snap wherein the Snap fails to process all the metadata information of the input table and schema.
4.16
snapsmrc508
Stable
Upgraded with the latest SnapLogic Platform release.
4.15 Patch
db/azuresql6327
Latest
ReplacedMax idle timeandIdle connection testperiodproperties withMax life timeandIdle Timeout properties respectively, in the Account configuration. The new properties fix the connection release issues that were occurring due to default/restricted DB Account settings.
4.15
snapsmrc500
Stable
Upgraded with the latest SnapLogic Platform release.
4.14
snapsmrc490
Stable
Upgraded with the latest SnapLogic Platform release.
4.13
snapsmrc486
Stable
Upgraded with the latest SnapLogic Platform release.
4.12
snapsmrc480
Stable
Upgraded with the latest SnapLogic Platform release.
4.11 Patch
azuresql4631
Latest
Fixes an issue with the Azure Polybase Bulk Load Snap that failed with "Parse error" when there was no input.
4.11 Patch
db/azuresql4326
Latest
Fixes an issue with the Azure SQL Polybase Bulk Load Snap, that allowed the Snap to load data into a table with identity columns for Azure SQL Data Warehouse instance.
Fixes encoding issue when using a Windows plex, and added a "Encoding" Snap property that allows user to choose input data's encoding from UTF-8 and UTF-16.
4.11
snapsmrc465
Stable
Upgraded with the latest SnapLogic Platform release.
The new Snap,Azure SQL Bulk Loadis developed has been developed to carry out the bulk load function extensively for Azure SQL DB. (The old Azure Bulk Load has been renamed toPolybase BulkLoad which works for on-premise SQL Server and Azure SQL Data Warehouse with polybase functionality).
AddedAuto commitproperty to the Select and Execute Snaps at the Snap level to support overriding of theAuto commitproperty at the Account level.
Added the below accounts:
Azure SQL Active Directory Account
Azure SQL Active Directory Dynamic Account
4.9 Patch
azuresql3078
Latest
Fixes an issue regarding connection not closed after login failure; Expose autocommit for "Select into" statement in PostgreSQL Execute Snap and Redshift Execute Snap
4.9
snapsmrc405
Stable
Upgraded with the latest SnapLogic Platform release.
4.8 Patch
azuresql2750
Latest
Potential fix for JDBC deadlock issue.
4.8
snapsmrc398
Stable
Info tab added to accounts.
Database accounts now invalidate connection pools if account properties are modified and login attempts fail.
4.7 Patch
azuresql2196
Latest
Fixes an issue for database Select Snaps regarding Limit rows not supporting an empty string from a pipeline parameter.
4.7
snapsmrc382
Stable
Upgraded with the latest SnapLogic Platform release.
4.6
snapsmrc362
Stable
Upgraded with the latest SnapLogic Platform release.
4.5.1
snapsmrc344
Stable
Upgraded with the latest SnapLogic Platform release.
4.5
snapsmrc344
Stable
Upgraded with the latest SnapLogic Platform release.