Creating Buckets in Beast Mode

Hello!

 

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

case
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'
end

 

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 🟤
    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'

    Jae Wilson
    Check out my 🎥 Domo Training YouTube Channel 👨‍💻

    **Say "Thanks" by clicking the ❤️ in the post that helped you.
    **Please mark the post that solves your problem by clicking on "Accept as Solution"
  • MarkSnodgrass
    MarkSnodgrass Portland, Oregon 🥷
    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:

    case
    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'
    end
    **Make sure to <3 any users posts that helped you.
    **Please mark as accepted the ones who solved your issue.

Answers

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

    Thanks for all the help!