タイプ変換モード
項目一覧
バージョン 2.6 の新機能.
MongoDB Connector for BI は、SQL クエリを MongoDB 集計パイプラインに変換しようとします。 BI Connector がクエリを集計パイプラインに変換できない場合、メモリ内でクエリを実行し、レイテンシが増加します。 バージョン2.6より前は、 mongosqld
は型の変換を集計式に変換できず、型の変換に依存するクエリの変換を妨げていました。
バージョン 2.6 以降では、 mongosql
型変換モード は、式のパフォーマンスを向上させるために、すべての型変換をバージョン 4.0 以降を実行している MongoDB サーバーにプッシュダウンします。 このモードはデフォルトで有効になっていますが、 type_conversion_mode
セッション変数を次のいずれかの値に設定することでセッションごとに構成できます。
モード | 説明 |
---|---|
mongosql | デフォルト。 バージョン 4.0 以降を実行している MongoDB サーバーにすべての型変換をプッシュダウンします。 MongoDB バージョン 4.0 より前のバージョンの場合、BI Connector はメモリ内で型変換を実行します。 |
mysql | MySQL の型変換セマンティクスを可能な限り一致させるように BI Connector に指示します。 BI Connector が集計言語で MySQL の型キャスト動作を複製できる場合は、実行のために式が MongoDB サーバーにプッシュダウンされます。 それ以外の場合、 mongosqld はメモリ内で式を実行します。 |
次の例では、 type_conversion_mode
変数をmysql
に設定します。
SET SESSION type_conversion_mode = 'mysql';
重要
mongosql
は、MySQL の動作を厳密に複製する必要がない限り、推奨される型キャスティング モードです。 上記の例では、 mysql
型変換モードを設定しています。これは、 mongosql
がデフォルトであり、明示的に設定する必要がないためです。
型変換モードは次の両方に適用されます。
明示的な型変換。 例:
CAST("123" AS unsigned) 暗黙的な 型変換 。 たとえば、
"123" + 456
モード比較テーブル
次の表は、MySQL の型変換動作と BI Connector のデフォルトの型変換動作( mongosql
モード)との違いの概要を示しています。
から 型 | 入力するには | MySQL の動作 | mongosql モードの動作 |
---|---|---|---|
Varchar | Numeric | さまざまな形式の string から数値を解析します。 詳細については、MySQL 数値リテラル を参照してください。 ドキュメント。 | 任意の先頭記号を使用した 10 進数形式の string から数値を解析します。 |
Varchar | タイムスタンプ | さまざまな形式の string から日付を解析します。 詳細については、「 MySQL の 日付と時間のリテラル 」を参照してください。 。 | "%Y-%m-%dT%H:%M:%S.%LZ" 形式の string から日付を解析します。 |
Int | タイムスタンプ | int の varchar 表現から日付を解析しようとします。 たとえば、整数 20180809183456 は日付2018-08-09 18:34:56.000000 になります。 | 入力を UNIXエポックからの ミリ秒として扱います。 たとえば、 1533839696000 。 |
タイムスタンプ | Long | タイムスタンプを YYYYMMDDHHMMSS 形式の long として解析します。 たとえば、 20180701123400 。 | タイムスタンプを、UNIX エポックからのミリ秒を表す long として解析します。 たとえば、 1530448440000 。 |
タイムスタンプ | Varchar | タイムスタンプを YYYY-MM-DD HH:MM:SS.MMMMMM 形式の varchar として解析します。 たとえば、 “2018-07-01 12:34:00.000000” 。 | タイムスタンプを YYYY-MM-DDTHH:MM:SS:MMMZ 形式の varchar として解析します。 たとえば、 “2018-07-01T12:34:00.000Z” 。 |
注意
mongosql
は、MySQL の動作を厳密に複製する必要がある場合を除き、推奨される型キャスティング モードです。