2017-01-11 5 views
0

WSO2 DSSのCassandraからデータを取得するためのクエリを定義する際に問題が発生しました。クエリ(および操​​作)自体は動作していますが、結果としてタイムスタンプを取得しようとすると問題が発生します。 私は時間部分が欠落している日付とタイムゾーン(2017-01-11 + 0100)のみを取得します。私はこれが何らかの形で正しく動作していないdateTime xsdTypeへのマッピングに関連していると思います。 既にこの問題に直面していますか?タイムスタンプを取得するソリューションはありますか?ここでデータベースからタイムスタンプを選択したときのWSO2 DSSの問題

<query id="getDataQuery" useConfig="CassandraDB"> 
    <expression>SELECT ts,value FROM keyspace.ts_tp WHERE name = :name</expression> 
    <result element="result" rowName="data"> 
     <element column="ts" name="ts" xsdType="dateTime"/> 
     <element column="value" name="value" xsdType="decimal"/> 
    </result> 
    <param name="name" paramType="SCALAR" sqlType="STRING"/> 
</query> 

おかげ

+0

UNIXのタイムスタンプを処理してから、SELECT unixTimestampOf(minTimeuuid(ts))をts、value FROM keyspace.ts_tp WHERE name =:nameに変更することで、ESBの変換を実行することができます'しかし、私はこの問題に対してもっと簡単な解決策はないと想像することはできません – Nicolas

答えて

0

は、DSSのdateTimeマッピングでは問題にしているようで、クエリのサンプルですが、私は確かにJira ticket @wso2を開きました。私の呼び出しが正しい値を返すようにするために、私は結果を得れば、私はXSLを適用し、次の(警告痛いソリューション:))

は、クエリは、MS

<query id="getDataQuery" useConfig="CassandraDB"> 
    <expression>SELECT unixTimestampOf(minTimeuuid(ts)) as dt,value FROM keyspace.ts_tp WHERE source = :source and name = :name and bucket = :bucket and ts &gt;= :tsFrom and ts &lt;= :tsTo</expression> 
    <result element="result" rowName="data"> 
     <element column="dt" name="ts" xsdType="int"/> 
     <element column="value" name="value" xsdType="decimal"/> 
    </result> 
    <param name="source" paramType="SCALAR" sqlType="STRING"/> 
    <param name="name" paramType="SCALAR" sqlType="STRING"/> 
    <param name="bucket" paramType="SCALAR" sqlType="INTEGER"/> 
    <param name="tsFrom" paramType="SCALAR" sqlType="TIMESTAMP"/> 
    <param name="tsTo" paramType="SCALAR" sqlType="TIMESTAMP"/> 
</query> 

になりましたUNIXタイムスタンプを返しますを作りました変換は、それは、異なるタイムゾーンでテストする必要があります日付

<xsl:stylesheet exclude-result-prefixes="xsl soapenv" version="2.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output encoding="utf-8" indent="yes" method="xml" omit-xml-declaration="yes"/> 
    <xsl:template match="@*|node()"> 
     <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
     </xsl:copy> 
    </xsl:template> 

    <xsl:template match="dt"> 
     <xsl:element name="ts"> 
     <xsl:value-of select='xs:dateTime("1970-01-01T00:00:00") + . * xs:dayTimeDuration("PT0.001S")'/> 
     </xsl:element> 
    </xsl:template> 
</xsl:stylesheet> 

、日の光の節約を計算するが、公式の修正を待って、作業ハックのようです。

関連する問題