文字列タイプの2つの日数の間でレコードを取得するためのハイブクエリ -- hive フィールド 関連 問題

Hive Query to get records between two dates of string type












10
vote

問題

日本語

フィールドst_dateとend_dateをフィールドに照会しようとしています。これらのフィールドは文字列型の値を取ります。 '2014-04-04'、 '2009-10-10'など、 st_date = 2014-04-04' and end_date = '2014-10-10' の間のレコードを見つけたい日程:

レコードを取得するためのクエリを作成する WHERE st_date > 2014-04-03 and end_date < 2014-10-09

詳しくは、この問合せの日付変換に関する問題に直面しています。

英語

I am trying to query a table with the fields st_date and end_date on Hue. These fields take in string type values e.g. '2014-04-04', '2009-10-10' etc. Suppose, I want to find records between st_date = 2014-04-04' and end_date = '2014-10-10' with both the dates included:

How would I write a query to retrieve records WHERE st_date > 2014-04-03 and end_date < 2014-10-09?

More specifically, I am facing problems related to the date conversion in this query.

</div
  
 
 

回答リスト

8
 
vote

query

<事前> <コード> WHERE st_date > '2014-04-03' and end_date < '2014-10-11'

あなたに望ましい結果を与えるべきだと、それが刺されたものであってもそれは辞書学的に比較されていても、i.eは常に大きい '2014-04-03' になるでしょう。

私は私のサンプルテーブルにそれを実行し、それは完全にうまく機能します。

 

Query

   WHERE st_date > '2014-04-03' and end_date < '2014-10-11'  

should give you desired result because even if it is a sting a it will be compared lexicographically i.e '2014-04-04' will be always greater '2014-04-03'.

I ran it on my sample tables and it works perfectly fine.

</div
 
 
1
 
vote

以下のクエリを試してください。

<事前> <コード> SELECT * FROM TABLE WHERE CAST(TRANSLATE(st_date,"-","") AS BIGINT) > CAST(TRANSLATE("2014-04-03","-","") AS BIGINT) AND CAST(TRANSLATE(end_date,"-","") AS BIGINT) < CAST(TRANSLATE("2014-10-09","-","") AS BIGINT)
 

Try below query.

SELECT * FROM TABLE WHERE CAST(TRANSLATE(st_date,"-","") AS BIGINT) > CAST(TRANSLATE("2014-04-03","-","") AS BIGINT)  AND CAST(TRANSLATE(end_date,"-","") AS BIGINT) < CAST(TRANSLATE("2014-10-09","-","") AS BIGINT) 
</div
 
 
0
 
vote
<事前> <コード> hive> select * from salesdata01 where from_unixtime(unix_timestamp(Order_date, 'dd-MM-yyyy'),'yyyy-MM-dd') >= from_unixtime(unix_timestamp('2010-09-01', 'yyyy-MM-dd'),'yyyy-MM-dd') and from_unixtime(unix_timestamp(Order_date, 'dd-MM-yyyy'),'yyyy-MM-dd') <= from_unixtime(unix_timestamp('2011-09-01', 'yyyy-MM-dd'),'yyyy-MM-dd') limit 10; OK 1 3 13-10-2010 Low 6.0 261.54 0.04 Regular Air -213.25 38.94 80 483 10-07-2011 High 30.0 4965.7593 0.08 Regular Air 1198.97 195.99 97 613 17-06-2011 High 12.0 93.54 0.03 Regular Air -54.04 7.3 98 613 17-06-2011 High 22.0 905.08 0.09 Regular Air 127.7 42.76 103 643 24-03-2011 High 21.0 2781.82 0.07 Express Air -695.26 138.14 127 807 23-11-2010 Medium 45.0 196.85 0.01 Regular Air -166.85 4.28 128 807 23-11-2010 Medium 32.0 124.56 0.04 Regular Air -14.33 3.95 160 995 30-05-2011 Medium 46.0 1815.49 0.03 Regular Air 782.91 39.89 229 1539 09-03-2011 Low 33.0 511.83 0.1 Regular Air -172.88 15.99 230 1539 09-03-2011 Low 38.0 184.99 0.05 Regular Air -144.55 4.89 Time taken: 0.166 seconds, Fetched: 10 row(s) hive> select * from salesdata01 where from_unixtime(unix_timestamp(Order_date, 'dd-MM-yyyy'),'yyyy-MM-dd') >= from_unixtime(unix_timestamp('2010-09-01', 'yyyy-MM-dd'),'yyyy-MM-dd') and from_unixtime(unix_timestamp(Order_date, 'dd-MM-yyyy'),'yyyy-MM-dd') <= from_unixtime(unix_timestamp('2010-12-01', 'yyyy-MM-dd'),'yyyy-MM-dd') limit 10; OK 1 3 13-10-2010 Low 6.0 261.54 0.04 Regular Air -213.25 38.94 127 807 23-11-2010 Medium 45.0 196.85 0.01 Regular Air -166.85 4.28 128 807 23-11-2010 Medium 32.0 124.56 0.04 Regular Air -14.33 3.95 256 1792 08-11-2010 Low 28.0 370.48 0.04 Regular Air -5.45 13.48 381 2631 23-09-2010 Low 27.0 1078.49 0.08 Regular Air 252.66 40.96 656 4612 19-09-2010 Medium 9.0 89.55 0.06 Regular Air -375.64 4.48 769 5506 07-11-2010 Critical 22.0 129.62 0.05 Regular Air 4.41 5.88 1457 10499 16-11-2010 Not Specified 29.0 6250.936 0.01 Delivery Truck 31.21 262.11 1654 11911 10-11-2010 Critical 25.0 397.84 0.0 Regular Air -14.75 15.22 2323 16741 30-09-2010 Medium 6.0 157.97 0.01 Regular Air -42.38 22.84 Time taken: 0.17 seconds, Fetched: 10 row(s)
 
hive> select * from salesdata01 where from_unixtime(unix_timestamp(Order_date, 'dd-MM-yyyy'),'yyyy-MM-dd') >= from_unixtime(unix_timestamp('2010-09-01', 'yyyy-MM-dd'),'yyyy-MM-dd') and from_unixtime(unix_timestamp(Order_date, 'dd-MM-yyyy'),'yyyy-MM-dd') <= from_unixtime(unix_timestamp('2011-09-01', 'yyyy-MM-dd'),'yyyy-MM-dd') limit 10;  OK 1   3   13-10-2010  Low 6.0 261.54  0.04    Regular Air -213.25 38.94 80  483 10-07-2011  High    30.0    4965.7593   0.08    Regular Air 1198.97 195.99 97  613 17-06-2011  High    12.0    93.54   0.03    Regular Air -54.04  7.3 98  613 17-06-2011  High    22.0    905.08  0.09    Regular Air 127.7   42.76 103 643 24-03-2011  High    21.0    2781.82 0.07    Express Air -695.26 138.14 127 807 23-11-2010  Medium  45.0    196.85  0.01    Regular Air -166.85 4.28 128 807 23-11-2010  Medium  32.0    124.56  0.04    Regular Air -14.33  3.95 160 995 30-05-2011  Medium  46.0    1815.49 0.03    Regular Air 782.91  39.89 229 1539    09-03-2011  Low 33.0    511.83  0.1 Regular Air -172.88 15.99 230 1539    09-03-2011  Low 38.0    184.99  0.05    Regular Air -144.55 4.89 Time taken: 0.166 seconds, Fetched: 10 row(s)  hive> select * from salesdata01 where from_unixtime(unix_timestamp(Order_date, 'dd-MM-yyyy'),'yyyy-MM-dd') >= from_unixtime(unix_timestamp('2010-09-01', 'yyyy-MM-dd'),'yyyy-MM-dd') and from_unixtime(unix_timestamp(Order_date, 'dd-MM-yyyy'),'yyyy-MM-dd') <= from_unixtime(unix_timestamp('2010-12-01', 'yyyy-MM-dd'),'yyyy-MM-dd') limit 10;  OK 1   3   13-10-2010  Low 6.0 261.54  0.04    Regular Air -213.25 38.94 127 807 23-11-2010  Medium  45.0    196.85  0.01    Regular Air -166.85 4.28 128 807 23-11-2010  Medium  32.0    124.56  0.04    Regular Air -14.33  3.95 256 1792    08-11-2010  Low 28.0    370.48  0.04    Regular Air -5.45   13.48 381 2631    23-09-2010  Low 27.0    1078.49 0.08    Regular Air 252.66  40.96 656 4612    19-09-2010  Medium  9.0 89.55   0.06    Regular Air -375.64 4.48 769 5506    07-11-2010  Critical    22.0    129.62  0.05    Regular Air 4.41    5.88 1457    10499   16-11-2010  Not Specified   29.0    6250.936    0.01    Delivery Truck  31.21   262.11 1654    11911   10-11-2010  Critical    25.0    397.84  0.0 Regular Air -14.75  15.22 2323    16741   30-09-2010  Medium  6.0 157.97  0.01    Regular Air -42.38  22.84 Time taken: 0.17 seconds, Fetched: 10 row(s) 
</div
 
 
 
 

関連する質問

0  Cloudera Impalaクエリが失敗しました  ( Cloudera impala queries failing ) 
私は私たちのクラスターにインパラを設定しようとしていますが、私たちのテーブルからcount(*)を選択しようとすると、次のエラーが発生します。 <前> クエリ:イベントからCOUNT(*)を選択します エラー:AnalysisException:テーブルのメタ...

2  Hive NRマップの進捗状況が矛盾して急激に0%に再起動します  ( Hive nr map progress inconsistent and regurlarly restart from 0 ) 
私は、約千のavroレコードのデータセットに対してジョブをJARN MR(2つのEC2インスタンスを備えて)ジョブを持ち、マップフェーズは不規則に動作しています。以下の進捗状況を参照してください。 もちろん、ResourceManagerとNodeManage...

0  Hiveの上書きを挿入すると、データがロードされていませんが、OKを実行します。  ( Insert overwrite in hive is not loading the data although it runs ok ) 
テーブルを作成し、挿入を挿入して、テーブルから選択したデータをロードするが、OKを実行してもデータをロードしない。何か案が? ...

0  hadoopを設定したが、hiveから回答することができませんか?  ( Configured hadoop but not able to get responce from hive ) 
私はハイブに取り組んでいます、私は私のUbuntuでハイブを設定します(Linux Master 3.2.0-48-generic#74-Ubuntu SMP Thu 6 19:43:26 UTC 2013 x86_64 Jun 6 19:43:26)マシンと...

2  DataFrame列にあるリスト値に基づいて複数のフラグ列を作成する方法  ( How to create multiple flag columns based on list values found in the dataframe ) 
テーブルは次のようになります。 <事前> <コード> ID |CITY ---------------------------------- 1 |London|Paris|Tokyo 2 |Tokyo|Barcelon...

0  コンテナ内のXMLSに基づいてHDINSIGH HIVE外部テーブルを定義する方法  ( How to define an hdinsight hive external table based on xmls in a container ) 
ハイブ外部テーブルを作成しようとしました: 外部表TestXMLの作成(StoreXML文字列) TextFileとして格納されています 場所 'wasb:/// test /'; しかし、私が下記のようなクエリを実行しようとすると、フィールドを抽出できませ...

-6  SQOOPをMySQLに接続します  ( Connecting sqoop to mysql ) 
SQOOPをインストールしましたが、この問題はSQOOPを使用してMySQLとの対話方法です.SQOOPの新機能は、SQOOPを使用している間にHBaseをインストールする必要があります。 あらゆる助けが報告されるでしょう。 ...

6  ハイブでテーブルを分割するにはどうすればよいですか。  ( How can i partition a table with hive ) 
今数日間ハイブで遊んでいますが、私はまだパーティションで苦労しています。 HadoopのApache Logs(Format)を数ヶ月の間に録音しています。それらはDATEによってパーティション化された行テキスト形式で保存されます(FLUMEを介して)。 /...

0  Sqoopを使用してデータをハイブにインポートできません  ( Cant import data into hive using sqoop ) 
MySQLからHiveへのデータをインポートするには、次のコマンドを実行しています。 <事前> <コード> sqoop import --connect jdbc:mysql://hive.bigdata.com:3306/test --usernam...

1  EMRにCloudera Impalaをインストールする方法  ( How to install cloudera impala on emr ) 
はとにかく、私はCloudera Managerなしで、CDHなしで唯一のインパラをインストールすることができます。私はhadoopのApacheバージョンを使っていますか? ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有