Разбор столбца .json в Power BI

Это довольно прямое оформление идентификатора на работе. Префикс imp_ автоматически генерируется компилятором, он экспортирует указатель на функцию, который позволяет оптимизировать привязку к экспорту DLL. По языковым правилам imp_ имеет префикс ведущего подчеркивания, требуемого, поскольку он живет в глобальном пространстве имен и генерируется реализацией и в противном случае не отображается в исходном коде. Таким образом, вы получаете _imp_.

. Следующее, что происходит, заключается в том, что компилятор украшает идентификаторы , чтобы позволить компоновщику распознавать неверные совпадения. Весьма важно, потому что компилятор не может диагностировать несоответствия декларации между модулями и самостоятельно диагностировать их во время выполнения very .

Во-первых, существует C ++-оформление - очень сложная схема, которая поддерживает перегрузки функций. Он генерирует довольно странные имена, обычно в том числе много? и @ символов с дополнительными символами для аргументов и возвращаемых типов, так что перегрузки недвусмысленны. Затем есть декорация для идентификаторов C, они основаны на вызывающем соглашении. Функция cdecl имеет одно ведущее подчеркивание, функция stdcall имеет лидирующий знак подчеркивания и конечный @n, который позволяет диагностировать несогласованные объявления аргументов, прежде чем они будут дисбаланс стека.

Таким образом, вы получили ошибку компоновщика, потому что вы забыли указать ссылку на C, линкеру было предложено в значительной степени сопоставить его с 64-битным кодом. оформленное имя C ++ с мягко оформленным названием C. Затем вы установили его с помощью extern "C", теперь вы получили единственное добавленное подчеркивание для cdecl, превратив _imp_ в __imp_.

13
задан eclairs 28 November 2016 в 14:24
поделиться

1 ответ

Используйте Json.Document() функция для преобразования строки в данные Json.

let
    Source = Json.Document(Json.Document(Web.Contents("http://localhost:18091/pools/default/buckets/Aggregation/docs/AvgSumAssuredByProduct"))[json]),
    #"Converted to Table" = Record.ToTable(Source),
    #"Filtered Rows" = Table.SelectRows(#"Converted to Table", each not Text.Contains([Name], "type_")),
    #"Renamed Columns" = Table.RenameColumns(#"Filtered Rows",{{"Name", "AvgSumAssuredByProduct"}}),
    #"Changed Type" = Table.TransformColumnTypes(#"Renamed Columns",{{"Value", type number}})
in
    #"Changed Type"
0
ответ дан KARTHIKEYAN.A 24 October 2019 в 13:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: