Tally Table,タリー表

SQLでループの代替として使うテーブルです。
”for(i=3;i<256;i+=3)” みたいなループの代わりに使えます。

前回書いたHiveも一例ですが…

“select stack(3,1,2,3)” で3行1列の一時的なテーブルを生成

Hive行生成関数stack()

Recursive CTE(Common Table Expression)を使ってダイナミックに生成する場合が多いと思います。以下に書いたようにOracle, PostgreSQLなどで数式で表現できるインターバルを持つ日付(timestamp)をあるカラムの値に持つ行を多数生成できます。

SQLのWITH句で任意の範囲の日付を取得する

PostgreSQL の 日付入りCTE をOracleに変換すると…

Googleってみましたがあまりヒットせず定番の日本語訳が見つかりませんでした。皆んな無意識のうちに使っていてあえて名前を付けるほどのものでもないのかも。

Number table(整数テーブル)とも呼ばれるようです。多くのRDBMSでストアドプロシージャ記述言語で書くより高速に動作するんではないでしょうか。

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s