Creating Buckets in Beast Mode



So I'm trying to create temperature buckets in beast mode. Here's my formula:

when (`temperature` >= '33' and `temperature` <= '39') then '30s'
when (`temperature` >= '40' and `temperature` <= '49') then '40s'
when (`temperature` >= '50' and `temperature` <= '59') then '50s'
when (`temperature` >= '60' and `temperature` <= '69') then '60s'
when (`temperature` >= '70' and `temperature` <= '79') then '70s'
when (`temperature` >= '80' and `temperature` <= '89') then '80s'
when (`temperature` >= '90' and `temperature` <= '99') then '90s'
when (`temperature` >= '100') then '100s'
else 'Freezing'


When I look at the different buckets, all temperatures that are greater or equal to 100 and all temperatures below freezing are all grouped in the '100s' bucket. Is there something wrong with my equation?

Best Answers

  • jaeW_at_Onyx
    jaeW_at_Onyx Budapest / Portland, OR 🟤
    Accepted Answer

    Is `temperature` numeric or string?


    '33' and 33 ARE NOT the same thing. '33' is a string whereas 33 is numeric.


    I suspect you want

    CASE when (`temperature` >= 33 and `temperature` <= 39) then '30s'

  • MarkSnodgrass
    MarkSnodgrass Portland, Oregon 🔴
    Accepted Answer

    @jaeW_at_Onyx  is correct that your temperature must be a string value and needs to be converted to numeric. You can do this very easily in Magic ETL by adding a Set Column Type tile to your ETL. 

    Also, you can simplify your CASE statement since CASE statements exit out of the function once it finds a matching criteria. This means you could rewrite it like this:

    when `temperature` <= 32 then 'Freezing'
    when `temperature` <= 39 then '30s'
    when `temperature` <= 49 then '40s'
    when `temperature` <= 59 then '50s'
    when `temperature` <= 69 then '60s'
    when `temperature` <= 79 then '70s'
    when `temperature` <= 89 then '80s'
    when `temperature` <= 99 then '90s'
    else '100s'


  • The values were coming in as a string but I figured it out! 

    Thanks for all the help!