質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Hive

Hiveとは、Hadoop(オープンソースの大規模分散計算フレームワーク)の上で動作するDWH(Data Warehouse:データウエアハウス)向けのプロダクトです。HiveQLというSQLのような言語で、Hadoop上のデータを操作することができます。

Treasure Data

Treasure Dataは、米国トレジャーデータ社の提供するクラウド型のデータマネジメントサービスです。ビッグデータ処理システムを備え、AWS上にセットアップされているため、データの集収、保管、分析を容易に行うことができます。

TreasureData

TreasureDataは、クラウド型データマネージメントサービスです。アプケーションログやセンサーデータといった時系列データの収集や保管、分析を容易に行うことが可能です。分析エンジンとしてPrestoの利用もでき、SQLで収集データをインタラクティブに分析できます。

Q&A

0回答

3242閲覧

hiveのクエリをpresto、postgresで書き換える

9nom

総合スコア42

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Hive

Hiveとは、Hadoop(オープンソースの大規模分散計算フレームワーク)の上で動作するDWH(Data Warehouse:データウエアハウス)向けのプロダクトです。HiveQLというSQLのような言語で、Hadoop上のデータを操作することができます。

Treasure Data

Treasure Dataは、米国トレジャーデータ社の提供するクラウド型のデータマネジメントサービスです。ビッグデータ処理システムを備え、AWS上にセットアップされているため、データの集収、保管、分析を容易に行うことができます。

TreasureData

TreasureDataは、クラウド型データマネージメントサービスです。アプケーションログやセンサーデータといった時系列データの収集や保管、分析を容易に行うことが可能です。分析エンジンとしてPrestoの利用もでき、SQLで収集データをインタラクティブに分析できます。

0グッド

0クリップ

投稿2017/09/08 00:07

編集2017/09/08 13:17

トレジャーデータにおいて、hiveでこれまで書いていたクエリをprestoで書くことになりました
prestoはpostgresの書き方と同じなので、postgres に変換できれば大丈夫です
以下コード例です。
DISTRIBUTE BY COALESCE(user_id, TD_MD5(concat(useragent,ip))) SORT BY COALESCE(user_id, TD_MD5(concat(useragent,ip))), time
の部分、そのままpostgresでは使えません、、どのように変換すればよいでしょうか
そもそもこのクエリで正確にセッションが取得できているでしょうか

SELECT

1 TD_TIME_FORMAT(min(time), 'yyyy-MM-dd HH:mm:ss', 'JST') as session_start_time, 2 TD_TIME_FORMAT(max(time), 'yyyy-MM-dd HH:mm:ss', 'JST') as session_end_time, 3 session_id, 4 user_id, 5 -- TD_PARSE_USER_AGENTを利用してUAからOSの文字列を取得し、PC/SDを判定 6 CASE 7 WHEN TD_PARSE_USER_AGENT( 8 TD_LAST( 9 useragent, 10 time 11 ), 'os_family' 12 ) IN( 13 'Android', 14 'iOS', 15 'Windows Phone', 16 'Windows RT' 17 ) THEN 'sd' 18 ELSE 'pc' 19 END device, 20 -- セッションの一番最初のリファラURL(流入元)を取得 21 TD_FIRST(referer, time) as referer, 22 -- セッションの一番最初のURL(ランディングページ)を取得 23 TD_FIRST(url, time) as lp, 24 -- セッションの一番最後のURL(離脱ページ)を取得 25 TD_LAST(url, time) as exit_page, 26 COUNT(1) as views, 27 -- ランディングページのGoogleAnalyticsのパラメータを取得 28 parse_url( 29 TD_FIRST(url, time), 30 'QUERY', 31 'utm_source' 32 ) as ga_utm_source, 33 -- PV数が1のものに直帰フラグを設定 34 CASE 35 WHEN COUNT(1) = 1 THEN 1 ELSE 0 36 END bounce_flg, 37 -- セッションの終了と開始時間から滞在時間を計算 38 MAX(time) - MIN(time) as duration 39FROM ( 40 -- user_idをキーに30分でセッションIDを生成 41 SELECT 42 time, 43 ip, 44 user_id, 45 url, 46 referer, 47 useragent, 48 TD_SESSIONIZE( 49 time, 50 1800, 51 user_id 52 ) AS session_id 53 FROM 54 ( 55 -- user_idが空の場合にUA+IPをキーに擬似user_idを生成。セッションIDを生成するため、user_id、timeでソート 56 SELECT 57 time, 58 ip, 59 COALESCE(user_id, TD_MD5(concat(useragent,ip))) as user_id, 60 url, 61 referer, 62 useragent 63 FROM 64 demo_www_access 65 ** DISTRIBUTE BY COALESCE(user_id, TD_MD5(concat(useragent,ip))) SORT BY COALESCE(user_id, TD_MD5(concat(useragent,ip))), time** 66 ) t0 67) t1 68GROUP BY session_id, user_id```

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2017/09/08 00:36

プログラムコード(およびエラーメッセージ)は```で囲ってください。(わからなければ質問編集画面でコード部分を選択し<code>ボタンを押してください)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問