Question

Parameters - Unexpected behaviour

  • 25 August 2021
  • 1 reply
  • 37 views

Hi all,

I’m using a Parameter that I pass into a Dynamic Measure and into an HTML field that I use as a separator within a dashboard:

The parameter looks like this:

  parameter: handset_sales_picker {

    description: "To toggle betweeen warehouse handset sales or platform handset sales. Use with Dynamic Handset Sales"

    hidden: no

    type: unquoted

    default_value: ""

    allowed_value: {

      label: "Warehouse"

      value: "handsets_sales"

    }

    allowed_value: {

      label: "Platform"

      value: "plat_handset_sales"

    }

  }

The dynamic measure looks like this:

  measure: dynamic_handset_sales {

    description: "It allows to toggle between Total Handset Sales and Total Platform Handset Sales"

    hidden: no

    group_label: "Handset Sales - Dynamic"

    label: "{% if handset_sales_picker._parameter_value == 'handsets_sales' %}  Total Handset Sales

            {% elsif handset_sales_picker._parameter_value == 'plat_handset_sales' %}  Total Platform Handset Sales

            {% endif %}"

    group_item_label: "Dynamic Total Handset Sales"

    type: number

    sql:

      {% if handset_sales_picker._parameter_value == 'handsets_sales' %} ${total_handset_sales}

      {% elsif handset_sales_picker._parameter_value == 'plat_handset_sales' %} ${total_plat_handset_sales}

      {% endif %}

    ;;

    html:

      {% if handset_sales_picker._parameter_value == 'handsets_sales' %}  {{ total_handset_sales._rendered_value }}

      {% elsif handset_sales_picker._parameter_value == 'plat_handset_sales' %}  {{ total_plat_handset_sales._rendered_value }}

      {% endif %}

    ;;

  }

 

The HTML field looks like this, bear in mind this dimension is within a different View to the one in which the Parameter and Dynamic  Measure have been defined

  dimension: subheader_test {

    html:<div style=

          "background: linear-gradient(180deg, #EB5F8E, #EB5F8E);

          color: #000000;

          {% if title_for_subheader_value._value  != "" and comment_for_subheader_value._value  != "" %} height: 160px !important;

          {% else %} height: 120px !important; {% endif %}

          font-weight: bolder;

          align-self: center;

          text-align: center;

          padding-left: 10px;

          padding-top: 30px;

          padding-bottom: 30px;

          font-family: 'helvetica';

          font-size: 30px">

          <div style="float:left;"><img src="https://www.giffgaff.design/images/DS-main-img-mobile-20200304@2x.png" height="80" /></div>

          <div style="float:right;"><img src="https://www.giffgaff.design/images-DS-main-img-mobile-20200304@2x.png" height="80" /></div>

          {% if fact_total_marketing.handset_sales_picker._parameter_value == 'handsets_sales' %}  <h>{{title_for_subheader_value._rendered_value}} -  Warehouse</h>

          {% elsif fact_total_marketing.handset_sales_picker._parameter_value  == 'plat_handset_sales' %}  <h>{{title_for_subheader_value._rendered_value}} - Platform</h>

          {% else%} <h>{{title_for_subheader_value._rendered_value}}</h>

          {% endif %}

          <p style = "font-weight: normal; text-align: left; font-size: 18px;">{{comment_for_subheader_value._rendered_value}}</p>

        </div> ;;

    sql: 1 ;;

  }

   

The setup is, the Parameter is a filter in the dashboard, that updates the measures and the text in the HTML field.

Although I noticed that if I change the ‘allowed values’ (i.e. ‘handsets_sales’ & ‘plat_handset_sale’) in the Parameter definition, the query breaks and says it can’t find such value (whatever is the value I put in the Parameter, for instance could be ‘handset’). How could this be possible? I thought that I could put any value I want in the Parameter. In fact I was capable of doing so, but when I brought the Parameter into the HTML field, the field would break. 

 

Coincidentally I noticed that the value names ‘handsets_sales’ & ‘plat_handset_sale’ are also dimensions defined in the View


  dimension: handsets_sales {

    hidden: yes

    type: number

    sql: ${TABLE}.handsets_sales ;;

  }

 

  dimension: plat_handset_sales {

    hidden: yes

    type: number

    sql: ${TABLE}.plat_handset_sales ;;

  }

 

Does anyone knows the reason for this? It’s very odd to me, and I’m a bit worried that I could have issues in the future.

Thanks,

 


This topic has been closed for comments

1 reply

Userlevel 1

Hiya!

 

When you say you change allowed values in parameter definition - do you also change it everywhere in your measures? 

Because there are hardcoded values in the if statement like here  

 sql:

{% if handset_sales_picker._parameter_value == 'handsets_sales' %} ${total_handset_sales}

{% elsif handset_sales_picker._parameter_value == 'plat_handset_sales' %} ${total_plat_handset_sales}

{% endif %}

;;

and there is no {% else %} statement, so when those two first conditions are not met, it is unknown what should be done, there is no rule for it.