# JavaとSQLのエンジンを使ってカラム分析を実行した場合の異なるプロファイリング結果

利用対象...

* Big Data Platform
* Cloud API Services Platform
* Cloud Big Data Platform
* Cloud Data Fabric
* Cloud Data Management Platform
* Data Fabric
* Data Management Platform
* Data Services Platform
* Qlik Talend Cloud Enterprise Edition
* Qlik Talend Cloud Premium Edition
* Real-Time Big Data Platform

週頻度と週低頻度インジケーターを使うカラム分析のプロファイリング結果は、JavaエンジンとSQLエンジンの間で異なる場合があります。

JavaまたはSQLのエンジンを使って週頻度と週低頻度インジケーターによるカラム分析を実行すると、異なる結果が得られる場合があります。

これは、異なるデータベースシステム(DBMS)の間で、または同じDBMSシステムの異なるインストールの間ですら、日付ファンクションが異なる場合があるためです。

MySQLの*WEEK(date [,mode])* ファンクションを例に挙げてみましょう。詳細は、[日付と時刻のファンクション](http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_week)をご覧ください。このファンクションは*date*の週番号を返します。以下を指定できる2引数形式が必要です。

* 週が日曜と月曜のどちらで始まるか
* 戻り値の範囲を0から53または1から53のどちらにするか

SQLエンジンの場合、Talend Studioはファンクション*WEEK(date)* を使います。*mode*引数が省略されるため、Talend StudioはDBMS設定で指定されているデフォルトの*mode*値(一般には*mode=0*)を使います。ただし、これはMySQLのインストールによって異なります。

しかし、このデフォルト動作を変更する必要がある場合は、カスタムインジケーターを作成し、使用するモードをSQLクエリーテンプレートで指定できます。

Javaエンジンの場合、Talend Studioはパラメーター*Locale.getDefault()* を使って上記の2つの引数を確認し、Java APIから結果を取得します。つまり、Talend Studioのロケールを使い、DBMSのロケールは使いません。

(低)週頻度インジケーターおよびその他の日付ファンクションを使って、JavaとSQLのエンジンの間でプロファイリング結果が異なる場合があるのは、このためです。