Accessing Values in Dictionary

Certified Associate Developer

 

Hi team

I want to access values in a dictionary without using a loop, because in real-time we have 440 rows, and each row has 150 columns. Running a loop over each row to get values is causing performance issues.

I checked the Appian Community and found that we can use the a!keys() function to extract all keys

Id (PK), PartNumber, Status, Country_1, Country_2, Country_3, ..., Country_150

We are using CDT to get data from DB so output of CDT in dictionary format.

Expected output:
countries: {
{country_1, country_2, country_3, ..., country_150}----for 1 st row
{country_1, country_2, country_3, ..., country_150}-----for 2nd row
}
*** One way i found is writing index on all 150 columns  but it will increase code length  is ther other alternative way other than this

  Discussion posts and replies are publicly visible

Parents
  • +1
    Certified Lead Developer
    Running a loop over each row to get values is causing performance issues.

    Simply, Use dot-notation/index/property to extract all columns at once without loops.

    One way i found is writing index on all 150 columns  but it will increase code length  is ther other alternative way other than this

    Code length does NOT affect performance - only execution complexity does. Writing 150 dot notation or index() statements executes much faster than loops.

    Alternatively, 
    Create an aggregated view: SELECT request_id, GROUP_CONCAT(country SEPARATOR ',') as countries_list FROM child_table GROUP BY request_id. Returns one row per request with comma-separated countries.
    In Appian: split(local!data.countries_list, ",").

Reply
  • +1
    Certified Lead Developer
    Running a loop over each row to get values is causing performance issues.

    Simply, Use dot-notation/index/property to extract all columns at once without loops.

    One way i found is writing index on all 150 columns  but it will increase code length  is ther other alternative way other than this

    Code length does NOT affect performance - only execution complexity does. Writing 150 dot notation or index() statements executes much faster than loops.

    Alternatively, 
    Create an aggregated view: SELECT request_id, GROUP_CONCAT(country SEPARATOR ',') as countries_list FROM child_table GROUP BY request_id. Returns one row per request with comma-separated countries.
    In Appian: split(local!data.countries_list, ",").

Children