Showing posts with label Informatica. Show all posts
Showing posts with label Informatica. Show all posts

Tuesday, December 15, 2009

Informatica for free

Saw this today, and thought I'd share.


If you are interested in installing Informatica PowerCenter (server + client) on your Home PC/ Laptop, here is how you can do it. The copy comes with a Development License http://www.oracle.com/technology/software/popup-license/standard-license.html that allows you to use full version of the product at no charge for strictly self-educational purposes.

Go to http://edelivery.oracle.com/

Fill in the form in the next page.

In the Media Pack Search page, search for "Oracle Business Intelligence"

Download the version that you want to install.

Notes:
You may also want to download an Oracle database.
These pages will help you in the installation process:

http://download.oracle.com/docs/cd/E10783_01/doc/bi.79/e10742/anyinstadmwininstall.htm#BABBHJDH

http://gerardnico.com/wiki/dw/etl/informatica_powercenter/powercenter_installation

Thursday, June 4, 2009

Union Transformations?

In a comment to my previous entry, Divya asked me to check out an Informatica quiz here: http://tinyurl.com/infaquiz

Tough quiz. Some of the questions were pretty tough. One in particular threw me for a loop - one about Union transformations.

While trying to answer it, it occurred to me that I had no idea what a Union transformation was. After the quiz, I pulled up Informatica's help on this topic, and found Union Transformation in the help, but couldn't actually add one to any mapping.

I found this:
To create a Union transformation:
1. In the Mapping Designer, click Transformations > Create.
2. Select Union Transformation and enter the name of the transformation.
...

Except that when I try step 2, I fail - because Union Transformation isn't a choice for me in my drop-down. Anyone have any idea what is going on here? Is this a transformation that doesn't come with all default installations of Informatica?

Tuesday, May 19, 2009

Binary log files

I'm not a fan of version 8's binary log files. They're kind of hard to work with, and especially so from the Windows Explorer viewpoint, since I haven't yet found a command line tool to associate to those types which can open them (if you know of one, I'd love to hear what it is!).

But Informatica isn't unforgiving in this regard, there's an option you can set if you're kind of a luddite like me, and prefer the standard text files. Just choose "Write Backwards Compatible Log File" in the Session's properties.

Be aware that this will actually create a PAIR of log files for your job - a .bin logfile, and a regular ASCII log file. Curiously enough, the .bin log file will be twice as large as your regular ASCII log file (so much for progress). Workflow manager will still read the .bin file - so it will still look all fancy (as compared to previous Informatica versions), but you'll also have the regular file in case you need to do some historical investigation, you can do so easily.

You can use the "Import" function within Workflow monitor, but I find it to be kind of a nuisance. Go to "Tools" and "Import Log" to import .bin files directly into Workflow Monitor if you want to read old .bin files.

Wednesday, May 13, 2009

Problem solved

Two blog entries in one day. I must be trying to make up for yesterday.

I just spent a couple of hours trying to solve this problem, and I think I finally did.

I had a session with a $$LASTRUN date which should receive the sessstarttime of the mapping and then set that when the session completes so that it knows where to pick up from the previous run.

Except it wasn't working. When I ran the session, the mapping variable ended up with the same exact value as it had started with. Which frustrated me, because I have other jobs that do the exact same thing and they do work. So, I ended up comparing this mapping (which wasn't working) and one that was and found this:

The mapping which worked had a default mapping variable value of '2009-04-17 12:00:00'.

And the default mapping variable value of the one not working was '04/17/2009 12:00:00'.

Note the ever-so-subtle difference.

Now, why this caused the mapping variable not to get assigned the correct value, I'll never know.

But keep this tip in your back pocket in case you run into problems with mappings behaving in this way.

Friday, May 1, 2009

Informatica and the little things

I've always felt like it's the little things in life that matter. It's always the small things that either bite you in the ass, or - as they say, life's little pleasures. There doesn't seem to be any middle ground when it comes to little things. Take my 3 year old, for example. A couple of weeks ago, I asked her if Daddy was "bootylicious". She responded that she would not like to eat my booty. I can't blame her there. I wouldn't either.

Anyway, like butts, there are some things in Informatica that kind of stink, like Worklets. I don't like worklets. I never have. I'm not even sure I know what the point is. Early on, when I took over the system we have, the previous developers lumped every task together into logical groupings that they put into worklets. So, the workflow was literaly one worklet after another. And each worklet was single-threaded. There was nothing running in parallel. And because it was all in worklets, you couldn't restart the workflow if it died. So, maintaining the thing was a nightmare.

One of the first things I did was to rebuild the entire workflow. I scrapped every worklet and put everything into one gigantic workflow. Oh sure, this was complicated, but it meant that I could load multiple things at a time, and do completely unrelated things in parallel. It also meant that if something died, the rest of the stuff would continue on until the dependencies came back together again, but I knew I could always "restart workflow from task" at that point. Life became good. I also shaved about 4 hours off the total run time. Good stuff.

Today, the only worklet I have at all is a worklet which contains all the match/consolidate stuff we're doing with IDQ, and even then I only really even use that in development. The Informatica rep we hired to code it all for us put it all into a worklet, and I frowned, "What about restartability?", I asked - and he agreed it was a problem, so he took it out of the worklet.

My advice? Stay away from worklets.

There are other little things like this in Informatica that can make life hard or easy. Take Sequence Generators, for example. The default cached values of a sequence generator is 1,000. Which means if you write 5 rows into a reference table a day, you're going to end up with key values like 1,2,3,4,5,1000,1001,1002,1003,1004,2001,2002,2003,2004... something like that. Kind of ugly. Set it to 10 or 100 instead. Likewise, if you're writing a hundred thousand rows in a table a day, having a value like 1,000 is inefficient. Might as well make it 10,000. That's 90 fewer generations.

Little things.

Another little thing that new developers will often overlook is the "save session log for these runs" option under the "config object" tab of a session. I always set this to 14 - that saves two weeks of logs. Leaving this to be zero (the default) means you'll only always store just 1 version of your log - the current one. Bad idea. Better yet, edit the default_session_config (under tasks->session configuration) and change it permanently there so you don't have to think about it (and worse, forget about it) ever again.

Tuesday, April 28, 2009

Appending a header onto a flat file in Informatica

A few weeks ago, I had a project whereby I needed to append a header onto a flat file using Informatica. I'd come across a few posts regarding this topic, but most of them were people asking how to do it - and struggling with a solution.

I don't know what the "preferred" solution is within Informatica, and I'm certain that there are probably multiple "correct" ways in which this can be accomplished (some of the clunkier than others, I'm sure), but the following is a way in which I got it to work, and it's pretty elegant.

Also, you should know that I tried about 20 variations on this before I finally got it to work. So, if you're struggling with this, just try this method. A lot of other ways you think might work, won't actually work. So, this might save you some time and headache.

Also, keep in mind I'm using 8.6.1, so which options you have in your version (if your version is significantly different) might differ slightly.

Ok, brace yourself, this is pretty complicated...

First, write to a flat file target in your mapping. That much should be obvious.

  • Create a .txt file that has your header in it. Be sure to put a carriage return at the end, otherwise your data will append to the end of that line. And be sure not to have empty rows that follow, otherwise you'll have a blank line between your header and your data.
  • Go to the Mapping tab of your Session, and click on your flat file target.
  • For "Header Options" Choose "Use header command output"
  • For the "Header Command" put "type " and then a path where your header file is located.
  • Um.. that's it.
Ok, that wasn't that hard. Keep in mind, I tried a ton of variations on this, and all fell flat. Also, the path of the header file should be on your Informatica server. Informatica doesn't play well with files on other servers. So, keep it simple. I recommend putting all your headers in a single location - I have a "headers" folder under my folder's... er, directory. In fact, the directory structure might be a good topic for a future blog.

But anyway - that it. Piece of cake.