def merge_entity(self, table_name, entity, if_match='<STR_LIT:*>', timeout=None):
_validate_not_none('<STR_LIT>', table_name)<EOL>request = _merge_entity(entity, if_match, self.require_encryption,<EOL>self.key_encryption_key)<EOL>request.host_locations = self._get_host_locations()<EOL>request.query['<STR_LIT>'] = _int_to_str(timeout)<EOL>request.path = _get_entity_path(table_name, entity['<STR_LIT>'], entity['<STR_LIT>'])<EOL>return self._perform_request(request, _extract_etag)<EOL>
Updates an existing entity by merging the entity's properties. Throws 
if the entity does not exist. 

This operation does not replace the existing entity as the update_entity
operation does. A property cannot be removed with merge_entity.

Any properties with null values are ignored. All other properties will be 
updated or added.

:param str table_name:
    The name of the table containing the entity to merge.
:param entity:
    The entity to merge. Could be a dict or an entity object. 
    Must contain a PartitionKey and a RowKey.
:type entity: dict or :class:`~azure.storage.table.models.Entity`
:param str if_match:
    The client may specify the ETag for the entity on the 
    request in order to compare to the ETag maintained by the service 
    for the purpose of optimistic concurrency. The merge operation 
    will be performed only if the ETag sent by the client matches the 
    value maintained by the server, indicating that the entity has 
    not been modified since it was retrieved by the client. To force 
    an unconditional merge, set If-Match to the wildcard character (*).
:param int timeout:
    The server timeout, expressed in seconds.
:return: The etag of the entity.
:rtype: str