Type | Read/write | Author | Availability |
---|---|---|---|
Read | Finbourne | Provided with LUSID |
Providing you have sufficient access control permissions, the Lusid.Property
provider enables you to write a Luminesce SQL query that retrieves custom properties for particular types of entity.
Note the syntax and behavior of this provider differs depending on the entity type.
See also: Lusid.Property.Writer
Portfolios and portfolio groups
In your query you must specify either:
The
EntityScope
andEntityId
fields to identify the scope and code of a portfolio or portfolio group whose properties to return.The
PropertyScope
andPropertyCode
fields to identify the scope and code of a property whose parent portfolios or portfolio groups to return.
For example, to retrieve all the properties for a particular portfolio:
select * from Lusid.Property where Domain = 'Portfolio'
and EntityScope = 'Finbourne-Examples' and EntityId = 'UK-Equities';
To retrieve all the portfolio groups that have a particular property:
select * from Lusid.Property where Domain = 'PortfolioGroup'
and PropertyScope = 'FundManagers' and PropertyCode = 'Name';
To retrieve all properties for all portfolios:
select prop.*
from Lusid.Portfolio port
inner join Lusid.Property prop
on prop.Domain = 'Portfolio'
and prop.EntityScope = port.PortfolioScope
and prop.EntityId = port.PortfolioCode;
Instruments
In your query you must specify either:
The
EntityIdType
andEntityId
fields to identify an instrument whose properties to return. TheEntityIdType
field refers to a unique instrument identifier, and theEntityId
field to a valid value for that identifier.The
PropertyScope
andPropertyCode
fields to identify the scope and code of a property whose instruments to return.
Specify the EntityScope
field as well if instruments are mastered in a custom instrument scope (otherwise only the built-in default
scope is searched).
For example, to retrieve all the properties for a particular instrument identified by LUID:
select * from Lusid.Property where Domain = 'Instrument'
and EntityIdType = 'LusidInstrumentId' and EntityId = 'LUID_G67H99J6';
To retrieve all the properties for a particular instrument identified by FIGI and mastered in a custom scope:
select * from Lusid.Property where Domain = 'Instrument' and EntityScope = 'my-custom-instrument-scope'
and EntityIdType = 'Figi' and EntityId = 'BBG000BDZGH6';
To retrieve all the instruments in the default
scope that have a particular property:
select * from Lusid.Property where Domain = 'Instrument'
and PropertyScope = 'Ibor' and PropertyCode = 'GICSSector';
To retrieve a history of values for a particular time-variant property property for a particular entity, specify the GetHistorical
query parameter:
select * from Lusid.Property where Domain = 'Instrument'
and EntityIdType = 'LusidInstrumentId' and EntityId = 'LUID_G67H99J6'
and PropertyScope = 'Ibor' and PropertyCode = 'AnalystRating' and GetHistorical = True;
To retrieve all the properties for all the equity instruments in the default
scope:
select * from Lusid.Property where Domain = 'Instrument'
and EntityIdType = 'LusidInstrumentId' and EntityId in
(select LusidInstrumentId from Lusid.Instrument.Equity);
Persons and legal entities
In your query you must specify the EntityScope
, EntityIdType
and EntityId
fields to identify a person or legal entity whose properties to return. These fields refer to the three components of a user-specified identifier for these entity types: idTypeScope
, idTypeCode
and code
respectively.
Note: You cannot reverse this operation and specify the
PropertyScope
andPropertyCode
fields to look up all the people or legal entities that have a particular property.
For example, to retrieve all the properties for a person whose identifier has an idTypeScope
of PortfolioManagers
, an idTypeCode
of ManagerId
and a code
of PortMan1
:
select * from Lusid.Property where Domain = 'Person'
and EntityScope = 'PortfolioManagers' and EntityIdType = 'ManagerId' and EntityId = 'PortMan1';
Note: Since an identifier is defined under-the-hood as a property type with a 3-stage key, this query returns the identifier as well.
To retrieve all the properties for a particular legal entity:
select * from Lusid.Property where Domain = 'LegalEntity'
and EntityScope = 'InternationalBanks' and EntityIdType = 'BankId' and EntityId = 'Bank1';
To retrieve all the properties for all the people identified as portfolio managers:
select prop.*
from Lusid.Person per
inner join Lusid.Property prop
on prop.Domain = 'Person'
and prop.EntityScope = 'PortfolioManagers'
and prop.EntityIdType = 'ManagerId'
and prop.EntityId = per.PortManId;
Note: This query relies on prior configuration of the
Lusid.Person
provider to inline the PortManId identifier as a field.