Create options (enumerations)¶
Options (or enumerations) in Atlan allow you to define a set of valid values for custom metadata attributes. Like other objects in the SDK, enumerations implement the builder pattern. This allows you to progressively build-up the list of values you want to create.
Build minimal object needed¶
For example, to create an enumeration to capture a data quality dimension:
Build enumeration for creation | |
---|---|
1 2 3 4 |
|
- When creating the enumeration, you must provide a name (
DataQualityDimensions
in this example). - You can then add as many valid values as you want: always as a list of strings.
- As with all other builder patterns, you must
build()
the object you've defined.
Build enumeration for creation | |
---|---|
1 2 3 4 5 6 |
|
- When creating the enumeration, you must provide a name (
DataQualityDimensions
in this example). - You can then add as many valid values as you want: always as a list of strings.
- As with all other builder patterns, you must
build()
the object you've defined.
POST /api/meta/types/typedefs | |
---|---|
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 |
|
- All enumeration definitions must be specified within the
enumDefs
array. - Each definition must be defined with a category set to
ENUM
. - The name you provide for the definition will be used both for the front and back-end.
- Within the definition, you need to define each valid value for the enumeration within the
elementDefs
array. Each valid value should have both a stringvalue
(as it will appear in the UI) and an integerordinal
. Both must be unique within the enumeration.
Create the enumeration from the object¶
Now that the object is built, this enumDef
object will have the required information for Atlan to create it.
You can then actually create the enumeration in Atlan by calling the create()
method on the object itself:
Create the enumeration | |
---|---|
5 |
|
- The
create()
operation will actually create the enumeration within Atlan, including all the valid values that were defined as part of it.
Create the enumeration | |
---|---|
7 8 9 10 |
|
- The
typedef.create()
operation will actually create the enumeration definition within Atlan, including all the valid values that were defined as part of it.
Creation implicit in step above
The actual creation of the custom metadata structure is implicit in the example above.
Use an enumeration in a custom metadata definition¶
To use an enumeration to restrain the values for an attribute in a custom metadata definition:
Build custom metadata definition for creation | |
---|---|
6 7 8 9 10 11 12 13 14 |
|
- When creating the custom metadata structure, you must provide a name (
DQ
in this example). - You can then add as many attributes to that structure as you want.
- Each attribute must have a name.
- Each attribute must have a type. When using the enumeration as the type (to constrain its possible values), use
AtlanCustomAttributePrimitiveType.OPTIONS
as the type. - You must then also specify the enumeration that defines the valid values for this attribute. Carrying on the same example, we give the name of the enumeration here:
DataQualityDimensions
. - You must also specify whether the attribute allows multiple values to be captured on it (
true
) or only a single value (false
). - You can specify how the custom metadata should appear (in this case, with an emoji).
- As with all other builder patterns, you must
build()
the object you've defined. - Then you can
create()
the custom metadata definition within Atlan, including this enumeration-constrained attribute that was defined as part of it.
Build custom metadata definition for creation | |
---|---|
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
- When creating the custom metadata structure, you must provide a name (
DQ
in this example). - You can then add as many attributes to that structure as you want.
- Each attribute must have a name.
- Each attribute must have a type. When using the enumeration as the type (to constrain its possible values), use
AtlanCustomAttributePrimitiveType.OPTIONS
as the type. - You must then also specify the enumeration that defines the valid values for this attribute. Carrying on the same example, we give the name of the enumeration here:
DataQualityDimensions
. - You can specify how the custom metadata should appear (in this case, with an emoji).
- Then you can create the custom metadata definition within Atlan, including this enumeration-constrained attribute that was defined as part of it.
POST /api/meta/types/typedefs | |
---|---|
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 |
|
- When creating the custom metadata structure, you must provide a name (
DQ
in this example). - You can then add as many attributes to that structure as you want.
- Each attribute must have a name. Note, however, that the
name
should be sent as an empty string when creating an attribute (the name will be generated by the back-end), and it is actually thedisplayName
that gives the name as it will appear in the UI. - You must specify the enumeration that defines the valid values for this attribute. Carrying on the same example, we give the name of the enumeration here:
DataQualityDimensions
. -
Each attribute must also have a primitive type. When using the enumeration as the type (to constrain its possible values), use:
enum
as the primitive typeisEnum
set totrue
- and set
enumType
to the name of the enumeration