Domanda

Total fila-count è nell'intervallo 10k-100k righe. Posso usare RAND () su force.com? Purtroppo, anche se tutte le righe hanno un identificativo numerico univoco, ci sono molte lacune, e spesso avrei voluto selezionare una riga casuale da un sottoinsieme filtrato in ogni caso.

Ho il sospetto che non c'è particolarmente efficace modo per fare questo, ma è possibile a tutti?

In definitiva tutto quello che voglio fare è quello di estrarre una riga da una tabella (o un sottoinsieme in base a specifici criteri di filtro) a caso.

Se force.com non mi permette di selezionare una riga casuale, allora posso interrogare le righe per selezionare da, e assegnare gli ID sequenziali a tutte le righe, dire 1-1,035, e quindi selezionare un numero casuale in quell'intervallo a livello locale, ad esempio 349, e quindi ottenere fila 349?

È stato utile?

Soluzione

No, non è possibile utilizzare ORDER BY RAND() o qualcosa del genere. È possibile ordinare da campo reale (a scelta con NULLS LAST etc.). Si potrebbe usare LIMIT, GROUP BY e HAVING anche se così come MIN, MAX, COUNT ...

Forse, se devi scrivere di più allo scopo per cui è necessario visualizzare una riga casuale ... In caso contrario, cosa c'è di sbagliato con ORDER BY LastModifiedDate DESC LIMIT 1? Oppure selezionando 100 righe e mostrando riga casuale con Math.random ( ) o Crypto.getRandomInteger () modulo 100?

Altri suggerimenti

È possibile utilizzare SOQL OFFSET per selezionare un record casuale.

Ecco come si fa:

Integer count = [SELECT COUNT() FROM Account];
Integer rand = Math.floor(Math.random() * count).intValue();
Account a = [SELECT Name FROM Account LIMIT 1 OFFSET :rand];
System.debug(a.name);

Si potrebbe provare qualcosa di simile.

  1. Aggiungi una colonna sequenza a partire da 0.
  2. Usa Math.random () - che restituirà un decimale compreso tra 0 e 1. moltiplicare per 100 r 1000 per ottenere intero

  3. .
  4. uso SOQL per recuperare tale riga SELEZIONA Bar__c, Bar_Seq_Col_ c da Foo _c dove Bar_Seq_Col__c =: Math.random () * 10

questo è solo un idea di esempio si può pensare di queste linee di vedere si tratta di un'idea feasiable.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top