Tag (classify) assets¶
Atlan tags must exist before tagging assets
Remember that you must first create the Atlan tag before you will be able to tag any assets.
Cannot add tags when creating assets
Currently it is not possible to add tags when creating assets, other than via dbt.
Add to an existing asset¶
To add tags to an existing asset:
Add tags to an existing asset | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
- You must of course give the name of the object.
- The simplest way to tag an asset, using the default values for propagation (those shown below), is to use the
meta
.atlan
.classificationNames
structure. - When using this simplified form, you can give the normal human-readable name of the tags rather than the hashed-string representation.
- Alternatively, if you want to override the propagation settings, you can use this more detailed structure.
- Each listed item must itself be a YAML object consisting of the human-readable
name
of the tag and the propagation setting overrides: - (Optional) You can decide whether to propagate this tag (true) or not (false). If you choose false, no propagation of this tag from the asset will occur — neither through lineage nor parent-child relationships.
- (Optional) If propagation is allowed, you can then define whether propagated tags should be removed if this asset is deleted (true) or not (false).
- (Optional) If propagation is allowed, you can also decide whether to disable propagation of the tag only for lineage (true) or still allow it through lineage (false).
- (Optional) If propagation is allowed, you can also decide whether to disable propagation of the tag only for hierarchy (true) or still allow it through hierarchy (false).
- Alternatively, you can specify tags nested within the
meta
.atlan
.classifications
structure. - In this structure, each tag you want to add must be given using its hashed-string representation. Its propagation settings can be overridden using the same options described above.
Replaces all tags
Unlike the examples for the SDKs and raw APIs, dbt will always replace all tags on the asset. Any tags that already exist on the asset that are not specified here will be removed.
Add tags to an existing asset | |
---|---|
1 2 3 4 |
|
- Use the
appendAtlanTags()
helper method, which for most objects requires a minimal set of information. This helper method will construct the necessary request and call the necessary API(s) to add the tags all-in-one. - Because this operation will directly change the asset in Atlan, you must provide it an
AtlanClient
through which to connect to the tenant. - The
qualifiedName
of the asset. - A list of the tags (the names as you set them up in the UI) to add to the asset.
Add tags to an existing asset | |
---|---|
1 2 3 4 5 6 7 8 9 |
|
- Use the
asset.add_atlan_tags()
method, which for most objects requires a minimal set of information. This helper method will construct the necessary request and call the necessary API(s) to add the tags all-in-one. - A list of the tags (the names as you set them up in the UI) to add to the asset.
Add tags to an existing asset | |
---|---|
1 2 3 4 |
|
- Use the
appendAtlanTags()
helper method, which for most objects requires a minimal set of information. This helper method will construct the necessary request and call the necessary API(s) to add the tags all-in-one. - Because this operation will directly change the asset in Atlan, you must provide it an
AtlanClient
through which to connect to the tenant. - The
qualifiedName
of the asset. - A list of the tags (the names as you set them up in the UI) to add to the asset.
POST /api/meta/entity/uniqueAttribute/type/Table/classifications?attr:qualifiedName=default%2Fsnowflake%2F1657037873%2FSAMPLE_DB%2FFOOD_BEV%2FTOP_BEVERAGE_USERS | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
- Each tag you want to add must be given using its hashed-string representation.
- (Optional) You can decide whether to propagate this tag (true) or not (false). If you choose false, no propagation of this tag from the asset will occur — neither through lineage nor parent-child relationships.
- (Optional) If propagation is allowed, you can then define whether propagated tags should be removed if this asset is deleted (true) or not (false).
- (Optional) If propagation is allowed, you can also decide whether to disable propagation of the tag only for lineage (true) or still allow it through lineage (false).
- (Optional) If propagation is allowed, you can also decide whether to disable propagation of the tag only for hierarchy (true) or still allow it through hierarchy (false).
Update on an existing asset¶
To update tags on an existing asset:
Not possible through dbt
In dbt, the tags will be replaced in their entirety. It is not possible to just update a single tag through dbt.
Update tags on an existing asset | |
---|---|
1 2 3 4 5 6 7 8 9 |
|
- Use the
updateAtlanTags()
helper method, which for most objects requires a minimal set of information. This helper method will construct the necessary request and call the necessary API(s) to update tags for an asset, all-in-one. - Because this operation will directly change the asset in Atlan, you must provide it an
AtlanClient
through which to connect to the tenant. - The
qualifiedName
of the asset. - A list of the tags (the names as you set them up in the UI) to update for the asset.
- (Optional) You can decide whether to propagate these tags (true) or not (false). If you choose false, no propagation for these tags from the asset will occur — neither through lineage nor parent-child relationships.
- (Optional) If propagation is allowed, you can then define whether propagated tags should be removed if this asset is deleted (true) or not (false).
- (Optional) If propagation is allowed, you can also decide whether to disable propagation of the tags only for lineage (true) or still allow it through lineage (false).
- (Optional) If propagation is allowed, you can also decide whether to disable propagation of the tag only for hierarchy (true) or still allow it through hierarchy (false).
Update tags on an existing asset | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
- Use the
asset.update_atlan_tags()
method, which for most objects requires a minimal set of information. This helper method will construct the necessary request and call the necessary API(s) to update tags for an asset, all-in-one. - A list of the tags (the names as you set them up in the UI) to update for the asset.
- (Optional) You can decide whether to propagate these tags (True) or not (False). If you choose False, no propagation for these tags from the asset will occur — neither through lineage nor parent-child relationships.
- (Optional) If propagation is allowed, you can then define whether propagated tags should be removed if this asset is deleted (True) or not (False).
- (Optional) If propagation is allowed, you can also decide whether to disable propagation of the tags only for lineage (True) or still allow it through lineage (False).
- (Optional) If propagation is allowed, you can also decide whether to disable propagation of the tag only for hierarchy (True) or still allow it through hierarchy (False).
Update tags on an existing asset | |
---|---|
1 2 3 4 5 6 7 8 9 |
|
- Use the
updateAtlanTags()
helper method, which for most objects requires a minimal set of information. This helper method will construct the necessary request and call the necessary API(s) to update tags for an asset, all-in-one. - Because this operation will directly change the asset in Atlan, you must provide it an
AtlanClient
through which to connect to the tenant. - The
qualifiedName
of the asset. - A list of the tags (the names as you set them up in the UI) to update for the asset.
- (Optional) You can decide whether to propagate these tags (true) or not (false). If you choose false, no propagation for these tags from the asset will occur — neither through lineage nor parent-child relationships.
- (Optional) If propagation is allowed, you can then define whether propagated tags should be removed if this asset is deleted (true) or not (false).
- (Optional) If propagation is allowed, you can also decide whether to disable propagation of the tags only for lineage (true) or still allow it through lineage (false).
- (Optional) If propagation is allowed, you can also decide whether to disable propagation of the tag only for hierarchy (true) or still allow it through hierarchy (false).
PUT /api/meta/entity/uniqueAttribute/type/Table/classifications?attr:qualifiedName=default%2Fsnowflake%2F1657037873%2FSAMPLE_DB%2FFOOD_BEV%2FTOP_BEVERAGE_USERS | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
- Each tag you want to update must be given using its hashed-string representation.
- (Optional) You can decide whether to propagate these tags (true) or not (false). If you choose false, no propagation for these tags from the asset will occur — neither through lineage nor parent-child relationships.
- (Optional) If propagation is allowed, you can then define whether propagated tags should be removed if this asset is deleted (true) or not (false).
- (Optional) If propagation is allowed, you can also decide whether to disable propagation of the tags only for lineage (true) or still allow it through lineage (false).
- (Optional) If propagation is allowed, you can also decide whether to disable propagation of the tag only for hierarchy (true) or still allow it through hierarchy (false).
Remove from existing assets¶
Remove a single tag¶
To remove a single tag from an existing asset:
Remove one tag from an existing asset | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 |
|
- You must of course give the name of the object.
- You can use the
meta
.atlan
.classificationNames
structure, as above. -
When using this simplified form, you can give the normal human-readable name of the tags you want to remain, rather than the hashed-string representation.
The tag being removed is no longer present
You are removing the tag by not specifying it anymore here in dbt.
-
The tags must be nested within the
meta
.atlan
.classifications
structure. -
Each tag you want to remain must be given using its hashed-string representation.
The tag being removed is no longer present
You are removing the tag by not specifying it anymore here in dbt.
Remove one tag from an existing asset | |
---|---|
1 2 3 4 |
|
- Use the
removeAtlanTag()
helper method, which for most objects requires a minimal set of information. This helper method will construct the necessary request and call the necessary API(s) to remove a tag from an asset, all-in-one. - Because this operation will directly change the asset in Atlan, you must provide it an
AtlanClient
through which to connect to the tenant. - The
qualifiedName
of the asset. - The tag (the name you set up in the UI) to remove from the asset.
Remove one tag from an existing asset | |
---|---|
1 2 3 4 5 6 7 8 9 |
|
- Use the
asset.remove_atlan_tag()
method, which for most objects requires a minimal set of information. This method will construct the necessary request and call the necessary API(s) to remove a tag from an asset, all-in-one. - The tag (the name you set up in the UI) to remove from the asset.
Remove one tag from an existing asset | |
---|---|
1 2 3 4 |
|
- Use the
removeAtlanTag()
helper method, which for most objects requires a minimal set of information. This helper method will construct the necessary request and call the necessary API(s) to remove a tag from an asset, all-in-one. - Because this operation will directly change the asset in Atlan, you must provide it an
AtlanClient
through which to connect to the tenant. - The
qualifiedName
of the asset. - The tag (the name you set up in the UI) to remove from the asset.
DELETE /api/meta/entity/uniqueAttribute/type/Table/classification/WCVjmgKnW40G151dESXZ03?attr:qualifiedName=default%2Fsnowflake%2F1657037873%2FSAMPLE_DB%2FFOOD_BEV%2FTOP_BEVERAGE_USERS | |
---|---|
1 |
|
- Note that all of the details for the deletion are embedded in the URL or query parameters to the request. Once again the hashed-string representation of the tag is required. You would either need to first retrieve the list of tags via API to determine this value, or look through the development console of your browser while opening the tag in the Atlan UI.
Remove all tags¶
Could create a new asset
Remember that Atlan matches the provided qualifiedName
to determine whether to update or create the asset.
To remove all tags from an existing asset, you need to specify no tags in your object:
Remove all tags from an existing asset | |
---|---|
1 2 3 4 5 |
|
- You must of course give the name of the object.
- The tags must be nested within the
meta
.atlan
.classifications
structure. To remove all of them, send an explicit empty list.
Remove all tags from an existing asset | |
---|---|
1 2 3 4 5 |
|
- Use the
updater()
method to initialize the object with all necessary attributes for updating it(../advanced-examples/update.md#build-minimal-object-needed). (Removing the tags is still an update to the asset, we are not deleting the asset itself.) - Call the
save()
method to actually update the asset, usingtrue
as the second argument to overwrite tags. Since we have not provided any tags in our object, this will replace the existing tags on the asset with no tags. (In other words, it will remove all tags from the asset.) Because this operation will persist the asset in Atlan, you must provide it anAtlanClient
through which to connect to the tenant. - The response will include that single asset that was updated (again, removing tags is an update to the asset — we are not deleting the asset itself).
Remove all tags from an existing asset | |
---|---|
1 2 3 4 5 6 7 8 9 10 |
|
- Use the
updater()
method to create an asset suitable for modifiaction i.e. with all the requisite attributes. - Call the
save()
method to actually update the asset, usingTrue
for the replace_atlan_tags argument will cause the tags to be overwritten. Since we have not provided any tags in our object, this will replace the existing tags on the asset with no tags. (In other words, it will remove all tags from the asset.) - The response should only include that single asset that was updated (again, removing tags is an update to the asset — we are not deleting the asset itself).
Remove all tags from an existing asset | |
---|---|
1 2 3 4 5 |
|
- Use the
updater()
method to initialize the object with all necessary attributes for updating it(../advanced-examples/update.md#build-minimal-object-needed). (Removing the tags is still an update to the asset, we are not deleting the asset itself.) - Call the
save()
method to actually update the asset, usingtrue
as the second argument to overwrite tags. Since we have not provided any tags in our object, this will replace the existing tags on the asset with no tags. (In other words, it will remove all tags from the asset.) Because this operation will persist the asset in Atlan, you must provide it anAtlanClient
through which to connect to the tenant. - The response will include that single asset that was updated (again, removing tags is an update to the asset — we are not deleting the asset itself).
POST /api/meta/entity/bulk?replaceClassifications=true&replaceBusinessAttributes=false&overwriteBusinessAttributes=false | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 |
|
- Note that the query parameter
replaceClassifications
is equal totrue
in the request. This is what causes the override behavior — so when you do not specify any tags in the request body those overwrite any existing tags on the asset. (The result being that there are then no tags on the asset.) - All assets must be wrapped in an
entities
array. - You must provide the exact type name for the asset (case-sensitive).
- You must provide the exact
qualifiedName
of the asset (case-sensitive). - You must provide the exact name of the asset (case-sensitive).
In bulk¶
You can modify many tags, for many assets, at the same time.
Operates as a replace
Applying tags in bulk can currently only be done as a replacement. All tags on the asset(s) you upate will be replaced with the tags you specify. This means any tags that already exist on the asset in Atlan that are not in your update will be removed from that asset.
Replace tags on multiple assets | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
- You must of course give the name of the object.
- The simplest way to tag an asset, using the default values for propagation (those shown below), is to use the
meta
.atlan
.classificationNames
structure. - When using this simplified form, you can give the normal human-readable name of the tags rather than the hashed-string representation.
- Alternatively, if you want to override the propagation settings, you can use this more detailed structure.
- Each listed item must itself be a YAML object consisting of the human-readable
name
of the tag and the propagation setting overrides: - (Optional) You can decide whether to propagate this tag (true) or not (false). If you choose false, no propagation of this tag from the asset will occur — neither through lineage nor parent-child relationships.
- (Optional) If propagation is allowed, you can then define whether propagated tags should be removed if this asset is deleted (true) or not (false).
- (Optional) If propagation is allowed, you can also decide whether to disable propagation of the tag only for lineage (true) or still allow it through lineage (false).
- (Optional) If propagation is allowed, you can also decide whether to disable propagation of the tag only for hierarchy (true) or still allow it through hierarchy (false).
- Alternatively, you can specify tags nested within the
meta
.atlan
.classifications
structure. - In this structure, each tag you want to add must be given using its hashed-string representation. Its propagation settings can be overridden using the same options described above.
- To apply tags to multiple assets, just list all of the assets in the model file.
Replace tags on multiple assets | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
- Use the
updater()
helper method, which for most objects requires a minimal set of information. This helper method will construct a builder onto which you can chain any tag details. (You can also do this at creation time, using thecreator()
helper method, which will also return a builder.) - You can chain simple Atlan tags using
.atlanTag()
and theAtlanTag.of()
helper. - You can chain a fully-configured Atlan tag using
.atlanTag()
and theAtlanTag.builder()
helper to specify the exact propagation options. - Or you can chain a source-synced tag using
.atlanTag()
and theAtlanTag.of()
helper that takes aSourceTagAttachment
object. - Because creating a source tag attachment may need to look up information in Atlan, you must provide it an
AtlanClient
through which to connect to the tenant. - You can build a source tag attachment by name or qualifiedName of the source tag. To build by name, you need to specify the source tag in the format:
{{connectorType}}/{{connectionName}}@@DB_NAME/SCHEMA_NAME/TAG_NAME
. - You can then also specify the value(s) for that source tag, either by key (first argument to
SourceTagAttachemntValue.of()
) or value (second argument toSourceTagAttachmentValue.of()
). - When you save the object, you must send
true
to the optional parameter to replace tags (otherwise all tags in your request will be ignored). Because this operation will persist the asset in Atlan, you must provide it anAtlanClient
through which to connect to the tenant.
Replace tags on multiple assets | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
- Use the
updater()
helper method, which typically requires only a minimal set of information for most objects. - You can assign Atlan tags directly to
table.atlan_tags
. - To create a fully-configured Atlan tag, use the
AtlanTag()
model, allowing you to specify precise propagation options. - Alternatively, create a source-synced tag using the
AtlanTag.of()
helper, which takes aSourceTagAttachment
object. - Build a source tag attachment using either the
name
orqualified_name
of the source tag. To build by name, specify the source tag in this format:{{connectorType}}/{{connectionName}}@@DB_NAME/SCHEMA_NAME/TAG_NAME
. - Specify the value(s) for the source tag using either the key
(
tag_attachment_key
) or the value (tag_attachment_value
). - When saving the object, include the optional parameter
replace_atlan_tags=true
to replace the tags (otherwise, all tags in the request will be ignored).
Add tags to an existing asset | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
- Use the
updater()
helper method, which for most objects requires a minimal set of information. This helper method will construct a builder onto which you can chain any tag details. (You can also do this at creation time, using thecreator()
helper method, which will also return a builder.) - You can chain simple Atlan tags using
.atlanTag()
and theAtlanTag.of()
helper. - You can chain a fully-configured Atlan tag using
.atlanTag()
and theAtlanTag.builder()
helper to specify the exact propagation options. - Or you can chain a source-synced tag using
.atlanTag()
and theAtlanTag.of()
helper that takes aSourceTagAttachment
object. - Because creating a source tag attachment may need to look up information in Atlan, you must provide it an
AtlanClient
through which to connect to the tenant. - You can build a source tag attachment by name or qualifiedName of the source tag. To build by name, you need to specify the source tag in the format:
{{connectorType}}/{{connectionName}}@@DB_NAME/SCHEMA_NAME/TAG_NAME
. - You can then also specify the value(s) for that source tag, either by key (first argument to
SourceTagAttachemntValue.of()
) or value (second argument toSourceTagAttachmentValue.of()
). - When you save the object, you must send
true
to the optional parameter to replace tags (otherwise all tags in your request will be ignored). Because this operation will persist the asset in Atlan, you must provide it anAtlanClient
through which to connect to the tenant.
POST /api/meta/entity/bulk | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
|
- All assets must be wrapped in an
entities
array. - You must provide the exact type name for the asset (case-sensitive).
- You must provide the exact name of the asset (case-sensitive).
- You must provide the exact
qualifiedName
of the asset (case-sensitive). - Each tag you want to apply to the asset must be wrapped in a
classifications
array. - Each tag you want to add must be given using its hashed-string representation.
- (Optional) You can decide whether to propagate this tag (true) or not (false). If you choose false, no propagation of this tag from the asset will occur — neither through lineage nor parent-child relationships.
- (Optional) If propagation is allowed, you can then define whether propagated tags should be removed if this asset is deleted (true) or not (false).
- (Optional) If propagation is allowed, you can also decide whether to disable propagation of the tag only for lineage (true) or still allow it through lineage (false).
- (Optional) If propagation is allowed, you can also decide whether to disable propagation of the tag only for hierarchy (true) or still allow it through hierarchy (false).
- For source tags, you must also specify an embedded
attributes
in the tag. - You must give the hashed-string representation of the attribute whose
displayName
issourceTagAttachment
. - You must give the name of the tag in the source.
- You must give the
qualifiedName
of the Tag asset representing that tag in Atlan. - You must give the
guid
of the Tag asset representing that tag in Atlan. - You must give the name of the connector for the source where the tag comes from.
- To specify a value for the tag, you must wrap it in a
sourceTagValue
array. - You can then specify the value using
tagAttachmentValue
or its key usingtagAttachmentKey
.
Find hashed-string names¶
When using either the raw APIs or dbt, you must provide the custom metadata names using Atlan's hashed-string representation.
Not necessary for SDKs
Note that this is not needed when using the SDKs, which translate these for you!
To look up the hashed-string representations:
The response will include displayName
and name
for each tag. The displayName
is what you see in Atlan's UI, and the name
is the hashed-string representation:
Simplified response | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
|
- Hashed-string name for the tag named
Marketing Analysis
. - Hashed-string name for the tag named
PII
. - Hashed-string name for the tag named
Sensitivity
. - Hashed-string name for the
sourceTagAttachment
attribute in theSensitivity
classification.