Ovu stranicu je najbolje pregledavati u modernom internet pregledniku s omogućenim JavaScriptom.

[NBP] 3. domaća zadaća - 2021/2022

prx_xD

MsBrightside
dobijem drugacije brojeve
otvorio sam ticket i kaze mi profesor da mi fali CR (valjda combinable reducer)
iako kada isti kod izvrsim lokano na bazi dobijem rezultate iste kao oni

db.dvdrent.mapReduce(
  function () {
    if (this.staff.address.country === 'Philippines') {
      var st = {
        name: this.staff.first_name,
        lastname: this.staff.last_name,
      };
      var cs = {
        customer_id: this.customer.customer_id,
        country: this.customer.address.country,
      };
      emit(st, cs);
    }
  },
  function (key, values) {
    var res = {
      phil: 0,
      other: 0
    };
    var cust_ids = [];
    values.forEach(function (value) {
      if (!cust_ids.includes(value.customer_id)) {
        cust_ids.push(value.customer_id);
        if (value.country === 'Philippines') {
          res.phil += 1;
        } else {
          res.other += 1;
        }
      }
    });
    return res;
  },
  {
    out: {
      inline: 1,
    },
  }
);

Harweyy

prx_xD Nije bitno je li ti lokalno se izvrsava tocno, stvar je u tome sto npr ima 100 podataka
oni su namjerno namjestili edgar da ti ih 99 dode istovremeno a 100-ti ima delay tipa 200ms, i onda ti upit ne prode za to sto nije compound reduce. Dok lokalno ti ih sve dohvatis istovremeno.


Vrba

Exelero jesi mozda uspio rijesiti ovaj?


prx_xD

Harweyy jel znas mozda sta bih trebao dodati u kodu da se to rjesi


Harweyy

prx_xD nek ti map emitira kao value listu, u reduce konkateniraj listu i nek return je lista i onda u finalize funkciji konzumiraj listu


Yasuke


Moj kod:

db.dvdrent.mapReduce(
`function(){
    if(this.film != undefined){
        if(this.film.actors != undefined && this.film.categories != undefined){
            var filmTitle = this.film.title;
            var actorsId = [];
            this.film.actors.forEach(function(actor){
                actorsId = actorsId.concat(actor.actor_id)
            });
            this.film.categories.forEach(function(category){
                emit(category, {films : [{title:filmTitle, actorsId:actorsId}] });
            });
        }  
    }
};`,

`function(key, values){
    var rv = {
        films : []
    }
    
    values.forEach(function(value){
        rv.films = rv.films.concat(value.films)
    });
    
    return rv;
};`,

{ "finalize" : `function(key, reducedValues){
    reducedValues.films = reducedValues.films.filter((item, pos, self) => 
        pos === self.findIndex((t) => (
            t.title === item.title
        ))
    );
    
    var allActors = [];
    
    reducedValues.films.forEach(function(value){
        allActors = allActors.concat(value.actorsId)
    });
    var uniqueActors = new Set(allActors);
    
    var all = allActors.length;
    var unique = uniqueActors.size;
    
    return {"all":all, "unqiue":unique};
};`    
}
)

Ako neko ima rješenje zadatka ili može pomoć pronaći grešku pls?


Extended_mix

Bono Ako nisi do sada skuzio, nigdje ne izbacujes filmove krace od 120 min


WP_Deva


Stavili su obavijest


WP_Deva

Je li netko uspio riješiti ova 2?


WP_Deva

IdeGas
jel imo netko u medjuvremenu 🙁


MrPeanutButter


Ima li netko ideju za ovaj zadatak naime kako bih trebao napraviti da value na ovakav naćin ima varijable tj. da su nazivi kategorija ovako ?

"value": {
      "Cartoons": {
        "count": 10,
        "amount": 32.9
      },
      "Drama": {
        "count": 10,
        "amount": 48.901
      },
      "Action": {
        "count": 8,
        "amount": 38.92
      },

Tonii

MrPeanutButter Jesi možda uspio riješiti ja fakat nemam pojma a trebam 1 od ova 3 zadatka riješiti za uvjet iz zadaća


Cubi

MrPeanutButter

Zulul
Možeš dodavati nove ključeve objektu o na sljedeći način: o[“Drama”] = { … }.
Ako ti je string “Drama” spremljen u varijablu v, onda možeš pisati o[v] = { … }. Kasnije možeš iterirati po ključevima s for in petljom ako ti zatreba.


MrPeanutButter

Zulul nop nisam jos


mgd

`db.dvdrent.mapReduce(`
	function(){
   if(this.payment !== undefined && this.payment !== null && this.payment.date !== undefined && this.payment.payment_date !== null &&
   this.film.rating === 'G' && this.film.length > 120){
      var film = {title: this.film.title};
      emit(film, {posudba: [{rentaldate: new Date(this.rental_date), amount: this.payment.amount}]});
      
   }
}
`, `
function(key, values){
	var rv = {posudba: []};
   
   values.forEach(function(film){
   	rv.posudba = rv.posudba.concat(film.posudba);
      });
      
      return rv;
}
      
`, {
"finalize": `function(key, values){
   
   var value = {rentals: 0,
   				amount: 0,
               days: 0,
               amountPerDay: 0};
   var listaDatuma = [];
   var listaCijena = [];
   
   var min_date = null;
   var max_date = null;
   values.posudba.forEach(function(p){
      listaDatuma.push(p.rentaldate);
      listaCijena.push(p.amount);
   });
   
   if(listaCijena.length > 0){
      value.rentals = listaCijena.length;
      for(var i = 0; i < listaCijena.length; i++){
         am += listaCijena[i];
      }
   }
   
   if(listaDatuma.length > 0){
      for(var i = 0; i < listaDatuma.length; i++){
         var datum = listaDatuma[i];
         if( min_date !== null){
            if(datum < min_date){
               min_date = datum;
            }
         }else{
            min_date = datum;
         }
         
         if(max_date !== null){
            if(datum > max_date){
               max_date = datum;
            }
         } else{
            max_date = datum;
         }
         
      }
   }
   
   var razlika = Math.round((max_date-min_date)/(1000*60*60*24));
   value.days = razlika;
   value.amount = Math.round(am * 100) / 100;
   value.amountPerDay = Math.round((value.amount/value.days) * 1000) / 1000;
   
   return value;
}`
});`

jel moze pomoc kako da ovo pretvorim u taj CR ?


Tonii


Jel možda netko kuži zašto mi baca ovaj error na cards ali mi na primjer nobelprizes radi normalno


Lusy

I3loodHound Jesi uspio ovaj?


Lusy

Zna netko ovaj?


Eteie

MGJ jesi mozda uspio ovaj?


Lusy

MGJ

I3loodHound

Ima itko ove?


boki8

Harweyy na koji nacin se ovo rjesava?


Tonii


Jel ima netko možda ovaj riješen? Vidim da je netko uploadao file prošle godine ali više ne postoji


Lusy

Eteie nop


kivu

Moze pomoc?

Zasad dobijem ovo


anon00

kivu Prije “finalize” ti fali otvorena zagrada {
Na kraju je vec imas zatvorenu


« Prethodna stranica Sljedeća stranica »