Import data to read quantities per dimension instead of actual data


Hello, I am trying to create an inventory model for a bunch of server farms. i have one csv file with over 15000 machines. For each machine, it shows its location, its manufacturer, the model, how many cpu cores, and a cpu factor. I want to create a module that shows me the average of cpu cores x cpu factor per location. Because the csv file has over 15000 rows, I am not quite sure how I should import the file to obtain my target module. To start off, I want to have a module that just shows how many machines there are per location. So it would just be how many rows read back each location. Really stuck and now sure how to start. Thank you. 


  • @davargas 

    Great question and use case. To sum up the various properties I would suggest the following:

    • Create two system modules, a module that only contains the machine list and one that contains only the location list. Make sure both lists have a top value
    • In that module add all the properties as individual line items.
    • If you need the machine statistics across time, you'll need to create a transaction module that holds this information which will only have one unique code [machine x location]. Time will be dimensionalized. See @rob_marshall best practice on transaction modules.
    • Create a system module for your transaction list, the one that has a code [machine x location]
    • In that system module you'll need to parse out the machine and the location.
    • Finally, create a planning module that is location x time. In that module you can sum up the CPU Cores and/or average # of cores.
  • @davargas 

    See if this helps


    Step 1: Create a list call it as Unique Identifier. This list has to be updated from the .csv file. Make sure you have the unique key in the file (that's a must)

    Step 2: Using Unique Identifier as dimension, Create a module DAT01 Machines and load the data into it by mapping on the unique identifier.

    Step 2a: Create a list called Location from the same file. Create a Line item, format it on Location list and use FINDITEM(Location, Location(Text)) 

    Step 3: Create a line item in DAT01, call it CPU cores x CPU factor and do the calculations.

    Step 4: Create another module CALC01 Machines dimensioned by Locations and use the formula like DAT01 Machines.'CPU cores x CPU factor'[AVERAGE:'DAT01.Locations']




    Miz Logix

  • @Misbah thank you for the response. Could you elaborate on 2a? 

  • @JaredDolich @Misbah Thank you for the replies. I now have this module setup. On rows, I have a list with about 15000+ members. 


    Factor (Adjusted), Weighted Factor, Memory/Core, and Core/Node are line item calculations. Site and SuperPool Are list formatted line items. I want to create another module with site and superpool as pages and then display the averages of weighted factor, memory/core, and core/node for whatever is selected. Site and superpool both only have about 10 list memebers. Any idea how I can accomplish this? 

  • @davargas 


    Create a module dimensioned by whatever the format of Site and SuperPool line items are. In this module create three lines

    Line 1 -> Module 1. Weighted factor[Average: Module 1.Site, Average: Module 1. SuperPool]

    Line 2 -> Module 1. 'Memory/Core'[Average: Module 1.Site, Average: Module 1. SuperPool]

    Line 3 -> Module 1. 'Core/Node'[Average: Module 1.Site, Average: Module 1. SuperPool]


    Hope that helps


    Miz Logix

  • @davargas When you import the data, if the Location data that is being imported is in Text format then you would need to create additional line item and use FINDITEM function so that you could convert Text Formatted Location line into List Formatted Location. This will be required because in order for you to Sum by Locations, you will have to have Location as list formatted in Source Module. 


    Note: SUM function in Anaplan only works on List, Date and or Time Period formatted Line items



    Miz Logix