Geocoding by IP Address using a QlikView Expressor Extension



    For a refresher on what a QlikView Expressor (QVE) Extension is please see this article and tutorial:



    The attached extension object (bottom of post) is to be used with QlikView Expressor 3.9.x and can be installed and enabled in a QVE Workspace. The extension object has been built using QlikView Expressor Datascript and the new SDK Extension Builder. Please see the above mentioned link for more on building your own extensions.


    The Need


    A customer needed the ability to enrich their data sets with additional location information including gecoding those locations for mapping purposes. All they had as input was a list of IP addresses (from logs or DB queries) that were accessing their systems. They wanted this process to be reusable, repeatable and shareable with other applications and development groups.



    The Extension


    The attached extension () is provided as a QlikView Expressor Transform Operator which accepts incoming IP addresses. It then geocodes them using a free RESTful web service API ( and provides the following additional location data:




    Please see for information about the web service usage and limits.



    The Extension Properties


    Custom properties for the extension simply include the ability to toggle the returned results in the Results pane as well as set a sleep time in between API calls. This may be necessary as the web service may have time period execution query limits on the number of results that are returned.



    Installing the Extension


    Follow the instructions outlined here:


    Using the Extension


    Note: Extension operators that do not use Connection or Schema artifacts will be in the "Templates" tab of the corresponding operator:




    • Drag the GeocodeIPAddress operator over to the canvas after the input operator that returns the IP address data
    • Double click the operator to access the Rules Editor (or click Edit Rules in the property panel)
    • Simple take your incoming input field (ip) and connect to the "ip" parameter



    • Connect the operator's output port to your write operator




    • The attachments at the bottom of this document contains:
      • 1 zip file - The QVE project with extension descriptor library
      • 1 extension - The QVE Extension object (FreeGeocoderByIP.eex)
      • 1 data input file - Sample IP inputs (justIps.txt)

    • Previous knowledge of using QVE is recommended (see sample project in the .zip file for complete example)
    • Unzip to a temp location
    • Install the extension
    • Do not unzip use the Import Projects tool from the QVE Workspace to import that project
    • Adjust your File Connection artifact (InputAndOuputDataFiles) to match the corresponding file path location of your drive


    The Results




    Michael Tarallo
    Senior Product Marketing Manager
    QlikView and QlikView Expressor
    Follow me - @mtarallo