Slack reports & Pulse logic

Hello!

Thank you again for such a wonderful initiative as Metabase.

I have shown this tool to our business customers, and received numerous requests for the following features:

  • Custom send condition for Pulses
    For example, there is a report on the call center queue size split by topics. Business customers would like to receive a barchart with each queue size if any of them exceeds X calls. Currently, the only option is to use the “Skip if no results” functionality in Pulses, and this way you only see those queues where the queue size exceeds X - not all of them.

  • Pulse formatting

  1. Honor Question formatting. Currently almost all question configuration such as selected columns and column formatting is not taken into account when sending a Pulse: all columns are sent, “link”-formatted columns are send as raw text.
  2. Include only a subset of Question columns in a Pulse. This way, Users would be able to see only certain most important metric in a Slack pulse, and click on the Question link to dive deeper if necessary.

Keep up the awesome work you’re doing!

Best regards,
Denis

Hi @dtroyan
The “Custom send condition for Pulses” sounds like you’re looking for Alerts instead, or maybe I’m misunderstanding you?
https://metabase.com/docs/latest/users-guide/15-alerts.html
As for formatting, go and upvote this issue by clicking :+1: on the first post:
https://github.com/metabase/metabase/issues/5493

Hi @flamber, thanks for the reply!

Let me give you an example with the Metabase Sample dataset.

Let's build a simple report:
image

Assume that a business customer wants to receive this bar chart containing all product categories when there are more than 150 orders in any product category (even those with less than 150 orders)

The "Alert" functionality would work if I applied the following post-filter "having count(*) > 150", but then all other categories would not be included in the alert.

To sum it up, I propose to separate Alert Condition from Alert Contents.

Another example would be: Send a list of all currently opened critical service desk tickets when there is at least one critical ticket opened in the last hour.

@dtroyan
Okay, now I understand you a bit better.

From the looks of the image, it looks like you’re using 0.33.0, which supports joins. This should give you the option to create a more advanced query - I know it would be possible with some SQL joggling of sub-queries, but I’m hesitant to say if you can do it with the query browser.

I’m not sure if the alert interface would become too complicated if it separated conditions from contents, but I cannot find a feature request, which matches anything you’re describing, so I would recommend that you create one (be as descriptive as possible)
https://github.com/metabase/metabase/issues/new/choose
And please post a link here for reference :+1:

@flamber,
Thank you for the comments.

It is surely possible to do something like that:

with res as  (
    SELECT "PRODUCTS__via__PRODUCT_ID"."CATEGORY" AS "CATEGORY", count(*) AS "count"
    FROM "PUBLIC"."ORDERS"
    LEFT JOIN "PUBLIC"."PRODUCTS" "PRODUCTS__via__PRODUCT_ID" ON "PUBLIC"."ORDERS"."PRODUCT_ID" = "PRODUCTS__via__PRODUCT_ID"."ID"
    WHERE CAST("PUBLIC"."ORDERS"."CREATED_AT" AS date) BETWEEN CAST(dateadd('day', -30, now()) AS date)
    AND CAST(dateadd('day', -1, now()) AS date)
    GROUP BY "PRODUCTS__via__PRODUCT_ID"."CATEGORY"
)
SELECT "CATEGORY", "count"
FROM res
   where exists (
        select 1
        from res 
        where "count" >= 160
   )
ORDER BY "CATEGORY" ASC 

Anyway, I will post the feature request and we will see how it works out.