Forum Discussion

jaymeyer's avatar
jaymeyer
Regular Visitor
1 year ago
Solved

Stacked Bar chart as a timeline for individual days

Hi   I'm hoping to get help creating a stacked bar graph/timeline similar to the one described in this post: Solved: Stacked Bar Chart as timeline - Microsoft Fabric Community   The result I am l...
  • jaymeyer's avatar
    jaymeyer
    1 year ago

    Alright, I'm pretty new to this and it took me a while to figure out but I've made some progress and would like your opinion to see if I've done this 'correctly' or if it could be more efficient or if you see any flaws. But this is more or less achieving what I've set out to do and could not have done it without your help!

     

    The main change is I created a "ShiftID" to deal with the wrapping for past midnight shifts as sometimes crews can end and start a shift on the same day:

    ShiftID =
    [Team]
      & "-" &
    FORMAT ( [Date], "ddmmyyyy" )
      & "-" &
    [Machine]

     

     

    This is the updated JSON:

    {
      "data": {"name": "dataset"},
      "transform": [
        {
          "window": [
            {"op": "min", "field": "StartTime", "as": "ShiftStart"}
          ],
          "groupby": ["ShiftID"]
        },
        {
          "calculate": "(datetime(datum.StartTime) - datetime(datum.ShiftStart)) / (1000 * 60 * 60)",
          "as": "OffsetStart"
        },
        {
          // Similarly for EndTime
          "calculate": "(datetime(datum.EndTime) - datetime(datum.ShiftStart)) / (1000 * 60 * 60)",
          "as": "OffsetEnd"
        }
      ],
      "mark": "bar",
      "encoding": {
        "y": {"field": "ShiftID", "type": "nominal"},
        "x": {
          "field": "OffsetStart",
          "type": "quantitative",
          "stack": null
        },
        "x2": {"field": "OffsetEnd"},
        "color": {"field": "Description", "type": "nominal"}
      }
    }