Type | Read/write | Author | Availability |
Data provider | Write | FINBOURNE | Provided with LUSID |
Providing you have sufficient access control permissions, the Sys.Registration.Metadata.Writer
provider enables you to write a Luminesce SQL query that creates or updates metadata for providers and custom views in Luminesce.
You must construct a valid table of data to write, one provider per record. Sys.Registration.Metadata.Writer
lists the fields (columns) available to populate with values for each record, and has a set of parameters to help you construct a valid table.
See also: Sys.Registration.Metadata, Sys.Registration
Basic usage
@table_of_data = <select-statement>;
select * from Sys.Registration.Metadata.Writer where toWrite = @table_of_data;
Query parameters
Sys.Registration.Metadata.Writer
has parameters that help you construct a valid table of data to write.
Note: The ToWrite
parameter is mandatory and describes the metadata you are creating.
To list available parameters, their data types, default values, and an explanation for each, run the following query using a suitable tool:
select FieldName, DataType, ParamDefaultValue, Description from Sys.Field where TableName = 'Sys.Registration.Metadata.Writer' and FieldType = 'Parameter';
Data fields
Sys.Registration.Metadata.Writer
lists the fields you can populate in your table of data to write.
Depending on the operation you want to perform, the following fields are mandatory to include in the table of data:
Operation | Mandatory fields |
Upsert, Delete |
|
To list all available fields, their data types, whether fields are considered 'main', and an explanation for each, run the following query using a suitable tool:
select FieldName, DataType, IsMain, IsPrimaryKey, SampleValues, Description from Sys.Field where TableName = 'Sys.Registration.Metadata.Writer' and FieldType = 'Column';
Examples
Note: For more example Luminesce SQL queries, visit our Github repo.
Example 1: Write metadata for an existing provider
In this example, Sys.Registration.Metadata.Writer
is used to store some metadata keys and values for a custom view Views.MaturityDaysToExpiry
. By default, Sys.Registration.Metadata.Writer
returns all metadata for all providers, so a ProviderName
is specified. Note you can only add metadata to a provider after it has been created.
@data_to_write = select 'Views.MaturityDaysToExpiry' as ProviderName, 'InstrumentExpiryAlgo' as MetadataKey, 'True' as MetadataValue; select * from Sys.Registration.Metadata.Writer where ToWrite = @data_to_write and ProviderName = 'Views.MaturityDaysToExpiry';
The query returns a table of data that contains metadata for the provider.
Example 2: Update metadata for a provider
In this example, a metadata value is updated by specifying 'Delete'
as WriteAction
for the current value and 'Upsert'
as WriteAction
for the new value.
@vals = values ('True', 'Delete'), ('False', 'Upsert'); @table_of_data = select 'Views.MaturityDaysToExpiry' as ProviderName, 'InstrumentExpiryAlgo' as MetadataKey, column1 as MetadataValue, column2 as WriteAction from @vals; select * from Sys.Registration.Metadata.Writer where ToWrite = @table_of_data and ProviderName = 'Views.MaturityDaysToExpiry';
Example 3: Delete metadata from a provider
In this example, 'Delete' as WriteAction
is added to the ToWrite
table of data to delete some metadata.
@data_to_write = select 'Views.MaturityDaysToExpiry' as ProviderName, 'InstrumentExpiryAlgo' as MetadataKey, 'False' as MetadataValue, 'Delete' as WriteAction; select * from Sys.Registration.Metadata.Writer where ToWrite = @data_to_write;
Example 4: Write metadata to multiple providers at the same time
In this example, the query defaults to an upsert operation as no explicit WriteAction
is specified.
@vals = values ('RebalanceAlgo.RemoveSmallPositions'), ('RebalanceAlgo.IncreaseEquity'), ('RebalanceAlgo.IncreaseBond'); @table_of_data = select column1 as ProviderName, 'RebalanceAlgo' as MetadataKey, 'True' as MetadataValue from @vals; select * from Sys.Registration.Metadata.Writer where ToWrite = @table_of_data;