mrpowers-io / jodie

Delta lake and filesystem helper methods
MIT License
49 stars 11 forks source link

helper methods - delta partition file size and numRecords distribution #73

Closed joydeepbroy-zeotap closed 1 year ago

joydeepbroy-zeotap commented 1 year ago

@brayanjuls @MrPowers Wanted to start the discussion here around delta_file_sizes

The current implementation avg size = total size in bytes / num of files in both jodie and mack may not portray a true picture of the average file sizes. This is because production Delta Tables are almost always divided into partitions and have different file sizes. Adding all these sizes and dividing them by the number of files does not give a true picture. The true picture can only be obtained when we traverse down the leaf partitions and find the mean file size along with the Standard Deviation and the min & max. Since we required these statistics for making decisions around compaction, such metrics at the partition level might provide good insight as to which partition needs compaction. Furthermore, the same analysis can be done with the number of records hosted in each parquet file. Generally there would be one-to-one mapping between size and num_records. But sometimes it might be different as low num_records can have huge file_sizes due to complex datatypes like map and arrays in the schema.

This current PR aims at providing such insights to the user at each partition level as well as overall Delta Table level. To provide context here is an example from one of our prod tables:

+------------------------------------------------+--------------------+-------------------------+------------------+---------------+---------------+------------------------------------------------------------------+
|partitionValues                                 |num_of_parquet_files|mean_num_records_in_files|stddev            |min_num_records|max_num_records|Percentile[10th, 25th, Median, 75th, 90th, 95th]                  |
+------------------------------------------------+--------------------+-------------------------+------------------+---------------+---------------+------------------------------------------------------------------+
|[{id_type, id_mid_20}]                          |2003                |520544.42985521717       |20178.689489927645|1.0            |524015.0       |[520372.0, 520828.0, 521323.0, 521805.0, 522269.0, 522542.0]      |
|[{id_type, id_mid_201}]                         |666                 |2093.0195195195197       |66.72464736350298 |1949.0         |3373.0         |[2034.0, 2061.0, 2090.0, 2121.0, 2151.0, 2165.0]                  |
|[{id_type, id_mid_9}]                           |2000                |657813.6815              |820.3708760340454 |655029.0       |660642.0       |[656745.0, 657238.0, 657823.0, 658371.0, 658861.0, 659156.0]      |
|[{id_type, id_mid_2023}]                        |2060                |10378.42718446602        |1781.1562399958596|6.0            |11056.0        |[10534.0, 10610.0, 10682.0, 10753.0, 10818.0, 10852.0]            |
|[{id_type, id_mid_33}]                          |11123               |135625.92502022834       |279942.42353367223|61.0           |736807.0       |[1140.0, 2225.0, 6063.0, 6226.0, 733360.0, 733991.0]              |
|[{id_type, id_mid_26}]                          |2000                |252103.909               |499.20364066824294|250627.0       |253973.0       |[251468.0, 251765.0, 252099.0, 252443.0, 252729.0, 252901.0]      |
|[{id_type, id_mid_2022}]                        |500                 |10613.764                |103.7344976176777 |10213.0        |10924.0        |[10479.0, 10545.0, 10616.0, 10684.0, 10747.0, 10782.0]            |
|[{id_type, id_mid_6}]                           |2005                |4149442.2962593515       |207533.5875975448 |1.0            |4166944.0      |[4157228.0, 4158457.0, 4159784.0, 4161146.0, 4162403.0, 4163282.0]|
|[{id_type, id_mid_22}]                          |103                 |7107763.689320388        |1237119.34820789  |16.0           |7326747.0      |[7318003.0, 7319193.0, 7320841.0, 7322385.0, 7324125.0, 7324994.0]|
|[{id_type, id_mid_4}]                           |2000                |4790077.798              |2205.5011044560847|4781227.0      |4797044.0      |[4787374.0, 4788641.0, 4790025.0, 4791550.0, 4792904.0, 4793606.0]|
|[{id_type, id_mid_12}]                          |2000                |35501.4665               |181.60850669118318|34879.0        |36153.0        |[35267.0, 35376.0, 35499.0, 35625.0, 35739.0, 35799.0]            |
|[{id_type, id_mid_2012}]                        |113                 |234404.4778761062        |40568.029917371365|13.0           |251916.0       |[237886.0, 238272.0, 238719.0, 239763.0, 251343.0, 251538.0]      |
|[{id_type, id_mid_10}]                          |2000                |1957297.0905             |1371.4245104648396|1951938.0      |1961879.0      |[1955550.0, 1956378.0, 1957275.0, 1958233.0, 1959090.0, 1959591.0]|
|[{id_type, id_mid_7}]                           |2000                |179769.49                |435.4761562259419 |178457.0       |181154.0       |[179199.0, 179467.0, 179788.0, 180065.0, 180313.0, 180487.0]      |
|[{id_type, id_mid_11}]                          |2000                |209767.376               |454.90976695608055|208194.0       |211451.0       |[209191.0, 209443.0, 209756.0, 210068.0, 210373.0, 210530.0]      |
|[{id_type, id_mid_35}]                          |2000                |510833.2875              |710.861960022375  |508860.0       |513101.0       |[509914.0, 510359.0, 510832.0, 511313.0, 511778.0, 512034.0]      |
|[{id_type, id_mid_60}]                          |2000                |737747.0335              |889.528487369956  |734682.0       |740781.0       |[736608.0, 737172.0, 737742.0, 738313.0, 738870.0, 739242.0]      |
|[{id_type, id_mid_39}]                          |500                 |144226.02                |395.1697430873253 |143140.0       |145787.0       |[143751.0, 143940.0, 144218.0, 144485.0, 144725.0, 144863.0]      |
|[{id_type, id_mid_30}]                          |2076                |387396.73410404625       |75538.0713208629  |1.0            |404305.0       |[401177.0, 401633.0, 402091.0, 402528.0, 402888.0, 403140.0]      |
|[{id_type, id_mid_27}]                          |2000                |1000224.086              |1002.4053186288548|996636.0       |1003775.0      |[998930.0, 999548.0, 1000227.0, 1000888.0, 1001488.0, 1001863.0]  |
|[{id_type, id_mid_31}]                          |2000                |495715.699               |727.4815262840281 |493655.0       |498149.0       |[494765.0, 495227.0, 495720.0, 496210.0, 496644.0, 496899.0]      |
|[{id_type, id_mid_16}]                          |2002                |11044.838161838163       |365.15973760155316|1.0            |11455.0        |[10923.0, 10983.0, 11053.0, 11128.0, 11192.0, 11231.0]            |
|[{id_type, id_mid_37}]                          |2000                |1330279.0575             |1155.185337846757 |1325076.0      |1333876.0      |[1328816.0, 1329513.0, 1330270.0, 1331050.0, 1331765.0, 1332164.0]|
|[{id_type, id_mid_5}]                           |2000                |831906.152               |907.2926710226686 |829167.0       |834559.0       |[830720.0, 831273.0, 831905.0, 832524.0, 833074.0, 833379.0]      |
|[{id_type, id_mid_41}]                          |2002                |103451.34515484516       |3287.9815251904947|1.0            |104621.0       |[103140.0, 103326.0, 103547.0, 103779.0, 103965.0, 104072.0]      |
|[{id_type, id_mid_14}]                          |2000                |399894.684               |616.534728689178  |397669.0       |402337.0       |[399117.0, 399480.0, 399893.0, 400308.0, 400652.0, 400873.0]      |
|[{id_type, id_mid_61}]                          |2000                |509997.4445              |716.3208594663436 |507616.0       |512302.0       |[509050.0, 509507.0, 510000.0, 510496.0, 510930.0, 511198.0]      |
|[{id_type, id_mid_24}]                          |2000                |218340.0225              |471.48980191559315|216870.0       |219866.0       |[217748.0, 218020.0, 218330.0, 218649.0, 218948.0, 219122.0]      |
|[{id_type, id_mid_25}]                          |31130               |4.500995823964022        |2.555248803539343 |1.0            |18.0           |[1.0, 3.0, 4.0, 6.0, 8.0, 9.0]                                    |
|[{id_type, id_mid_15}]                          |20143               |217.40569925035993       |81.0716074344714  |1.0            |361.0          |[93.0, 169.0, 242.0, 284.0, 301.0, 311.0]                         |
|[{id_type, id_mid_40}]                          |2000                |173104.306               |419.32562806866304|171780.0       |174701.0       |[172580.0, 172827.0, 173098.0, 173385.0, 173632.0, 173783.0]      |
|[{id_type, id_mid_20345}]                       |2521                |1597.170567235224        |2698.8401411353   |1.0            |8033.0         |[403.0, 416.0, 431.0, 453.0, 7783.0, 7851.0]                      |
|[{id_type, id_mid_17}]                          |9504                |88421.98053451178        |171279.80819895645|1.0            |422383.0       |[1.0, 1.0, 1.0, 6.0, 420207.0, 420633.0]                          |
|[{id_type, id_mid_1491}]                        |1000                |12453.766                |112.82292433834657|12106.0        |12782.0        |[12308.0, 12383.0, 12450.0, 12531.0, 12595.0, 12638.0]            |
|[{id_type, id_mid_525}]                         |1980                |722.4494949494949        |2435.932158439599 |1.0            |15573.0        |[1.0, 1.0, 1.0, 2.0, 15.0, 8627.0]                                |
|[{id_type, id_mid_13}]                          |2000                |333996.9675              |566.6278178714276 |332130.0       |336059.0       |[333285.0, 333633.0, 333999.0, 334362.0, 334729.0, 334921.0]      |
|[{id_type, id_mid_12}]                          |1317                |5292.426727410782        |2981.223771867473 |1.0            |7254.0         |[1.0, 6785.0, 6935.0, 7007.0, 7061.0, 7097.0]                     |
|[{id_type, id_mid_3023}]                        |667                 |248864.61019490255       |3258.2606979417355|165864.0       |250392.0       |[248367.0, 248631.0, 248977.0, 249329.0, 249641.0, 249874.0]      |
|[{id_type, id_mid_38}]                          |2087                |153106.7201724964        |31942.749460363095|1.0            |161225.0       |[159155.0, 159468.0, 159741.0, 160013.0, 160279.0, 160416.0]      |
|[{id_type, id_mid_1}]                           |2000                |1363904.5765             |1173.957165684156 |1359476.0      |1368484.0      |[1362380.0, 1363110.0, 1363901.0, 1364723.0, 1365424.0, 1365845.0]|
|[{id_type, id_mid_32}]                          |2001                |138268.8055972014        |3116.326696078038 |1.0            |139729.0       |[137848.0, 138088.0, 138341.0, 138594.0, 138824.0, 138967.0]      |
|[{id_type, id_mid_23}]                          |2197                |916499.6932180246        |287704.4667298802 |1.0            |1010534.0      |[1004447.0, 1005852.0, 1006647.0, 1007396.0, 1008026.0, 1008387.0]|
|[{id_type, id_mid_21}]                          |100                 |2993872.32               |1751.3854133978073|2989180.0      |2997585.0      |[2991213.0, 2992547.0, 2993827.0, 2995337.0, 2996083.0, 2996336.0]|
|[{id_type, id_mid_28}]                          |1                   |1.0                      |null              |1.0            |1.0            |[1.0, 1.0, 1.0, 1.0, 1.0, 1.0]                                    |
+------------------------------------------------+--------------------+-------------------------+------------------+---------------+---------------+------------------------------------------------------------------+

+------------------------------------------------+--------------------+--------------------+--------------------+-------------+-------------+------------------------------------------------------------------------------------+
|partitionValues                                 |num_of_parquet_files|mean_size_of_files  |stddev              |min_file_size|max_file_size|Percentile[10th, 25th, Median, 75th, 90th, 95th]                                    |
+------------------------------------------------+--------------------+--------------------+--------------------+-------------+-------------+------------------------------------------------------------------------------------+
|[{id_type, id_mid_20}]                          |2003                |3.560130774937594E7 |1381825.2716080274  |5664.0       |3.5875332E7  |[3.5529764E7, 3.558995E7, 3.5661054E7, 3.5723329E7, 3.5765551E7, 3.578674E7]        |
|[{id_type, id_mid_x}]                           |666                 |200886.34984984985  |6260.580050654581   |187207.0     |319152.0     |[195175.0, 197963.0, 200551.0, 203552.0, 206538.0, 207765.0]                        |
|[{id_type, id_mid_9}]                           |2000                |5.83057515605E7     |73298.65097400933   |5.8059681E7  |5.858015E7   |[5.8211368E7, 5.8255731E7, 5.8304621E7, 5.8357173E7, 5.8399178E7, 5.8427433E7]      |
|[{id_type, id_mid_9123}]                        |2060                |1178974.5830097087  |201175.63428800597  |6708.0       |1254809.0    |[1196625.0, 1205034.0, 1213199.0, 1221316.0, 1228629.0, 1232543.0]                  |
|[{id_type, id_mid_33}]                          |11123               |1.2057665991279332E7|2.5010788373112556E7|11017.0      |6.5764538E7  |[92579.0, 173720.0, 460025.0, 471956.0, 6.5459719E7, 6.5515691E7]                   |
|[{id_type, id_mid_26}]                          |2000                |2.2787079636E7      |58166.749755612705  |2.2602767E7  |2.297535E7   |[2.2712499E7, 2.274871E7, 2.2785355E7, 2.2826098E7, 2.2863386E7, 2.2884844E7]       |
|[{id_type, id_mid_9eer2}]                       |500                 |1081010.058         |10573.989161153737  |1038609.0    |1110878.0    |[1067776.0, 1074148.0, 1081333.0, 1088356.0, 1094367.0, 1098336.0]                  |
|[{id_type, id_mid_6}]                           |2005                |2.9710929136758107E8|1.4860905104549613E7|5475.0       |2.98785588E8 |[2.97549602E8, 2.97683376E8, 2.97837899E8, 2.98011796E8, 2.9817265E8, 2.98282042E8] |
|[{id_type, id_mid_22}]                          |103                 |5.660913429805825E8 |9.852822477307932E7 |7214.0       |5.83561448E8 |[5.82797735E8, 5.82916016E8, 5.83060462E8, 5.83191202E8, 5.83338094E8, 5.833917E8]  |
|[{id_type, id_mid_4}]                           |2000                |4.41091543617E8     |227533.91191479412  |4.40201698E8 |4.41891369E8 |[4.40805919E8, 4.40940743E8, 4.41094115E8, 4.41238997E8, 4.41375892E8, 4.41462254E8]|
|[{id_type, id_mid_12}]                          |2000                |3099507.515         |15797.373825502313  |3043386.0    |3153749.0    |[3079377.0, 3088332.0, 3099370.0, 3110455.0, 3120351.0, 3125275.0]                  |
|[{id_type, id_mid_9345}]                        |113                 |2.3553077203539822E7|4074555.8430964774  |7468.0       |2.5315608E7  |[2.3899623E7, 2.3939267E7, 2.3986985E7, 2.4084399E7, 2.5251101E7, 2.5269347E7]      |
|[{id_type, id_mid_10}]                          |2000                |1.834670864125E8    |178337.4116782075   |1.82895819E8 |1.84205088E8 |[1.83243572E8, 1.83348308E8, 1.83456465E8, 1.83583617E8, 1.83691587E8, 1.83768085E8]|
|[{id_type, id_mid_7}]                           |2000                |1.2392880177E7      |31028.569099732224  |1.2306849E7  |1.2498867E7  |[1.2352958E7, 1.2371425E7, 1.2393143E7, 1.2414375E7, 1.2432949E7, 1.2444406E7]      |
|[{id_type, id_mid_11}]                          |2000                |1.83236731915E7     |42224.683752928766  |1.8188493E7  |1.8460831E7  |[1.82703E7, 1.8294477E7, 1.8322672E7, 1.8351523E7, 1.8379523E7, 1.8395488E7]        |
|[{id_type, id_mid_35}]                          |2000                |5.7721392047E7      |80096.37477937565   |5.7492536E7  |5.7980865E7  |[5.7618877E7, 5.7667281E7, 5.7721426E7, 5.777361E7, 5.7826089E7, 5.7854967E7]       |
|[{id_type, id_mid_60}]                          |2000                |6.76957547765E7     |105229.69889544192  |6.7331594E7  |6.8034469E7  |[6.7559325E7, 6.7624089E7, 6.7696133E7, 6.7766708E7, 6.7832779E7, 6.7865829E7]      |
|[{id_type, id_mid_39}]                          |500                 |9296806.038         |28195.7029124298    |9213775.0    |9420832.0    |[9261280.0, 9276344.0, 9296515.0, 9316350.0, 9331177.0, 9341657.0]                  |
|[{id_type, id_mid_30}]                          |2076                |2.554290976396917E7 |4980055.58502611    |5374.0       |2.6789335E7  |[2.6392599E7, 2.6440102E7, 2.6506789E7, 2.6570153E7, 2.6626725E7, 2.665849E7]       |
|[{id_type, id_mid_27}]                          |2000                |8.7459397712E7      |90196.31509550381   |8.7164448E7  |8.7820277E7  |[8.7341367E7, 8.7397897E7, 8.7462879E7, 8.7517848E7, 8.7573881E7, 8.7607456E7]      |
|[{id_type, id_mid_31}]                          |2000                |4.68830008415E7     |68713.0735423194    |4.6676782E7  |4.7106328E7  |[4.6793247E7, 4.6836611E7, 4.6883612E7, 4.6929066E7, 4.6971705E7, 4.6991565E7]      |
|[{id_type, id_mid_16}]                          |2002                |755407.938061938    |24758.089993113495  |5493.0       |783254.0     |[746965.0, 751285.0, 756010.0, 761052.0, 765154.0, 767922.0]                        |
|[{id_type, id_mid_37}]                          |2000                |9.13588755845E7     |83454.19150318795   |9.1048918E7  |9.163943E7   |[9.1251484E7, 9.130428E7, 9.1358452E7, 9.1415326E7, 9.1468562E7, 9.1493486E7]       |
|[{id_type, id_mid_5}]                           |2000                |6.7157118081E7      |109391.03162447267  |6.6812804E7  |6.7492146E7  |[6.7018157E7, 6.7081173E7, 6.7155943E7, 6.7230092E7, 6.7301486E7, 6.7342038E7]      |
|[{id_type, id_mid_41}]                          |2002                |6555339.435564436   |208178.76326933765  |5445.0       |6629095.0    |[6535394.0, 6547738.0, 6561642.0, 6576031.0, 6587403.0, 6595111.0]                  |
|[{id_type, id_mid_14}]                          |2000                |3.553682146E7       |59908.2916858239    |3.5349689E7  |3.576098E7   |[3.5462548E7, 3.5495763E7, 3.5535469E7, 3.5576993E7, 3.5612902E7, 3.5634085E7]      |
|[{id_type, id_mid_61}]                          |2000                |4.572257267E7       |85078.68217521634   |4.5446626E7  |4.5964804E7  |[4.5610433E7, 4.5664746E7, 4.5725524E7, 4.5782182E7, 4.582719E7, 4.5858595E7]       |
|[{id_type, id_mid_24}]                          |2000                |1.79212154925E7     |38756.51229932534   |1.7798725E7  |1.8046863E7  |[1.7872045E7, 1.7894979E7, 1.7920877E7, 1.7946754E7, 1.7971614E7, 1.7985473E7]      |
|[{id_type, id_mid_25}]                          |31130               |6109.299678766463   |290.15400613147267  |5545.0       |7593.0       |[5752.0, 5927.0, 6100.0, 6292.0, 6482.0, 6614.0]                                    |
|[{id_type, id_mid_15}]                          |20143               |20887.59991063893   |5555.19273624619    |5482.0       |30660.0      |[12367.0, 17624.0, 22592.0, 25409.0, 26592.0, 27237.0]                              |
|[{id_type, id_mid_40}]                          |2000                |1.5120202101E7      |37290.98789114807   |1.5009161E7  |1.5264437E7  |[1.5072979E7, 1.5094666E7, 1.5119435E7, 1.5147034E7, 1.5167873E7, 1.5180985E7]      |
|[{id_type, id_mid_1363}]                        |2521                |124185.3681078937   |196891.3682979522   |5743.0       |593583.0     |[37044.0, 37989.0, 39137.0, 40750.0, 575361.0, 580245.0]                            |
|[{id_type, id_mid_17}]                          |9504                |6183060.280092592   |1.1966417875955433E7|5428.0       |2.9572798E7  |[5474.0, 5475.0, 5579.0, 6119.0, 2.9361986E7, 2.9400143E7]                          |
|[{id_type, id_mid_1491}]                        |1000                |1273560.315         |11442.580332881638  |1239758.0    |1308557.0    |[1258918.0, 1266156.0, 1273073.0, 1281337.0, 1288378.0, 1292525.0]                  |
|[{id_type, id_mid_525}]                         |1980                |46112.7202020202    |136764.47907113636  |5376.0       |873915.0     |[5467.0, 5495.0, 5523.0, 5843.0, 6727.0, 490958.0]                                  |
|[{id_type, id_mid_13}]                          |2000                |2.8571106346E7      |48384.66206004338   |2.8411824E7  |2.8750239E7  |[2.850854E7, 2.8539502E7, 2.8571538E7, 2.8602233E7, 2.8632666E7, 2.8650647E7]       |
|[{id_type, id_mid_12}]                          |1317                |282456.1571753986   |156038.8722878244   |5473.0       |385602.0     |[5488.0, 360317.0, 368424.0, 372219.0, 375141.0, 377051.0]                          |
|[{id_type, id_mid_923456}]                      |667                 |2.8916438931034483E7|379384.15662861615  |1.9287906E7  |2.9118243E7  |[2.884537E7, 2.8882968E7, 2.8927157E7, 2.8973529E7, 2.902708E7, 2.9049511E7]        |
|[{id_type, id_mid_38}]                          |2087                |9222935.482031625   |1923077.348071654   |5404.0       |9711715.0    |[9585158.0, 9605004.0, 9621929.0, 9639495.0, 9656090.0, 9665542.0]                  |
|[{id_type, id_mid_1}]                           |2000                |1.195135680765E8    |124973.97263239032  |1.19107879E8 |1.20035686E8 |[1.19356913E8, 1.19431136E8, 1.19509942E8, 1.19595159E8, 1.19666768E8, 1.1971592E8] |
|[{id_type, id_mid_32}]                          |2001                |9691637.945527237   |218316.67304426734  |5611.0       |9791501.0    |[9660898.0, 9678493.0, 9696592.0, 9714547.0, 9731435.0, 9740883.0]                  |
|[{id_type, id_mid_23}]                          |2197                |6.879998942512517E7 |2.1595738135378562E7|5645.0       |7.5941497E7  |[7.5340314E7, 7.5467434E7, 7.5559968E7, 7.5643928E7, 7.5711437E7, 7.5759238E7]      |
|[{id_type, id_mid_21}]                          |100                 |1.9922658018E8      |188666.19803305998  |1.98630996E8 |1.99648362E8 |[1.98967529E8, 1.99084525E8, 1.9924518E8, 1.99367883E8, 1.99445928E8, 1.99520398E8] |
|[{id_type, id_mid_28}]                          |1                   |5502.0              |null                |5502.0       |5502.0       |[5502.0, 5502.0, 5502.0, 5502.0, 5502.0, 5502.0]                                    |
+------------------------------------------------+--------------------+--------------------+--------------------+-------------+-------------+------------------------------------------------------------------------------------+

As you can see the distribution of file sizes and num records is really varied across partitions and cannot be represented by one global average. I have not added tests as of now but will be doing it in some days. Till then it is in the draft stage but wanted to open up the discussion. Also, please suggest good method names.

The file sizes a little off, working on fixing it to shows size in MBs

brayanjuls commented 1 year ago

A couple of general questions:

The objective of this function is to enable users to correctly run the optimize function on specific partitions based on the analysis done using the output of this function, right ?

What would be the output of this function for non-partitioned tables ?

joydeepbroy-zeotap commented 1 year ago

A couple of general questions:

The objective of this function is to enable users to correctly run the optimize function on specific partitions based on the analysis done using the output of this function, right ?

What would be the output of this function for non-partitioned tables ?

Yes, it is targetted towards optimize function on specific partitions

If it's run on non partitioned table, it shows like this:-

DeltaHelpers.deltaPartitionWiseFileSizeDistribution(writePath).show(false)
+---------------+--------------------+------------------+-----------------+-------------+-------------+------------------------------------------------+
|partitionValues|num_of_parquet_files|mean_size_of_files|stddev           |min_file_size|max_file_size|Percentile[10th, 25th, Median, 75th, 90th, 95th]|
+---------------+--------------------+------------------+-----------------+-------------+-------------+------------------------------------------------+
|[]             |2                   |1167.5            |31.81980515339464|1145         |1190         |[1145, 1145, 1145, 1190, 1190, 1190]            |
+---------------+--------------------+------------------+-----------------+-------------+-------------+------------------------------------------------+
brayanjuls commented 1 year ago

@joydeepbroy-zeotap LGTM. Once you remove the small detail in the docs feel free to merge.