Quelle est la différence entre le TRONC et TO_DATE dans la Ruche

Salut, j'ai essayer de trouver quelle est la différence entre l'utilisation d'un TRONC et TO_DATE est dans la Ruche.

Actuellement au sein de l'oracle, j'ai écrit l'instruction du cas suivant contre les Données indiquées ci-dessous:

ORDER_NO | NAME | DATE_ | TASK_NO
ABC123 | Humpty | 07-OCT-16 12:30:54 | 1
ABC123 | Humpty | 07-OCT-16 12:30:54 | 2
ABC123 | Humpty | 07-OCT-16 12:32:20 | 6

SELECT ORDER_NO, NAME, DATE_, TASK_NO
    (CASE WHEN DATE_ - LAG(DATE_) OVER (PARTITION BY ORDER_NO, NAME, TRUNC(DATE_) ORDER BY DATE_) <= 1/48  
    THEN 0 ELSE 1 END) AS COUNT1

et cela me donne le résultat:

ORDER_NO | NAME | DATE_ | TASK_NO | COUNT1
    ABC123 | Humpty | 07-OCT-16 12:30:54 | 1 | 1
    ABC123 | Humpty | 07-OCT-16 12:30:54 | 2 | 0
    ABC123 | Humpty | 07-OCT-16 12:32:20 | 6 | 1

ce qui est correct. Maintenant, si j'utilise la même requête dans la Ruche contre mon ensemble de données complet, je reçois un message d'erreur:

Error while compiling statement: FAILED: SemanticException Failed to breakup Windowing invocations into Groups. At least 1 group must only depend on input columns.

J'ai donc changé le TRONC de TO_DATE et ce qui fonctionne et me donne les résultats suivants:

SELECT ORDER_NO, NAME, DATE_, TASK_NO
(CASE WHEN DATE_ - LAG(DATE_) OVER (PARTITION BY ORDER_NO, NAME, TO_DATE(DATE_) ORDER BY DATE_) <= 1/48  
    THEN 0 ELSE 1 END) AS COUNT1

et cela me donne le résultat:

ORDER_NO | NAME | DATE_ | TASK_NO | COUNT1
ABC123 | Humpty | 07-OCT-16 12:30:54 | 1 | 1
ABC123 | Humpty | 07-OCT-16 12:32:20 | 6 | 1        
ABC123 | Humpty | 07-OCT-16 12:30:54 | 2 | 1

qui est différent de ce que je reçois dans Oracle. De ce que je peux recueillir la date de valeur est stockée comme une chaîne de caractères comme les résultats ne sont pas commandés par Date/Heure et c'est là que réside le problème, mais ne savez pas quels sont les changements que je dois faire pour le réparer.

Voudrais vraiment l'apprécier quelques conseils.


CODE MIS À JOUR:

SELECT  
ORDER_NO
,NAME
,DATE_FIXED
,TASK_NO
,CASE WHEN DATE_UTS - LAG(DATE_UTS) OVER (PARTITION BY ORDER_NO, NAME, TO_DATE(DATE_FIXED) ORDER BY DATE_FIXED) <= 60*30
THEN    0
ELSE    1
END AS COUNT1
FROM
(
SELECT
ORDER_NO
,NAME
,TASK_NO
,FROM_UNIXTIME(UNIX_TIMESTAMP(DATE_, 'DD-MMM-YY HH:MM:SS')) AS DATE_FIXED
,UNIX_TIMESTAMP(DATE_, 'DD-MMM-YY HH:MM:SS') AS DATE_UTS
FROM TABLE1
) T
Quel est le type de la colonne DATE_?
Grâce Kacper, le DATE_ dans oracle est vers le bas comme un Type de données de Date.
Qu'est-ce que le DATE_ est de type Ruche?
Le DATE_ type de Ruche est en bas, comme une chaîne de caractères.

OriginalL'auteur mowen10 | 2016-12-22