Advertisement
orenchuck

soda GA revenue & frequency

Nov 11th, 2022
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.19 KB | None | 0 0
  1. //-------------------------------------Revenue ID-----------------------------------
  2. const sourseUrl = 'https://static.adoric.com/Soda_DataSet.json';
  3. const productId = 6615769055274;
  4.  
  5. function relatedByIdRevenue (id) {
  6. fetch(sourseUrl)
  7. .then((response) => response.json())
  8. .then((response) => {
  9. let filteredTransactions = response.filter(item => item["Product SKU"] == id);
  10. filteredTransactions = filteredTransactions.map(item => item["Transaction ID"]);
  11. const allTransactions = filteredTransactions.length;
  12. let relatedTransactions = response.filter(item => {
  13. if (filteredTransactions.some(i => item["Transaction ID"] == i)){
  14. return item
  15. }
  16. });
  17. relatedTransactions = relatedTransactions.filter(item => item["Product SKU"] != id);
  18. const relatedProducts = [];
  19. for (let j = 0; j < 10; j++) {
  20. const related = findRevenueFrequency(relatedTransactions, allTransactions);
  21. if (!related.id) break;
  22. relatedTransactions = relatedTransactions.filter(item => item["Product SKU"] != related.id);
  23. relatedProducts.push(related);
  24. }
  25.  
  26. console.log('relatedProducts', relatedProducts);
  27. })
  28. .catch((error) => {
  29. console.log(error)
  30. });
  31. }
  32. relatedByIdRevenue(productId);
  33.  
  34. function findRevenueFrequency(array, allTransactions) {
  35. const ranks = array.reduce(function (totals, num) {
  36. const id = num["Product SKU"];
  37. if (!totals[id]) totals[id] = 0;
  38. totals[id] += num['Product Revenue'];
  39.  
  40. return totals;
  41. }, {});
  42.  
  43. let max = 0;
  44. let id = '';
  45. Object.entries(ranks).forEach(function (num) {
  46. if (num[1] > max) {
  47. max = num[1];
  48. id = num[0];
  49. }
  50. });
  51. const percentage = (max * 100 / allTransactions).toFixed(2);
  52. return {
  53. id: id,
  54. revenue: `${max.toFixed(2)}$`,
  55. percentage: `${percentage}%`
  56. };
  57. }
  58.  
  59.  
  60.  
  61. function relatedByIdQuantity (id) {
  62. fetch(sourseUrl)
  63. .then((response) => response.json())
  64. .then((response) => {
  65. let filteredTransactions = response.filter(item => item["Product SKU"] == id);
  66. filteredTransactions = filteredTransactions.map(item => item["Transaction ID"]);
  67. const allTransactions = filteredTransactions.length;
  68. console.log(allTransactions);
  69. let relatedTransactions = response.filter(item => {
  70. if (filteredTransactions.some(i => item["Transaction ID"] == i)){
  71. return item
  72. }
  73. });
  74. relatedTransactions = relatedTransactions.filter(item => item["Product SKU"] != id);
  75. const relatedProducts = [];
  76. for (let j = 0; j < 10; j++) {
  77. const related = findFrequency(relatedTransactions, allTransactions);
  78. if (!related.id) break;
  79. relatedTransactions = relatedTransactions.filter(item => item["Product SKU"] != related.id);
  80. relatedProducts.push(related);
  81. }
  82.  
  83. console.log('relatedProducts', relatedProducts);
  84. })
  85. .catch((error) => {
  86. console.log(error)
  87. });
  88. }
  89. relatedByIdQuantity(productId);
  90.  
  91. function findFrequency(array, allTransactions) {
  92. const ranks = array.reduce(function (totals, num) {
  93. const id = num["Product SKU"];
  94. if (!totals[id]) totals[id] = 0;
  95. totals[id] += num['Quantity'];
  96.  
  97. return totals;
  98. }, {});
  99.  
  100. let max = 0;
  101. let id = '';
  102. Object.entries(ranks).forEach(function (num) {
  103. if (num[1] > max) {
  104. max = num[1];
  105. id = num[0];
  106. }
  107. });
  108. const percentage = (max * 100 / allTransactions).toFixed(2);
  109. return {
  110. id: id,
  111. frequency: max,
  112. percentage: `${percentage}%`
  113. };
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement