M таблица с использованием предопределенного типа для каждого столбца - PullRequest
0 голосов
/ 26 января 2020

В следующем запросе M:

let
    #"My Source" = Table.FromRecords({
        [Name="Jared Smith", Age=24],
        [Name = "Tom Brady", Age=44],
        [Name="Hello Tom", Age = null],
        [Name = "asdf", Age = "abc"]
    })
in
    #"My Source"

Почему «ab c» не выдает ошибку? Использует ли PowerPivot «любой» тип, если тип явно не определен?

enter image description here

Ответы [ 2 ]

1 голос
/ 27 января 2020

Как я уже упоминал в моих комментариях: Power Query использует ЛЮБОЙ тип данных, если вы не назначите его специально.

в определенных обстоятельствах, например, когда вы получаете данные из таблицы Excel, он автоматически обнаружит тип данных в зависимости от того, относятся ли все записи в столбце к одному типу. Иногда это происходит неправильно - например, всегда преобразование даты в дату / время, когда вы действительно хотите просто дату.

Вы можете использовать Table.TransformColumnTypes для этого. Вы даже можете написать свою собственную подпрограмму для обнаружения и назначения типов данных.

Вы заметите, что если вы измените DataType вашего Age столбца на Whole Number, ячейка abc покажет Error

Вы также можете написать подпрограммы для обработки смешанного типа данных в одном столбце, например, разделив их на свои собственные столбцы.

1 голос
/ 27 января 2020

Вы можете указать тип для каждого столбца, используя функцию #table:

let
    Source = #table(
        type table
            [
                #"Name"=text,
                #"Age"=number
            ], 
            {
                {"Jared Smith", 24},
                {"Tom Brady", 4},
                {"Hello Tom", null},
                {"asdf", "abc"}
            }
        )
in
    Source
...