<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: overlapping time records from two tables in DAX Commands and Tips</title>
    <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/overlapping-time-records-from-two-tables/m-p/3946879#M153336</link>
    <description>&lt;P&gt;This query assumes that start_time and end_time columns are present in both tables and are of a compatible date-time type. The SUM function calculates the total downtime for each production order by adding up the overlapping intervals. The CASE statement checks if the downtime period falls within the production order’s time frame and calculates the overlapping time.&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;The LEFT JOIN ensures that all production orders are listed, even if there’s no corresponding downtime.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;FONT size="1 2 3 4 5 6 7" color="#FFFFFF"&gt;&lt;A href="https://www.iadpworkforcenow.com" target="_self"&gt;&lt;SPAN&gt;&lt;FONT color="#FFFFFF"&gt;iadpworkforcenow.com&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;SELECT&lt;BR /&gt;p.order_id,&lt;BR /&gt;p.start_time,&lt;BR /&gt;p.end_time,&lt;BR /&gt;SUM(CASE&lt;BR /&gt;WHEN d.start_time BETWEEN p.start_time AND p.end_time THEN&lt;BR /&gt;LEAST(p.end_time, d.end_time) - GREATEST(p.start_time, d.start_time)&lt;BR /&gt;ELSE 0&lt;BR /&gt;END) AS downtime&lt;BR /&gt;FROM&lt;BR /&gt;production_data p&lt;BR /&gt;LEFT JOIN&lt;BR /&gt;downtime_data d&lt;BR /&gt;ON&lt;BR /&gt;d.start_time &amp;lt;= p.end_time AND d.end_time &amp;gt;= p.start_time&lt;BR /&gt;GROUP BY&lt;BR /&gt;p.order_id, p.start_time, p.end_time;&lt;/P&gt;</description>
    <pubDate>Sat, 25 May 2024 05:03:07 GMT</pubDate>
    <dc:creator>robert199re</dc:creator>
    <dc:date>2024-05-25T05:03:07Z</dc:date>
    <item>
      <title>overlapping time records from two tables</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/overlapping-time-records-from-two-tables/m-p/3938102#M153150</link>
      <description>&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;I have two tables:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;[production_data]&amp;nbsp; which has the executed production orders for a line that packs jam.&lt;/LI&gt;&lt;LI&gt;[downtime_data] which stores the machine periods of inactivity (not running)&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;What I'm trying to find is how much downtime is contained within each production order (there can be downtime out of prod orders but I don't care for that one.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Φ&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;=&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;µ&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;-&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;δ&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;= MIN(&lt;/STRONG&gt;&lt;STRONG&gt;B&lt;/STRONG&gt;&lt;STRONG&gt;,&lt;/STRONG&gt;&lt;STRONG&gt;Y&lt;/STRONG&gt;&lt;STRONG&gt;)- MAX(&lt;/STRONG&gt;&lt;STRONG&gt;A&lt;/STRONG&gt;&lt;STRONG&gt;,&lt;/STRONG&gt;&lt;STRONG&gt;X&lt;/STRONG&gt;&lt;STRONG&gt;)&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;STRONG&gt;A &amp;lt;- -&amp;gt; B&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;Duration of Production Event&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;STRONG&gt;X &amp;lt;- -&amp;gt; Y&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;Duration of Downtime Event&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;STRONG&gt;δ &amp;lt;- -&amp;gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;μ&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Downtime contained in Production Event&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is an example of production_data table:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT size="2"&gt;&lt;STRONG&gt;prod_start_time&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;&lt;STRONG&gt;prod_end_time&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;&lt;STRONG&gt;product_desc&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;&lt;STRONG&gt;planned_qty&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;&lt;STRONG&gt;delivered_qty&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;&lt;STRONG&gt;uom&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT size="2"&gt;5/21/2024 6:30:00&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;5/21/2024 7:18:08&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;Fig 500g x 12IT&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1440&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1428&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;IT&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT size="2"&gt;5/21/2024 8:26:14&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;5/21/2024 10:42:28&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;Strawberry 200g x 24IT&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;5600&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;5279&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;IT&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is an example of downtime_data table:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;&lt;FONT size="2"&gt;dt_start_time&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;&lt;FONT size="2"&gt;dt_end_time&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;&lt;FONT size="2"&gt;duration_min&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;&lt;FONT size="2"&gt;machine_desc&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT size="2"&gt;5/21/2024 6:52:24&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;5/21/2024 6:54:33&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;2.15&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;Filler 1&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT size="2"&gt;5/21/2024 7:18:08&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;5/21/2024 8:26:14&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;68.09999999&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;Filler 1&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;the logic I have in mind is something like a for loop:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" color="#99CCFF"&gt;for i in production_data:&lt;/FONT&gt;&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;&lt;FONT face="arial,helvetica,sans-serif" color="#99CCFF"&gt;for j in downtime_data:&lt;/FONT&gt;&lt;/P&gt;&lt;P class="lia-indent-padding-left-60px"&gt;&lt;FONT face="arial,helvetica,sans-serif" color="#99CCFF"&gt;dt_overlap=&amp;nbsp;&amp;nbsp;MAX(MIN(dt_end_time, prod_end_time)- MAX(dt_start_time, prod_start_time),0)&lt;/FONT&gt;&lt;/P&gt;&lt;P class="lia-indent-padding-left-60px"&gt;&lt;FONT face="arial,helvetica,sans-serif" color="#99CCFF"&gt;prod_order_dt=prod_order_dt +&amp;nbsp;dt_overlap&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I just need a new column "prod_order_dt" in the [production_data] table that shows the cummulative sum of the downtimes that overlap with the time range of every process order, but I'm not sure yet if DAX would be the best option (i guess doing this in power query would involve a heavy workload by creating a custom column that invokes a custom function).&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Would any of you be able to help?&lt;/P&gt;</description>
      <pubDate>Wed, 22 May 2024 05:57:54 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/overlapping-time-records-from-two-tables/m-p/3938102#M153150</guid>
      <dc:creator>miguelfelix93</dc:creator>
      <dc:date>2024-05-22T05:57:54Z</dc:date>
    </item>
    <item>
      <title>Re: overlapping time records from two tables</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/overlapping-time-records-from-two-tables/m-p/3946879#M153336</link>
      <description>&lt;P&gt;This query assumes that start_time and end_time columns are present in both tables and are of a compatible date-time type. The SUM function calculates the total downtime for each production order by adding up the overlapping intervals. The CASE statement checks if the downtime period falls within the production order’s time frame and calculates the overlapping time.&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;The LEFT JOIN ensures that all production orders are listed, even if there’s no corresponding downtime.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;FONT size="1 2 3 4 5 6 7" color="#FFFFFF"&gt;&lt;A href="https://www.iadpworkforcenow.com" target="_self"&gt;&lt;SPAN&gt;&lt;FONT color="#FFFFFF"&gt;iadpworkforcenow.com&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;SELECT&lt;BR /&gt;p.order_id,&lt;BR /&gt;p.start_time,&lt;BR /&gt;p.end_time,&lt;BR /&gt;SUM(CASE&lt;BR /&gt;WHEN d.start_time BETWEEN p.start_time AND p.end_time THEN&lt;BR /&gt;LEAST(p.end_time, d.end_time) - GREATEST(p.start_time, d.start_time)&lt;BR /&gt;ELSE 0&lt;BR /&gt;END) AS downtime&lt;BR /&gt;FROM&lt;BR /&gt;production_data p&lt;BR /&gt;LEFT JOIN&lt;BR /&gt;downtime_data d&lt;BR /&gt;ON&lt;BR /&gt;d.start_time &amp;lt;= p.end_time AND d.end_time &amp;gt;= p.start_time&lt;BR /&gt;GROUP BY&lt;BR /&gt;p.order_id, p.start_time, p.end_time;&lt;/P&gt;</description>
      <pubDate>Sat, 25 May 2024 05:03:07 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/overlapping-time-records-from-two-tables/m-p/3946879#M153336</guid>
      <dc:creator>robert199re</dc:creator>
      <dc:date>2024-05-25T05:03:07Z</dc:date>
    </item>
  </channel>
</rss>

