Change description
There are actually two fields in Atlan that capture the description of an asset: description and userDescription.
In the UI, userDescription will take precedence. This is the field that's updated when a user updates the description through the UI.
When a system updates a description, it will populate the description field. This field is only shown in the UI when the userDescription field is empty.
The examples below therefore all update the description field, to allow a user to still override this value through the UI. If you want to actually override any users' descriptions, however, replace description in the examples below with userDescription.
Change existing asset
Remember that Atlan matches the provided qualifiedName to determine whether to update or create the asset.
To change a description on an existing asset:
- dbt
- Java
- Python
- Kotlin
- Raw REST API
models:
- name: TOP_BEVERAGE_USERS # (1)
description: >- # (2)
My new description
- You must of course give the name of the object.
- You just use the normal dbt
descriptionfield to provide a description—no need for themeta.atlan.attributesstructure.
Table table = Table.updater( // (1)
"default/snowflake/1657037873/SAMPLE_DB/FOOD_BEV/TOP_BEVERAGE_USERS", // (2)
"TOP_BEVERAGE_USERS") // (3)
.description("My new description") // (4)
.build(); // (5)
AssetMutationResponse response = table.save(client); // (6)
assert response.getUpdatedAssets().size() == 1 // (7)
- Use the
updater()helper method to create the minimal object necessary to do an update. - The
qualifiedNameof the object. - The
nameof the object. - Provide the new description.
- Build the updater into an object.
- Send the update to Atlan. Because this operation will persist the asset in Atlan, you must provide it an
AtlanClientthrough which to connect to the tenant. - The response will include that single asset that was updated.
from pyatlan.client.atlan import AtlanClient
from pyatlan.model.assets import Table
client = AtlanClient()
table = Table.updater( # (1)
qualified_name="default/snowflake/1657037873/SAMPLE_DB/FOOD_BEV/TOP_BEVERAGE_USERS",
name="TOP_BEVERAGE_USERS",
)
table.description = "My new description" # (2)
response = client.asset.save(table) # (3)
assert 1 == len(response.assets_updated(asset_type=Table)) # (4)
- Use the
updater()method to create an asset suitable for modification that is, with all the requisite attributes. - Provide the new description.
- Send the update to Atlan.
- The response should only include that single asset that was updated.
val table = Table.updater( // (1)
"default/snowflake/1657037873/SAMPLE_DB/FOOD_BEV/TOP_BEVERAGE_USERS", // (2)
"TOP_BEVERAGE_USERS") // (3)
.description("My new description") // (4)
.build() // (5)
val response = table.save(client) // (6)
assert(response.updatedAssets.size == 1) // (7)
- Use the
updater()helper method to create the minimal object necessary to do an update. - The
qualifiedNameof the object. - The
nameof the object. - Provide the new description.
- Build the updater into an object.
- Send the update to Atlan. Because this operation will persist the asset in Atlan, you must provide it an
AtlanClientthrough which to connect to the tenant. - The response will include that single asset that was updated.
{
"entities": [ // (1)
}
]
}
- All assets must be wrapped in an
entitiesarray. - 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
qualifiedNameof the asset (case-sensitive). - Provide the new description.
Remove from existing asset
To remove a description from an existing asset:
- dbt
- Java
- Python
- Kotlin
- Raw REST API
It's currently not possible to remove a description from an asset via dbt.
Table table = Table.removeDescription( // (1)
client, // (2)
"default/snowflake/1657037873/SAMPLE_DB/FOOD_BEV/TOP_BEVERAGE_USERS", // (3)
"TOP_BEVERAGE_USERS"); // (4)
- Use the
removeDescription()helper method, which for most objects requires a minimal set of information. This helper method will construct the necessary request, call the necessary APIs, and return with the result of the removal operation all-in-one. - Because this operation will directly change the asset in Atlan, you must provide it an
AtlanClientthrough which to connect to the tenant. - The
qualifiedNameof the object. - The
nameof the object.
from pyatlan.client.atlan import AtlanClient
from pyatlan.model.assets import Table
client = AtlanClient()
table = Table.updater( # (1)
qualified_name="default/snowflake/1657037873/SAMPLE_DB/FOOD_BEV/TOP_BEVERAGE_USERS",
name="TOP_BEVERAGE_USERS",
)
table.description = None # (2)
response = client.asset.save(table) # (3)
assert 1 == len(response.assets_updated(asset_type=Table)) # (4)
- Use the
updater()method to create an asset suitable for modification that is, with all the requisite attributes. - Set the description to
None. - Send the update to Atlan.
- The response should only include that single asset that was updated (again, removing owners is an update to the asset—we'ren't deleting the asset itself).
val table = Table.removeDescription( // (1)
client, // (2)
"default/snowflake/1657037873/SAMPLE_DB/FOOD_BEV/TOP_BEVERAGE_USERS", // (3)
"TOP_BEVERAGE_USERS") // (4)
- Use the
removeDescription()helper method, which for most objects requires a minimal set of information. This helper method will construct the necessary request, call the necessary APIs, and return with the result of the removal operation all-in-one. - Because this operation will directly change the asset in Atlan, you must provide it an
AtlanClientthrough which to connect to the tenant. - The
qualifiedNameof the object. - The
nameof the object.
{
"entities": [ // (1)
}
]
}
- All assets must be wrapped in an
entitiesarray. - 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
qualifiedNameof the asset (case-sensitive). - You must set the
descriptiontonull.
When creating asset
To add a description when creating an asset:
- dbt
- Java
- Python
- Kotlin
- Raw REST API
models:
- name: TOP_BEVERAGE_USERS # (1)
description: >- # (2)
My description of the asset
- You must of course give the name of the object.
- You just use the normal dbt
descriptionfield to provide a description—no need for themeta.atlan.attributesstructure.
Table table = Table
.creator("TOP_BEVERAGE_USERS", // (1)
"default/snowflake/1657037873/SAMPLE_DB/FOOD_BEV")
.description("My description of the asset") // (2)
.build(); // (3)
AssetMutationResponse response = table.save(client); // (4)
assert response.getCreatedAssets().size() == 1 // (5)
- Use the
creator()method to initialize the object with all necessary attributes for creating it (../advanced-examples/create.md#build-minimal-object-needed). - Set the description that should be added.
- Call the
build()method to build the enriched object. - Call the
save()method to actually create the asset with this description. Because this operation will persist the asset in Atlan, you must provide it anAtlanClientthrough which to connect to the tenant. - The response will include that single asset that was created.
from pyatlan.client.atlan import AtlanClient
from pyatlan.model.assets import Table
client = AtlanClient()
table = Table.creator( # (1)
name="TOP_BEVERAGE_USERS",
schema_qualified_name="default/snowflake/1657037873/SAMPLE_DB/FOOD_BEV",
)
table.description = "My description of the asset" # (2)
response = client.asset.save(table) # (3)
assert 1 == len(assets_created := response.assets_created(asset_type=Table)) # (4)
table = assets_created[0] # (5)
- Use the
creator()method to initialize the object with all necessary attributes for creating it. - Set the description.
- Call the
save()method to actually create the asset with these owners. - Since a save can add, update, delete or partially update multiple assets the
assets_created()method can be used to return a list of the assets of the specified type that were added. The assert statement is present to make sure aTableasset was created. - Since only one
Tablehas been created we use an index of 0 to retrieve the newly created table.
val table = Table
.creator("TOP_BEVERAGE_USERS", // (1)
"default/snowflake/1657037873/SAMPLE_DB/FOOD_BEV")
.description("My description of the asset") // (2)
.build() // (3)
val response = table.save(client) // (4)
assert(response.createdAssets.size == 1) // (5)
- Use the
creator()method to initialize the object with all necessary attributes for creating it (../advanced-examples/create.md#build-minimal-object-needed). - Set the description that should be added.
- Call the
build()method to build the enriched object. - Call the
save()method to actually create the asset with this description. Because this operation will persist the asset in Atlan, you must provide it anAtlanClientthrough which to connect to the tenant. - The response will include that single asset that was created.
{
"entities": [ // (1)
},
"description": "My description of the asset" // (6)
}
}
]
}
- All assets must be wrapped in an
entitiesarray. - You must provide the exact type name for the asset (case-sensitive).
- You must provide a name for the asset.
- In the case of a table, the
qualifiedNamemust be the concatenation of the parent schema's qualifiedName and the name of the table. - When creating a table, you must specify the schema to create it within. This is defined by the
atlanSchemaattribute. You must specify both the type (must beSchema) and qualifiedName of the schema within theatlanSchemaattribute—and the schema must already exist. - Provide the description.