dbTalk Databases Forums  

data cleansing: externally or internally?

comp.databases.oracle.misc comp.databases.oracle.misc


Discuss data cleansing: externally or internally? in the comp.databases.oracle.misc forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
geos
 
Posts: n/a

Default data cleansing: externally or internally? - 11-04-2011 , 12:51 AM






there is a big text file with dirty data. a company wants it to be
clean. there are some known patterns expressed as like or regexp. I
first thought about two approaches:
1) do this on the system level
2) or in a database
for the latter case it looks to me that I could use external tables or
load data into temporary table and then do the cleaning.

I am looking for pros and cons of each variant. my intuition tells me
that loading into temporary table would give the most flexibility but
also take additional space. I am not sure about the other methods. I
would appreciate your opinion about what I should pay attention to when
choosing the other methods. how are they restricted in terms of
performance, flexibility and capabilities (eg. multitable loading)? I am
also interested in good practices and your experience in similar cases
you can share.

thank you,
geos

--
NOTE: Follow Up set to comp.databases.oracle.misc

Reply With Quote
  #2  
Old   
Robert Klemme
 
Posts: n/a

Default Re: data cleansing: externally or internally? - 11-04-2011 , 03:23 AM






On 11/04/2011 07:51 AM, geos wrote:
Quote:
there is a big text file with dirty data. a company wants it to be
clean. there are some known patterns expressed as like or regexp. I
first thought about two approaches:
1) do this on the system level
What exactly do you mean by "system level"? Is this an alias for
"without database"?

Quote:
2) or in a database
for the latter case it looks to me that I could use external tables or
load data into temporary table and then do the cleaning.

I am looking for pros and cons of each variant. my intuition tells me
that loading into temporary table would give the most flexibility but
also take additional space. I am not sure about the other methods. I
would appreciate your opinion about what I should pay attention to when
choosing the other methods. how are they restricted in terms of
performance, flexibility and capabilities (eg. multitable loading)? I am
also interested in good practices and your experience in similar cases
you can share.
There are a lot of questions to be asked before one can come up with
reasonable advice:

Is this a one off task or needs to be done on a regular basis?
What data is contained in the file?
What format is the file?
How large is the file?
Where does the data ultimately go (next processing stage)?
What does "dirty data" mean? Put differently: what kind of cleanup
activity do you need to do?
What other requirements are there (execution speed, development time /
cost)?

Cheers

robert

Reply With Quote
  #3  
Old   
mhoys
 
Posts: n/a

Default Re: data cleansing: externally or internally? - 11-04-2011 , 03:26 AM



On Nov 4, 7:51*am, geos <g... (AT) nowhere (DOT) invalid> wrote:
Quote:
there is a big text file with dirty data. a company wants it to be
clean. there are some known patterns expressed as like or regexp. I
first thought about two approaches:
1) do this on the system level
2) or in a database
for the latter case it looks to me that I could use external tables or
load data into temporary table and then do the cleaning.

I am looking for pros and cons of each variant. my intuition tells me
that loading into temporary table would give the most flexibility but
also take additional space. I am not sure about the other methods. I
would appreciate your opinion about what I should pay attention to when
choosing the other methods. how are they restricted in terms of
performance, flexibility and capabilities (eg. multitable loading)? I am
also interested in good practices and your experience in similar cases
you can share.

thank you,
geos

--
NOTE: Follow Up set to comp.databases.oracle.misc
Hi,
I've always done it with external/temp tables... but that's because
I'm more familiar with (PL/)SQL than with shell scripting. You could
write your cleaning functions/procedures once and put them in a
package for later reuse. And if you know APEX, it's easy to build a
web interface around them. Some things are also more easy to do with
SQL than with shell scripting, for example data aggregations. I'm not
sure about the performance. Maybe Perl might perform better on very
large flat files (this could also be dependent on the type of file
system).

HTH,
Matthias

Reply With Quote
  #4  
Old   
Deadly Dirk
 
Posts: n/a

Default Re: data cleansing: externally or internally? - 11-04-2011 , 11:51 AM



On Fri, 04 Nov 2011 07:51:49 +0100, geos wrote:

Quote:
there is a big text file with dirty data.
How big is "big"?

Quote:
a company wants it to be
clean. there are some known patterns expressed as like or regexp. I
first thought about two approaches:
1) do this on the system level
2) or in a database
Database is not well suited for things like that. Personally, I would use
Perl. Perl is my favorite tool because it's extremely versatile and fast
but any scripting language with regex support will probably do.





--
I don't think, therefore I am not.

Reply With Quote
  #5  
Old   
Mark D Powell
 
Posts: n/a

Default Re: data cleansing: externally or internally? - 11-04-2011 , 12:33 PM



Robert has listed some good points. The devil is always in the details. What does 'dirty' mean in this context. Is the data dirty cause someone hadthe shift key depresssed when he or she tried to enter a numeric digit or it is dirty because a related reocord or table row (FK) does not exist for some of the data? Perhaps both conditions are true.

You may in fact want to filter the data via shell scripts for some of the issues and then use Oracle tools for other issues.

HTH -- Mark D Powell --

Reply With Quote
  #6  
Old   
joel garry
 
Posts: n/a

Default Re: data cleansing: externally or internally? - 11-04-2011 , 06:12 PM



On Nov 3, 11:51*pm, geos <g... (AT) nowhere (DOT) invalid> wrote:
Quote:
there is a big text file with dirty data. a company wants it to be
clean. there are some known patterns expressed as like or regexp. I
first thought about two approaches:
1) do this on the system level
2) or in a database
for the latter case it looks to me that I could use external tables or
load data into temporary table and then do the cleaning.

I am looking for pros and cons of each variant. my intuition tells me
that loading into temporary table would give the most flexibility but
also take additional space. I am not sure about the other methods. I
would appreciate your opinion about what I should pay attention to when
choosing the other methods. how are they restricted in terms of
performance, flexibility and capabilities (eg. multitable loading)? I am
also interested in good practices and your experience in similar cases
you can share.

thank you,
geos

--
NOTE: Follow Up set to comp.databases.oracle.misc
Out of database. I've done this so many times, whenever the database
is the limiting factor I take it out of the db, clean, and put it back
in. Two biggest factors are redo generation and memory limitations,
the latter of which are handled better by unix and pipelining. Plus,
it's easier to split transforms into little pieces and pipe them
together.

jg
--
@home.com is bogus.
http://www.computerworld.com/s/artic...taxonomyId=154

Reply With Quote
  #7  
Old   
Cliff
 
Posts: n/a

Default Re: data cleansing: externally or internally? - 11-06-2011 , 06:27 AM



My 2 cents and IMHO:

Database

CON

- additional storage space

- increased backup time as you'd basically be making multiple copes of
your data as you transform it

-version control - Do not do this in the database as it's easier to
keep track of your transformations via file names than via multiple
tables in the database.


PRO

- If you're transforming current production data being used every
day, you know you have the current dataset all of the time. However,
I would write some pre-code to verify my assumptions prior to each run.



External file


CON

- transforming external to the database can be more complex if you
have multiple decision points in your transformation rules.

- Some editing tools choke on huge file sizes

PRO


- easier to export out of the database and perform multiple small
transformations with your favorite tool ( sed and awk are mine) and
easier to debug.

- the additional file space used by the transformation iterations are
easier to recover from file manipulation than by shrinking a tablespace
or creating a hughe tablespace specifically for this task.


- Depending on whether this is a one-off or a monthly clean-up
script, consider having your script run in 2 modes, Proposed changes
and changes that were made; that way you can get business sigh-off on
what your script is actually doing.

Reply With Quote
  #8  
Old   
geos
 
Posts: n/a

Default Re: data cleansing: externally or internally? - 11-08-2011 , 03:47 PM



thank you for all your answers!

you pointed out many interesting things so that I have to think about'em
before I write more in the subject.

thank you,
geos

Reply With Quote
  #9  
Old   
Ramon F Herrera
 
Posts: n/a

Default Re: data cleansing: externally or internally? - 11-10-2011 , 07:48 AM



On Nov 4, 12:51*am, geos <g... (AT) nowhere (DOT) invalid> wrote:
Quote:
there is a big text file with dirty data. a company wants it to be
clean. there are some known patterns expressed as like or regexp. I
first thought about two approaches:
1) do this on the system level
2) or in a database
for the latter case it looks to me that I could use external tables or
load data into temporary table and then do the cleaning.

I am looking for pros and cons of each variant. my intuition tells me
that loading into temporary table would give the most flexibility but
also take additional space. I am not sure about the other methods. I
would appreciate your opinion about what I should pay attention to when
choosing the other methods. how are they restricted in terms of
performance, flexibility and capabilities (eg. multitable loading)? I am
also interested in good practices and your experience in similar cases
you can share.

thank you,
geos

--
NOTE: Follow Up set to comp.databases.oracle.misc
After more than a decade of experience my advice to you is: Use Oracle
as little as possible.

I wrote all my business logic in C/C++ making calls to the database
only as needed, and now my applications run much, much, much, much
faster. Not to mention the improved development and debug (can use a
debugger, not sure whether Oracle has something similar).

In essence, the only commands that I run in the database are basic
ones such as SELECT and UPDATE. No IFs or BUTs.

-Ramon

Reply With Quote
  #10  
Old   
Robert Klemme
 
Posts: n/a

Default Re: data cleansing: externally or internally? - 11-11-2011 , 02:51 PM



On 11/10/2011 02:48 PM, Ramon F Herrera wrote:
Quote:
On Nov 4, 12:51 am, geos<g... (AT) nowhere (DOT) invalid> wrote:
there is a big text file with dirty data. a company wants it to be
clean. there are some known patterns expressed as like or regexp. I
first thought about two approaches:
1) do this on the system level
2) or in a database
for the latter case it looks to me that I could use external tables or
load data into temporary table and then do the cleaning.

I am looking for pros and cons of each variant. my intuition tells me
that loading into temporary table would give the most flexibility but
also take additional space. I am not sure about the other methods. I
would appreciate your opinion about what I should pay attention to when
choosing the other methods. how are they restricted in terms of
performance, flexibility and capabilities (eg. multitable loading)? I am
also interested in good practices and your experience in similar cases
you can share.
You still did not disclose the type of processing you want to do.
Without that information advice cannot be targeted at your scenario.

Quote:
After more than a decade of experience my advice to you is: Use Oracle
as little as possible.

I wrote all my business logic in C/C++ making calls to the database
only as needed, and now my applications run much, much, much, much
faster. Not to mention the improved development and debug (can use a
debugger, not sure whether Oracle has something similar).

In essence, the only commands that I run in the database are basic
ones such as SELECT and UPDATE. No IFs or BUTs.
This cannot be generalized as advice! You do not even mention the type
of application(s) you are talking about. What may work good for the
application types you work on may not work at all for other application
types.

Kind regards

robert

Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.3
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.