Wednesday, 18 August 2010
How many rows assigns Teradata to each AMP for a given table?
SELECT
HASHAMP (HASHBUCKET(HASHROW( col1, col2, col3 ))) AS AMP_NUM,
COUNT(*) as NUM_ROWS_PER_AMP
FROM
mytable
GROUP BY 1
ORDER BY 1;
It is useful to check whether your table is properly distributed or not!
Tuesday, 17 August 2010
PHP's "Fatal error: Call to undefined function: curl_init()" on Ubuntu
After Twitter changed its access settings for applications to tweet directly into it, I had some problems updating my WP to Twitter plugin. I got a "Fatal error: Call to undefined function: curl_init()".
Problem? Missing php5-curl package on my Ubuntu server.
Solution?
sudo apt-get install php5-curl
sudo /etc/init.d/apache2 restart
Listing missing statistics from Teradata query optimizer
You can request it to hint you for the missing statistics that it would like to have on your tables running the code
diagnostic helpstats on for session;
before checking query plans. After running the command above, the query plan, at the end, will list those statistics that the end of the query plan.
Saturday, 14 August 2010
Completely eliminate packages marked as rc in Ubuntu or Debian
apt-get remove mypackage
you will still see it when you run a
dpkg -l
comand. And it is the case because configuration files are not erased. In order to completely remove (i.e., purge) a package you need to run
apt-get --purge remove mypackage
But what if you removed it but you did not purge it? It will always show up in your system.
If you want to get rid of all those rc-status (removed but not purged) packages in your system you can run something like:
sudo dpkg --purge `dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs`
Tuesday, 13 July 2010
Calling Python from R
Sunday, 4 July 2010
Passing arguments to Python functions
If you want to pass unnamed arguments, you can do as follows:
>>> a = (1,5)
>>> range( *a )
[1, 2, 3, 4]
If you want to pass named arguments, you need dictionaries:
>>> a = range( 1, 4 )
>>> b = range( 4, 8 )
>>> def concat( a, b ): return a + b
...
>>> concat( **dict( a = a, b = b ) )
[1, 2, 3, 4, 5, 6, 7]
You can mix named and unnamed arguments thus:
my_foo( *a, **b )
where a and b are a list and a dictionary. Caution needs to be taken to pass a single unnamed argument, though. Details can be found in the reference above.
Passing arguments to Python functions
I found a good discussion on how to pass vectors and dictionaries as arguments to Python functions. It can be found here.
In summary, for unnamed arguments:
>>> a = (1,4)
>>> range( *a )
[1, 2, 3]
And for named arguments:
>>> def concat(a,b): return a + b
...
>>> a = [1,2,3]
>>> b = range( 4,7)
>>> b
[4, 5, 6]
>>> concat(**dict( a = a, b = b ) )
[1, 2, 3, 4, 5, 6]
Named and unnamed arguments can be mixed:
my_foo( *a, **b )
There is only one caveat with functions requiring a single, unnamed argument. See the link above for details.