how does EMA API uses DataDictionary and why do we need it (Uses and Role ) and do i need to include

how does EMA API uses DataDictionary and why do we need it (Uses and Role ) and do i need to include it externally

Best Answer

  • Hi @rkumar

    If you examine the RDMFieldDictionary and enumtype.def files with a text editor you will note that they contain the field definitions (i.e. ID, name, type etc) and enumeration values for the enum type fields, respectively.

    image

    RMDFieldDictionary extract

    image

    enumtype.def extract

    EMA uses the dictionary files to decode the data it receives from the server / provider.

    The recommend approach is to use ChannelDictionary (i.e. download dictionary from the server/provider) rather than local FileDictionary. This is because the dictionary files are updated a few times each year and using a local FileDictionary could cause problems if you try to decode a field whose definition no longer matches the one in your local outdated FileDictionary

    Looking at some of your other queries, I noticed that your were testing Canned data using the sink_driven_src tool - which does not support dictionary download. Once you connect to a real feed e.g. via an ADS server or hosted feed, these should allow you to use ChannelDictionary and therefore no longer require you to maintain a local FileDictionary.

    Note that the actual download of the ChannelDictionary is done by behind the scenes by EMA when you specify DictionaryType of ChannelDictionary. Just to be clear, the dictionary is stored in memory and not written to a physical file on your local storage.