Detecting multiple occurences of a value in data? (conundrum)
Ok, if there are any good java utilities to help, this is where I'm going to find them...
I'm trying to detect multiple occurences in a data set. Piling them into an array and using Array.sort() was a good start - I'm trying to find the max and min value of data that occurs more than once in the set.
However, when the data set becomes much larger, I can't hold the set in memory. Is there an elegant solution to this? I'm at a loss to find a nice way of doing it. Its an interesting problem...
Thanks,
Steve
Hi Steve!
You can do this with a bit of programming yourself :-) If all values don't fit into your memory, just split them into smaller pieces. Do you need to sort out all duplicates or do you need to detect them only?
The idea:
Create a new ArrayList oder a Set of your choice and put some elements in it (a fixed number or just wait for an OutOfMemoryException to be thrown and catch this). Then sort the ArrayList and write it to a temporary file, store the file handle or name in a seperate list. Go on like this until all your data is sorted.
After that, build one loop fetching just one value from each file and compare them - mainly this is mergesort. If duplicate values occur then, well, you have dupes :-)
If needed I could look for the source...
Cheers,
Jan
Similar Messages
-
Counting the Multiple Occurence of a record in the internal Table-Urgent
Hi,
I have an internal table with the following values
a
a
a
b
b
b
c
c
I need to print a-2
b-3
c-2
How do i accomplish this? i.e.,I need to count the multiple occurence of a field.Any input on this will be of great help.
Thanks and Regards,
PavithraHi,
Find the piece of code below it can help you:
data: begin of itab occurs 0,
field1 type c,
field2 type i,
end of itab.
data: itab2 like table of itab occurs 0 with header line.
data: count type i.
start-of-seleciton.
itab-field1 = a.
append itab.
itab-field1 = a.
append itab.
itab-field1 = a.
append itab.
itab-field1 = b.
append itab.
sort itab by field1.
loop at itab.
count = count + 1.
at end of field1.
clear itab2.
itab2-field1 = itab-field1.
itab2-field2 = count.
append itab2.
endat.
endloop.
Dispaly output table.
loop at itab2.
write:/ itab2-field1, itab2-field2.
endloop.
Reward the points if it is helpful. -
How to prevent multiple users from updating the same data in coherence
Hi,
I have a Java Web Application and for data cache am using coherence 3.5. The same data maybe shared by multiple users which maybe in hundreds. Now how do I prevent multiple users from updating the same data in coherence i.e. is there something in coherence that will only allow one user a time to update. If one user is in a process of updating a data in coherence and some other user also tries to update then the second user should get an error.
ThanksI have a question on the same line. How can I restrict someone from updating a cache value when I a process is already working on it. I tried locking the cache key but it does not stop other process to update it , it only does not allow other process to get lock on it.
-
How to replace multiple occurences of space in a string to a single space?
How to replace multiple occurences of space in a string to a single space?
Hi,
try this code.
data : string1(50) type c,
flag(1) type c,
dummy(50) type c,
i type i,
len type i.
string1 = 'HI READ THIS'.
len = strlen( string1 ).
do len times.
if string1+i(1) = ' '.
flag = 'X'.
else.
if flag = 'X'.
concatenate dummy string1+i(1) into dummy separated by space.
clear flag.
else.
concatenate dummy string1+i(1) into dummy.
endif.
endif.
i = i + 1.
enddo.
write : / string1.
write : / dummy. -
Counter function value to multiple elements as same value in different node
I need your help!
I have a counter function and value of that needs to be passed to two elements of Node A and Sub Node B..
Ex: Mapping
Map Counter function to NodeA.Element1 and also to NodeB(subnode).Element2
Expected Result:
NodA.Element1 = 1
NodeB.Element2 =1
but I am getting the result as
NodA.Element1 = 1
NodeB.Element2 =2
I understand the reason.. since the counter function is called each time..
so my questions is how do I the expected result as mentioned--
NodA.Element1 = 1
NodeB.Element2 =1
remember the XML is multiple occurence(1.. unbounded for both the nodes)
Thanks-GopalI think I did not explain phrase it correctly..Technicallyh NodeA.Element1 value should be copied to NodeB.Element2..As long as I can generate counter to NodeA.Element1 and hold the value somewhere to copy to NodeB.Element2, that would be fine..
the above suggestion you guys made would not work as it will create two different set of sequences.. however Index suggestion might work differently but still I might go out of sequence if I have multiple detail record for each master record..
Here the expected output (concise)
Record 1 - NodeA.Element1 = 1
Record 2 -NodeB.Element2=1
Record3- NodeA.Element1 =2
Record4 - NodeB.Element2=2 -->two detail records
Record5 - NodeB.Element2=2 --> two detail records
please help -
First occurence of a value from a field in the internal table.
How to select the first occurence of a value from a field in an internal table ?
I don think , we can use select query .
Any suggestions?
provide syntaxs also .Hi...
You have to use this code.
DATA : Begin of IT_MARA occurs 0,
mtart type mara-mtart,
matnr type mara-matnr,
meins type mara-meins,
END OF IT_MARA.
START-of-SELECTION.
SELECT MTART MATNR MEINS FROM MARA INTO TABLE IT_MARA.
END-OF-SELECTION.
LOOP AT IT_MARA.
<b> AT NEW MTART. "This will trigger for every first/new value of the field
<<<<WRITE YOUR CODE here>>
ENDAT.</b>
ENDLOOP.
You can also use.
LOOP AT IT_MARA.
<b> <b> ON CHANGE OF IT_MARA-TART.
<<<<WRITE YOUR CODE here>>
ENDON.</b></b>
ENDLOOP.
<b>Reward if Helpful.</b> -
Detecting multiple people using Kinect audio source
Hello,
I'm working with the Kinect for windows v2 and I want to detect multiple people using the Kinect audio frame source.
I mean that if multiple people are talking simultaneously while the Kinect is working, then I want the Kinect to be able to distinguish between the people according to their voices and to save each voice to a separate audio file. What do I need to do to
the Kinect audio frame source to achieve that?
thanks,
Dror.The AudioBeamSubFrame will provide you access to the AudioBodyCorrelation object. You can review the AudioBasics sample to see how to get access to the AudioBeamSubFrame list.
The API returns a collection of audio body correlations, in relation to the beam itself. You can use this to identify which enrolled tracked body is likely speaking. If Kinect is not tracking any bodies, this list will be empty. If one or more bodies is
being tracked, this will return an ordered list containing body tracking IDs. The list is ordered based on the horizontal angle of the body relative to the current audio beam angle. The first body in the list is the one closest to the audio beam and the last
is the furthest away from the audio beam.
You will use the data against a list of tracked bodies you currently have. Refer to the body basics on how to get the tracking id's..
Carmine Sirignano - MSFT -
How to get top 11 values per date range
I want to get the top 11 values by date range.
Sample Data
CREATE TABLE SAMPLE_DATA
DOMAIN_NAME VARCHAR2(100),
QTD NUMBER,
LOAD_DATE DATE
-- Insert
BEGIN
FOR lc IN 1..20
LOOP
FOR ld IN 1..30
LOOP
INSERT
INTO SAMPLE_DATA VALUES
'DM_'
||lc,
round(dbms_random.value(0,1000)),
SYSDATE-ld
END LOOP;
END LOOP;
COMMIT;
END;
SELECT *
FROM
(SELECT DOMAIN_NAME,
QTD,
LOAD_DATE
FROM
(SELECT DOMAIN_NAME,
QTD,
LOAD_DATE
FROM SAMPLE_DATA
WHERE LOAD_DATE = TRUNC(SYSDATE-3)
ORDER BY QTD DESC
WHERE ROWNUM <=10
UNION ALL
SELECT 'Others' DOMAIN_NAME,
SUM(QTD) QTD,
LOAD_DATE
FROM
(SELECT DOMAIN_NAME,
QTD,
LOAD_DATE
FROM
(SELECT rownum rn,
DOMAIN_NAME,
QTD,
LOAD_DATE
FROM
(SELECT DOMAIN_NAME,
QTD,
LOAD_DATE
FROM SAMPLE_DATA
WHERE LOAD_DATE = TRUNC(SYSDATE-3)
ORDER BY QTD DESC
WHERE rn > 10
GROUP BY LOAD_DATE
ORDER BY QTD DESC
-- Result
DOMAIN_NAME QTD LOAD_DATE
Others 2888 24/03/13
DM_1 1000 24/03/13
DM_20 933 24/03/13
DM_11 913 24/03/13
DM_3 743 24/03/13
DM_13 572 24/03/13
DM_12 568 24/03/13
DM_9 564 24/03/13
DM_6 505 24/03/13
DM_5 504 24/03/13
DM_2 480 24/03/13
Please, Help me get in one query this result using a range of date.
e.g
using LOAD_DATE BETWEEN '24/03/13' AND '25/03/13'
DOMAIN_NAME QTD LOAD_DATE
Others 2888 24/03/13
DM_1 1000 24/03/13
DM_20 933 24/03/13
DM_11 913 24/03/13
DM_3 743 24/03/13
DM_13 572 24/03/13
DM_12 568 24/03/13
DM_9 564 24/03/13
DM_6 505 24/03/13
DM_5 504 24/03/13
DM_2 480 24/03/13
Others 1948 25/03/13
DM_1 807 25/03/13
DM_8 764 25/03/13
DM_7 761 25/03/13
DM_11 656 25/03/13
DM_18 611 25/03/13
DM_17 523 25/03/13
DM_14 467 25/03/13
DM_19 447 25/03/13
DM_15 437 25/03/13
DM_6 380 25/03/13 Thank you in advance.I got the solution. Just sharing.
I used analytic functions that make my job easy.
Sample Data
DOMAIN_NAME QTD LOAD_DATE
DM_1 807 25/03/2013
DM_1 1000 24/03/2013
DM_2 226 25/03/2013
DM_2 480 24/03/2013
DM_3 244 25/03/2013
DM_3 743 24/03/2013
DM_4 48 25/03/2013
DM_4 413 24/03/2013
DM_5 164 25/03/2013
DM_5 504 24/03/2013
DM_6 380 25/03/2013
DM_6 505 24/03/2013
DM_7 761 25/03/2013
DM_7 212 24/03/2013
DM_8 764 25/03/2013
DM_8 308 24/03/2013
DM_9 354 25/03/2013
DM_9 564 24/03/2013
DM_10 214 25/03/2013
DM_10 367 24/03/2013
DM_11 656 25/03/2013
DM_11 913 24/03/2013
DM_12 37 25/03/2013
DM_12 568 24/03/2013
DM_13 332 25/03/2013
DM_13 572 24/03/2013
DM_14 467 25/03/2013
DM_14 87 24/03/2013
DM_15 437 25/03/2013
DM_15 450 24/03/2013
DM_16 238 25/03/2013
DM_16 299 24/03/2013
DM_17 523 25/03/2013
DM_17 143 24/03/2013
DM_18 611 25/03/2013
DM_18 145 24/03/2013
DM_19 447 25/03/2013
DM_19 464 24/03/2013
DM_20 91 25/03/2013
DM_20 933 24/03/2013 Top 11 QTD of DOMAIN_NAME per Data Range.
SELECT *
FROM
(SELECT DOMAIN_NAME,
QTD,
LOAD_DATE
FROM
(SELECT LOAD_DATE,
DOMAIN_NAME ,
QTD,
(DENSE_RANK() OVER (PARTITION BY LOAD_DATE ORDER BY QTD DESC )) AS RANK_QTD
FROM SAMPLE_DATA
WHERE trunc(load_date) BETWEEN '24/03/2013' AND '25/03/2013'
WHERE RANK_QTD <= 10
UNION ALL
SELECT 'Others',
SUM(QTD) AS QTD,
LOAD_DATE
FROM
(SELECT LOAD_DATE,
DOMAIN_NAME ,
QTD,
(DENSE_RANK() OVER (PARTITION BY LOAD_DATE ORDER BY QTD DESC )) AS RANK_QTD
FROM SAMPLE_DATA
WHERE trunc(load_date) BETWEEN '24/03/2013' AND '25/03/2013'
WHERE RANK_QTD > 10
GROUP BY LOAD_DATE
ORDER BY LOAD_DATE ASC,
QTD DESC
DOMAIN_NAME QTD LOAD_DATE
Others 2888 24/03/2013
DM_1 1000 24/03/2013
DM_20 933 24/03/2013
DM_11 913 24/03/2013
DM_3 743 24/03/2013
DM_13 572 24/03/2013
DM_12 568 24/03/2013
DM_9 564 24/03/2013
DM_6 505 24/03/2013
DM_5 504 24/03/2013
DM_2 480 24/03/2013
Others 1948 25/03/2013
DM_1 807 25/03/2013
DM_8 764 25/03/2013
DM_7 761 25/03/2013
DM_11 656 25/03/2013
DM_18 611 25/03/2013
DM_17 523 25/03/2013
DM_14 467 25/03/2013
DM_19 447 25/03/2013
DM_15 437 25/03/2013
DM_6 380 25/03/2013 -
Value from data grid not showing in workspace
Hi everyone.
I've entered value in data grid that i maid in Planning for one member. It looks like there is no velue for that member. What needs to be done to recognize new source?
Member is set on Store and is used in some formulas in Dynamic Calc members.
Thx.Maybe it is an implied share, is it is an only child, set the member to "never share", refresh and try again.
Cheers
John
http://john-goodwin.blogspot.com/ -
Prevent multiple users from updating coherence cache data at the same time
Hi,
I have a web application which have a huge amount of data instead of storing the data in Http Session are storing it in coherence. Now multiple groups of users can use or update the same data in coherence. There are 100's of groups with several thousand users in each group. How do I prevent multiple users from updating the cache data. Here is the scenario. User logs-in checks in coherence if the data there and gets it from coherence and displays it on the ui if not get it from backend i.e. mainframe systems and store it in coherence before displaying it on the screen. Now some other user at the same time can also perform the same function and if don't find the data in coherence can get it from backend and start saving it in coherence while the other user is also in the process of saving or updating. How do I prevent this in coherence. As have to use the same key when storing in coherence because the same data is shared across users and don't want to keep multiple copies of the same data. Is there something coherence provides out-of-the-box or what is best approach to handle this scenario.
ThanksHi,
actually I believe, that if we are speaking about multiple users each with its own HttpSession, in case of two users accessing the same session attribute in their own session, the actually used cache keys will not be the same.
On the other hand, this is probably not what you would really like, you would possibly like to share that data among sessions.
You should probably consider using either read-through caching with the CacheLoader implementor doing the expensive data retrieval (if the data to be cached can be obtained outside of an HTTP container), or side caching with using Coherence locks or entry-processors for concurrency control on the data retrieval operations for the same key (take care of retries in this case).
Best regards,
Robert -
Function Module required for getting Value Range data
I need a function module where in i can get the data from a value range in a domain.
Message was edited by:
Gurpreet SinghHi,
You can use this code to get the Doman's fixed values.
DATA: lt_fixed_values TYPE ddfixvalues,
CALL METHOD cl_abap_typedescr=>describe_by_name
EXPORTING
p_data = 'Domain_name' " Pass the domain name here
RECEIVING
p_descr_ref = lcl_abap_typedescr.
TRY.
lcl_abap_elemdescr ?= lcl_abap_typedescr.
CATCH cx_sy_move_cast_error.
ENDTRY.
IF lcl_abap_elemdescr IS BOUND.
CALL METHOD lcl_abap_elemdescr->get_ddic_fixed_values
EXPORTING
p_langu = sy-langu " Give the language
RECEIVING
p_fixed_values = lt_fixed_values " This table will have the fixed values
EXCEPTIONS
not_found = 1
no_ddic_type = 2
OTHERS = 3.
ENDIF.
Regards,
Sesh -
Hi experts,
I want to set default value for dates..
My screen has : date_from & date_to.
date_to : will be current date(today's date) if Eg: 27.08.2007 (here i used NOW())
then date_from must be 01.06.2007 (3 months logic)
similarly : if date_to is 01.01.2007
then date_from must be 01.11.2006
kindly help...
Thanks a lot!!!
Regards,
BijalHi Bijal
(DGET(NOW(),'D'))-1) returns number which is 0 incase of 01.08.2007, so DADD(NOW(),-0,'D') is again ideally same day 01.08.2007 .
So, DADD(DADD(NOW(),-0,'D'),-2,'M') should give you 01.06.2007.
<b> IT WORKS!!! -
I have tested it now.</b>
Please check and revert.
The IF formula which sent actually returns String, so use DVAL(IF(DGET(NOW(),'D')!=1,DADD(DADD(NOW(),-((DGET(NOW(),'D'))-1),'D'),-2,'M'),DADD(NOW(),-2,'M')))
Message was edited by:
Navneet Giria -
ORA-01841 Error when value for date col is NULL in .dat (using SQL Loader)
Hello Gurus,
I have some data in .dat file which needs to be loaded into oracle table. I am using SQL * Loader to do the job. Although "NULLIF col_name =BLANKS" works for character datatype, but when value for date col is NULL then I get ORA-01841 error. I have to make NULL for all rows withour value for date column
Early reply will be highly appreciated
FarooqHi,
May be this problem is not with the NULLIF. The value for the date column is not in proper date format.
create table:
create table kk (empno number, ename varchar2(20), deptno number, hiredate date)
Control file:
LOAD DATA
INFILE 'd:\kk\empdata.dat'
insert into TABLE kk ( empno position (1:2) integer external,
ename position(4:5) char NULLIF ename=BLANKS,
deptno position (7:8) integer external NULLIF deptno=BLANKS,
hiredate position (10:20) date NULLIF hiredate=BLANKS)
data file:
10 KK 01-jan-2005
20 10
SELECT * FROM KK;
EMPNO ENAME DEPTNO HIREDATE
10 KK 01-JAN-05
20 10
Verify the data file.
Hope it will help -
Converting the string value to data format
Hello Everyone,
Please guide me in converting the value to date format.
from source i'm getting the value (which is acchally a data value) '20070730'.
I need this value to be in date format '2007/07/30'
Please help me in getting it done.
thank youHi
Code Snippetselect cast('20070730' as datetime)
Note : beware of collation used in your SQL instance or your database.
Jean-Pierre -
Round up my values in DATA FORM
Hi
Is there any chance i could round up my values in data forms?
245.587 = 246
ThanksHave you had a look at the precision settings for a form - http://download.oracle.com/docs/cd/E17236_01/epm.1112/hp_admin/frameset.htm?form_opt.html
Otherwise you could have a business rule that rounds the values using the @ROUND function - http://download.oracle.com/docs/cd/E17236_01/epm.1112/esb_tech_ref/round.html
Cheers
John
http://john-goodwin.blogspot.com/
Maybe you are looking for
-
Nokia N91 phone memory problem
I have owned this Nokia N91 for a year and 9 months. Phone memory is a problem as i cannot recieve any messages. The message, not enough memory to recieve message(s), delete some data. I have taken absolutely everything off the phone memory except me
-
i tried to install a new os x mountain lion, but the system asked me to provide the apple id and password that was used to buy the os from the apple store online. which i don't have. how do i go ahead to install my new os x on the mC
-
HRMD_A status 53 with NO ACTUAL DATA TO SAP t-code PA30
Hi, We are trying to load the HR minimaster reocord from a flat data file to R/3. I have created an iDoc through WE19 for message type hrmd_a and basic type hrmd_a06. Populated infotypes for 0000, 0001, 0002 and 0003. idoc created with status 53 (gre
-
MBP 2.16 Core Duo - Is it N?
I looked in system profiler and I see this: Wireless Card Type: AirPort Extreme (0x168C, 0x86) Is this the 802.11g version or the newer 802.11n version. How do I tell? I got my MBP in June 2006. If it isn't, can I just pop in the newer version card?
-
Hi. Is there anyway to increase the pool size for a message driven bean (ejb3) in Netweaver CE 7.1? Can this be done through the NWA application? Regards, Andrew