共用方式為


infer_storage_schema_with_suggestions 外掛程式

適用於: ✅Microsoft網狀架構Azure 數據總管

infer_storage_schema_with_suggestions 外掛程式會推斷外部數據的架構,並傳回 JSON 物件。 針對每個數據行,物件會提供推斷的類型、建議的類型,以及建議的對應轉換。 建議的類型和對應是由建議邏輯所提供,該邏輯會使用下列邏輯來判斷最佳類型:

  • 識別數據行:如果數據行的推斷類型是 long ,且數據行名稱結尾 id為 ,則建議的類型是 string ,因為它會為通用等號篩選的識別數據行提供優化的索引編製。
  • Unix datetime 數據行:如果數據行的推斷類型是 long ,而且其中一個 unix 時間到日期時間對應轉換會產生有效的 datetime 值,建議的類型是 datetime ,而建議ApplicableTransformationMapping的對應是產生有效 datetime 值的對應。

外掛程式是使用運算子叫 evaluate 用的。 若要取得數據表架構,該架構使用推斷的架構來建立和改變 Azure 儲存體 外部數據表,而不需建議,請使用 infer_storage_schema 外掛程式。

驗證與授權

要求的屬性中,您可以指定要存取的記憶體 連接字串。 每個記憶體 連接字串 會指定用來存取記憶體的授權方法。 根據授權方法,主體可能需要授與外部記憶體的許可權,才能執行架構推斷。

下表列出支持的驗證方法,以及記憶體類型所需的任何許可權。

驗證方法 Azure Blob 儲存體 / Data Lake Storage Gen2 Data Lake Storage Gen1
模仿 儲存體 Blob 資料讀者 讀取者
共用存取 (SAS) 權杖 清單 + 讀取 Gen1 不支援此驗證方法。
Microsoft Entra 存取令牌
儲存體帳戶存取金鑰 Gen1 不支援此驗證方法。

語法

evaluateinfer_storage_schema_with_suggestions( 選項 )

深入瞭解 語法慣例

參數

姓名 類型​​ 必要 描述
選項 dynamic ✔️ 指定 要求屬性的屬性包。

要求支持的屬性

名稱 類型​​ 必要 描述
StorageContainers dynamic ✔️ 記憶體 連接字串 陣列,表示預存數據成品的前置詞 URI。
DataFormat string ✔️ 其中一種支援的 擷取數據格式
FileExtension string 如果指定,函式只會掃描以這個擴展名結尾的檔案。 指定延伸模組可能會加速程式,或排除數據讀取問題。
FileNamePrefix string 如果指定,函式只會掃描以這個前置詞開頭的檔案。 指定前置詞可能會加速程式。
模式 string 架構推斷策略。 值: anylastall。 函式會從第一個找到的檔案、最後一個寫入的檔案,或分別從所有檔案推斷數據架構。 預設值是 last
InferenceOptions dynamic 更多推斷選項。 有效選項: UseFirstRowAsHeader 用於分隔的檔案格式。 例如,'InferenceOptions': {'UseFirstRowAsHeader': true}

傳回

外掛程式會 infer_storage_schema_with_suggestions 傳回單一結果數據表,其中包含包含 JSON 字串的單一數據列/資料行。

注意

  • 除了讀取之外,記憶體容器 URI 秘密金鑰還必須具有 List 的許可權
  • 架構推斷策略 『all』 是一項非常「昂貴」的作業,因為它表示從 找到的所有 成品讀取並合併其架構。
  • 某些傳回的類型可能不是因類型猜測錯誤而實際傳回的類型(或架構合併程序的結果)。 這就是為什麼您應該先仔細檢閱結果,再使用結果。

範例

let options = dynamic({
  'StorageContainers': [
    h@'https://storageaccount.blob.core.windows.net/MobileEvents;secretKey'
  ],
  'FileExtension': '.json',
  'FileNamePrefix': 'js-',
  'DataFormat': 'json'
});
evaluate infer_storage_schema_with_suggestions(options)

範例輸入數據

    {
        "source": "DataExplorer",
        "created_at": "2022-04-10 15:47:57",
        "author_id": 739144091473215488,
        "time_millisec":1547083647000
    }

輸出

{
  "Columns": [
    {
      "OriginalColumn": {
        "Name": "source",
        "CslType": {
          "type": "string",
          "IsNumeric": false,
          "IsSummable": false
        }
      },
      "RecommendedColumn": {
        "Name": "source",
        "CslType": {
          "type": "string",
          "IsNumeric": false,
          "IsSummable": false
        }
      },
      "ApplicableTransformationMapping": "None"
    },
    {
      "OriginalColumn": {
        "Name": "created_at",
        "CslType": {
          "type": "datetime",
          "IsNumeric": false,
          "IsSummable": true
        }
      },
      "RecommendedColumn": {
        "Name": "created_at",
        "CslType": {
          "type": "datetime",
          "IsNumeric": false,
          "IsSummable": true
        }
      },
      "ApplicableTransformationMapping": "None"
    },
    {
      "OriginalColumn": {
        "Name": "author_id",
        "CslType": {
          "type": "long",
          "IsNumeric": true,
          "IsSummable": true
        }
      },
      "RecommendedColumn": {
        "Name": "author_id",
        "CslType": {
          "type": "string",
          "IsNumeric": false,
          "IsSummable": false
        }
      },
      "ApplicableTransformationMapping": "None"
    },
    {
      "OriginalColumn": {
        "Name": "time_millisec",
        "CslType": {
          "type": "long",
          "IsNumeric": true,
          "IsSummable": true
        }
      },
      "RecommendedColumn": {
        "Name": "time_millisec",
        "CslType": {
          "type": "datetime",
          "IsNumeric": false,
          "IsSummable": true
        }
      },
      "ApplicableTransformationMapping": "DateTimeFromUnixMilliseconds"
    }
  ]
}