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 コンシューマー、または外部ツールを使用する方法です。操作する型は Trino 型 であり、Lakehouse Manager で見る論理型ではありません。ほとんどの場合、両者は一致しますが、いくつかのケースでは CAST を INSERT 時間に明示的に行う必要があります。

    データ型:Lakehouse から Trino へ

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

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

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

    明示的なキャストが不要な暗黙的な強制

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

    • INTEGER → BIGINT
    • REAL → DOUBLE
    • DECIMAL → より広い DECIMAL
    • VARCHAR(n) → 無制限の VARCHAR:'foo' のようなリテラルは VARCHAR(3) であり、Iceberg 文字列に変換されます
    • DATE → TIMESTAMP

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

    Trino はこれらを自動的に強制しません。CAST を持たない INSERT は TYPE_MISMATCH を返します:

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

    タイプ付き値の挿入

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

    INT '1' は 有効な Trino 構文ではありません。INT は 列宣言 で INTEGER のエイリアスとして受け入れられますが、タイプ付きリテラル 形式 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) を介して作成された場合、コネクタはその長さ制約を保持します。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) は ROW、ARRAY または MAP に対して失敗します。フィールドごとに変換するか、json_format(CAST(... AS JSON)) を使用してください。
    4. 生成列とタイムスタンプ。 VARCHAR は TIMESTAMP または DATE に暗黙的に強制されません。VARCHAR にあるように見える TYPE_MISMATCH は、実際には同じ VALUES 句の別の列から来る可能性があります。
    Warning

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

    さらに深く掘り下げる

    トレーニングや技術的なサポートを受けてソリューションを実装するには、営業担当者に連絡するか、Professional Services ページにアクセスして見積もりを依頼し、専門家にプロジェクトを分析してもらってください。

    質問をする、フィードバックを送信する、および Data Platform を構築するチームと直接交流するには、専用の Discord チャネル を利用してください。

    OVHcloud サービスについてサポートが必要な場合は、Help Centre でリクエストを作成してください。

    コミュニティ に参加してください。