Skip to main content
Announcements
NEW Customer Portal: Initial launch will improve how you submit Support Cases. FIND OUT MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
kyoden_naoyuki
Contributor III
Contributor III

8桁の年月データの変換について

8桁の年月データの変換方法について

上記ディスカッションに載っていた方法を試みたのですが、

うまくいきませんでした。

具体的に試みた方法としては、

データロードエディタにて、

8桁の年月データが入っている[受付日]という項目を、

追加したセクションにて

=left([受付日],4) & '/' & mid([受付日],5,2) & '/' & right([受付日],2) as [受付日]

と記述し、

データのロード行ったのですが、

下記のピンクが背景のエラーメッセージが表示されました。

こちらはどのように記述するのが本当は正しいのでしょうか?

どなたかご教示いただけますと幸いです。

よろしくお願いいたします。

以下のエラーが発生しました:

Unknown statement: left([受付日],4) & '/' & mid([受付日],5,2) & '/' & right([受付日],2) as [受付日]

ここでエラーが発生しました:

left([受付日],4) & '/' & mid([受付日],5,2) & '/' & right([受付日],2) as [受付日]

Labels (3)
2 Solutions

Accepted Solutions
kentaroWakamatsu
Creator II
Creator II

「8桁の年月データの変換方法について」の記載の内容でも出来ますが、コンバート関数を利用する方が簡単です。

たとえば、数値の'20181102'を日付情報に変換する場合、まずコンバート関数を利用して、日付(シリアル値)情報に変換します。

 (例)Date#(元の値, 'YYYYMMDD')

後ろの 'YYYYMMDD'は、元の値がどのような構成になっているかを指定しています。

たとえば、元の値が '2018年11月2日’ の場合なら、'YYYY年M月D日'と指定します。

これでシリアル値に変更出来ていますので、あとはDate関数を利用して、変更したい書式を指定するだけです。

書式指定しなくても、取り込んだ後にオブジェクト側で指定しても問題ないです。

また、書式変更した結果を、シリアル値ではなく文字列に変更したい場合は、さらにText関数で囲みます。

コンバート関数は、他にも「Timestamp#」、「Time#」などがあり、同様の使い方が出来ます。

上記2パターンのスクリプトサンプルつけておきます。

View solution in original post

hka
Employee
Employee

下記Qlik Senseヘルプを参照ください。

https://help.qlik.com/ja-JP/sense/June2018/Subsystems/Hub/Content/LoadData/editing-table.htm

項目の種類と表示形式の変更の部分に日付データへの変換方法が記載されています。

https://help.qlik.com/ja-JP/sense/June2018/Subsystems/Hub/Content/LoadData/changing-date-time-format...

View solution in original post

9 Replies
chakiw5
Contributor III
Contributor III

単純に先頭の=が不要なのではないでしょうか。

hka
Employee
Employee

実践された方法でもできますが、date()関数とdate#()関数の組み合わせを行うと簡単にできます。

 date(date#(受付日,'YYYYMMDD')) as 受付日

また、データマネージャで読み込むとスクリプトを記述しなくても自動的に日付型として

処理してくれますので試してみてください。

kyoden_naoyuki
Contributor III
Contributor III
Author

ご回答ありがとうございます。

ただし、=を消しても同じエラーが表示されております。

セクションを追加してそこに

left([受付日],4) & '/' & mid([受付日],5,2) & '/' & right([受付日],2) as [受付日]

と記入しているのがよくないのでしょうか?

自動セクションのロックを解除して

記入したほうがよいのでしょうか?

kentaroWakamatsu
Creator II
Creator II

「8桁の年月データの変換方法について」の記載の内容でも出来ますが、コンバート関数を利用する方が簡単です。

たとえば、数値の'20181102'を日付情報に変換する場合、まずコンバート関数を利用して、日付(シリアル値)情報に変換します。

 (例)Date#(元の値, 'YYYYMMDD')

後ろの 'YYYYMMDD'は、元の値がどのような構成になっているかを指定しています。

たとえば、元の値が '2018年11月2日’ の場合なら、'YYYY年M月D日'と指定します。

これでシリアル値に変更出来ていますので、あとはDate関数を利用して、変更したい書式を指定するだけです。

書式指定しなくても、取り込んだ後にオブジェクト側で指定しても問題ないです。

また、書式変更した結果を、シリアル値ではなく文字列に変更したい場合は、さらにText関数で囲みます。

コンバート関数は、他にも「Timestamp#」、「Time#」などがあり、同様の使い方が出来ます。

上記2パターンのスクリプトサンプルつけておきます。

kyoden_naoyuki
Contributor III
Contributor III
Author

ご回答ありがとうございます。

仰るように自動生成セクションを確認したところ、

Date(Date#([受付日],'YYYYMMDD')) as [受付日]

というスクリプトがありました。

しかし、YYYY/MM/DD形式で読み込んだものは日付データとして扱われ、

週や月ごとのデータとしてまとめることができるのですが、

この受付日はそれができません。

週や月ごとにまとめたい場合はどのようにすればよいでしょうか?

hka
Employee
Employee

下記Qlik Senseヘルプを参照ください。

https://help.qlik.com/ja-JP/sense/June2018/Subsystems/Hub/Content/LoadData/editing-table.htm

項目の種類と表示形式の変更の部分に日付データへの変換方法が記載されています。

https://help.qlik.com/ja-JP/sense/June2018/Subsystems/Hub/Content/LoadData/changing-date-time-format...

kyoden_naoyuki
Contributor III
Contributor III
Author

ご教示いただきありがとうございます。

Excelのファイルをひとつアップして、

確認したところ8桁の数字が日付形式になっておりました。

続いてカラムは同一のデータで、

集計月が異なり、同様に8桁表示になっているものがあるのですが、

こちらをアップすると、

1枚目のものは問題なく表示されるのですが、

2枚目は添付画像のように年数が57043、57099のように表示されてしまいます。

よって、日付形式として扱われなくなってしまっているようです。

これを解決する方法は何かございませんか?

QlikSense日付エラー.png

kyoden_naoyuki
Contributor III
Contributor III
Author

ご回答いただきありがとうございます。

Date及びDate#関数については理解いたしました。

kawahata様への返信に記入したのですが、

テーブルを連結すると後からアップロードしたファイルの日付がおかしくなるのですが、

これは何が原因となっているのでしょうか?

ご教示のほどよろしくお願いいたします。

kyoden_naoyuki
Contributor III
Contributor III
Author

こちらの件ですが、

根本的な原因は分かりませんでしたが、

Date及びDate#関数で変換する項目を追加したのちに、

ファイルを複数アップロードすると、

元々のエクセルデータの8桁表示が全部日付へと変換されておりました。

ご回答いただいた方々ありがとうございました。