Pivotal Knowledge Base

フォローする

テスト用途で Greenplum データベースに tablefunc モジュールをインポートする方法

環境

製品 バージョン
Pivotal Greenplum(GPDB) 4.3.x

事象

PostgreSQL に付属するtablefunc 関数は、crosstab関数を使用するのに必要であろう。しかしながら、HAWQ または GPDB ではtablefunc 関数は、公式サポートされていない。

要注意: この手順はPivotalによって公式サポートされていないため、当該ユーティリティに関連する誤った結果または問題は、公式コミュニティサイト経由で対処してほしい。

解決策

あくまでもテスト用途で、 以下の手順に従い、tablefuncをPostgreSQLのソースコードからコンパイルした後、Greenplum データベースへインポートする。

cd /data/david/greenplum-db-4.2.1.0/include/postgresql/server
mkdir cdb
cd /data/david/greenplum-db-4.2.1.0/include/postgresql/internal/cdb
cp * /data/david/greenplum-db-4.2.1.0/include/postgresql/server/cdb
cp /data/david/software/postgresql-8.3.23/src/include/pgtime.h /data/david/greenplum-db-4.2.1.0/include/postgresql/server
cd /data/david/software/postgresql-8.3.23/contrib/tablefunc
gcc -fpic -I /data/david/greenplum-db-4.2.1.0/include/postgresql/server -c tablefunc.c
gcc -fpic -shared -o tablefunc.so tablefunc.o
psql -f tablefunc.sql.gp

検証:

initdb=# SELECT * FROM crosstab( 'select rowid, attribute, value from ct where attribute = ''att2'' or attribute = ''att3'' order by 1,2') AS ct(row_name text, category_1 text, category_2 text, category_3 text);

row_name | category_1 | category_2 | category_3
------------------------------------------------
test1 | val2 | val3 |
test2 | val6 | val7 |

内部参照用: 

  • ZD-13466
  • MPP-23567

コメント

Powered by Zendesk