次の方法で共有


データ損失なしで列の種類を変更する

適用対象: ✅Microsoft FabricAzure データ エクスプローラー

.alter column コマンドによって列の種類が変更され、元のデータが回復不能になります。 列の型を変更するときに既存のデータを保持するには、適切に型指定された新しいテーブルを作成します。

列の型を変更するテーブルOriginalTableごとに、次の手順を実行します。

  1. 適切なスキーマ (適切な列の型と同じ列の順序) を使用してテーブル NewTable を作成します。

  2. OriginalTableからNewTableにデータを取り込み、必要なデータ変換を適用します。 次の例では、Col1 が文字列データ型に変換されています。

    .set-or-append NewTable <| OriginalTable | extend Col1=tostring(Col1)
    
  3. テーブル名をスワップするには、 .rename tables コマンドを使用します。

    .rename tables NewTable=OriginalTable, OriginalTable=NewTable
    

    コマンドが完了すると、既存のインジェスト パイプラインの新しいデータが、正しく入力された OriginalTable に流れます。

  4. テーブル NewTableを削除します。

    NewTable には、スキーマ変更前の履歴データのコピーのみが含まれます。 OriginalTableのスキーマとデータが正しく更新されたことを確認した後、安全に削除できます。

    .drop table NewTable
    

次の例では、データを保持しながら OriginalTable のスキーマを更新します。

guid 型の列 "Col1" を使用して、 OriginalTableテーブルを作成します。

.create table OriginalTable (Col1:guid, Id:int)

次に、データを OriginalTableに取り込む。

.ingest inline into table OriginalTable <|
b642dec0-1040-4eac-84df-a75cfeba7aa4,1
c224488c-ad42-4e6c-bc55-ae10858af58d,2
99784a64-91ad-4897-ae0e-9d44bed8eda0,3
d8857a93-2728-4bcb-be1d-1a2cd35386a7,4
b1ddcfcc-388c-46a2-91d4-5e70aead098c,5

文字列型の NewTable テーブルを作成します。

.create table NewTable (Col1:string, Id:int)

OriginalTableからデータをNewTableに追加し、tostring()関数を使用して "Col1" 列を guid 型から型文字列に変換します。

.set-or-append NewTable <| OriginalTable | extend Col1=tostring(Col1)

テーブル名を入れ替えます。

.rename tables NewTable = OriginalTable, OriginalTable = NewTable

古いスキーマとデータを NewTable テーブルを削除します。

.drop table NewTable