For AI agents: the complete documentation index is available at https://docs.dataplatform.ovh.net/ja/llms.txt, the full documentation bundle is available at https://docs.dataplatform.ovh.net/ja/llms-full.txt, and this page is available as Markdown at https://docs.dataplatform.ovh.net/ja/tutorials-trino-types-and-casts.md.
  • 🇯🇵 日本語
  • Trino データ型とキャスト

    Trino を介してプロジェクトをクエリする方法は、Explorer の SQL エディタ、Trino コンシューマー、または外部ツールを使用する方法など様々です

    目的

    Trino を介してプロジェクトをクエリする方法は、Explorer の SQL エディタ、Trino コンシューマー、または外部ツールを使用する方法など様々です。操作する型は Lakehouse Manager で見る論理型ではなく、Trino 型です。ほとんどの場合、両者は一致しますが、いくつかのケースでは INSERT 時の明示的な CAST が必要です。

    データ型:Lakehouse から Trino へ

    以下の表は、各 Lakehouse 型を Trino 型にマッピングしたものです:

    Lakehouse 型Trino 型備考
    integerINTEGER32ビット符号付き整数
    bigintBIGINT64ビット符号付き整数
    real / floatREAL32ビット浮動小数点
    doubleDOUBLE64ビット浮動小数点
    decimalDECIMAL(p, s)精度と桁数は保持されます
    varcharVARCHAR作成時に長さが設定されていない限り無制限です
    booleanBOOLEAN
    dateDATE
    timestampTIMESTAMPタイムゾーン非認識
    Info

    列の正確な Trino 型、長さや精度を含むものは、テーブルが 作成 されたときのものです。疑問がある場合は SHOW CREATE TABLE <catalog>.<schema>.<table>; を実行してください。INSERT 内の CAST は、Lakehouse Manager で見る論理型ではなく、その型をターゲットにする必要があります。

    隠示的な強制変換(CAST 不要)

    Trino はこれらの型を自動的に拡張するため、ソース値を直接挿入できます:

    • INTEGERBIGINT
    • REALDOUBLE
    • DECIMAL → より広い DECIMAL
    • VARCHAR(n) → 無制限の VARCHAR'foo' のようなリテラルは VARCHAR(3) であり、Iceberg 文字列に変換される際に変化はありません
    • DATETIMESTAMP

    明示的に書く必要があるキャスト

    Trino はこれらを自動的に強制変換しません。CAST を伴わない INSERTTYPE_MISMATCH を返します:

    • VARCHAR → 数値または日付:CAST('1' AS INTEGER), CAST('2026-05-26' AS DATE)
    • 数値 → VARCHARCAST(x AS VARCHAR)
    • TIMESTAMPTIMESTAMP WITH TIME ZONE(タイムゾーン認識の変更)
    • DECIMAL(p1, s1)DECIMAL(p2, s2) 精度または桁数が異なり、切り捨てが可能な場合
    • 複雑な型:異なる構造の ROW 値の間には強制変換はありません。フィールドごとに ROW(...) を再構築する必要があります

    型付き値の挿入

    有効なリテラル形式を使用する

    INT '1'有効な Trino 構文ではありません。INTEGER のエイリアスとして INT列宣言 で受け入れられますが、型付きリテラル 形式 TYPE 'value' では受け入れられません。

    整数を挿入するには、次のいずれかを使用します:

    INSERT INTO t VALUES (1);                    -- native integer literal
    INSERT INTO t VALUES (INTEGER '1');          -- typed literal, canonical type name
    INSERT INTO t VALUES (CAST('1' AS INTEGER)); -- explicit cast
    Info

    同じ列を読み取ることは、SELECT で型付きリテラルが評価されないため、エラーを引き起こしません。INT 'x' 形式のみがパーサを破壊します。

    VARCHAR 挿入時の TYPE_MISMATCH のトラブルシューティング

    CAST(x AS VARCHAR) は無制限の VARCHAR を生成し、Iceberg 文字列列と互換性があります。TYPE_MISMATCH がまだ発生する場合は、以下の点を順に確認してください:

    1. ターゲット列は無制限ではない可能性があります。 テーブルが VARCHAR(50) を使用して Trino を介して作成された場合、コネクタはその長さ制約を保持します。DESCRIBE catalog.schema.table; または SHOW CREATE TABLE catalog.schema.table; で確認してください。列が varchar(50) の場合は、CAST(x AS VARCHAR(50)) にキャストしてください。
    2. 列の順序または数。 明示的な列リストがない場合、Trino は位置に基づいて値をマッピングし、ダウンストリームの列が一致しなくなると TYPE_MISMATCH を発生させます。エラーは時々間違った式を指します。常に以下を好みます:
      INSERT INTO t (col_a, col_b, col_c) VALUES (...);
    3. 複雑な型。 CAST(... AS VARCHAR)ROWARRAY、または MAP に対して失敗します。フィールドごとに変換するか、json_format(CAST(... AS JSON)) を使用してください。
    4. 生成列とタイムスタンプ。 VARCHARTIMESTAMP または DATE に隠示的に強制変換されません。VARCHAR に見える TYPE_MISMATCH は、実際には同じ VALUES 句内の別の列から来る可能性があります。
    Warning

    不一致が続く場合は、SHOW CREATE TABLE、完全な INSERT 文、および正確なエラーメッセージを収集した後、サポートチケットを開いてください。その情報だけで、不良な列を特定できます。

    さらに学ぶ

    トレーニングや技術的なサポートが必要な場合は、営業担当者にお問い合わせください、または このリンク をクリックして、プロフェッショナルサービスの専門家にプロジェクトのカスタム分析を依頼する見積もりを取得してください。

    Data Platform を構築するチームと直接やり取りし、質問をする、フィードバックを提供する、専用の Discord チャネル で交流する。

    OVHcloud サービスについてサポートが必要な場合は、ヘルプセンター でリクエストを作成してください。

    ユーザーコミュニティ に参加する。