Работаю над проектом, в котором я пытаюсь запросить имеющийся у нас источник данных SSAS через Python. В настоящее время соединение находится в файлах Excel, но я пытаюсь реконструировать процесс с помощью Python, чтобы автоматизировать часть анализа, который я делаю ежедневно ... Я использую библиотеку pyadomd для подключения к источнику данных, здесь Мой код:
clr.AddReference(r"C:\Program Files (x86)\Microsoft Office\root\vfs\ProgramFilesX86\Microsoft.NET\ADOMD.NET\130\Microsoft.AnalysisServices.AdomdClient.dll")
clr.AddReference('Microsoft.AnalysisServices.AdomdClient')
from Microsoft.AnalysisServices.AdomdClient import AdomdConnection , AdomdDataAdapter
from sys import path
path.append('C:\Program Files (x86)\Microsoft Office\root\vfs\ProgramFilesX86\Microsoft.NET\ADOMD.NET\130\Microsoft.AnalysisServices.AdomdClient.dll')
import pyadomd
from pyadomd import Pyadomd
from pyadomd._type_code import adomd_type_map, convert
constr= "connection string"
with Pyadomd(constr) as conn:
with conn.cursor().execute(query) as cur:
print(cur.fetchall())
Что работает (частично), похоже, я могу подключиться к источнику данных SSAS. Скажем, я делаю conn = Pyadomd (constr), он не возвращает ошибки (не более, чем раньше). Проблема в том, что когда я пытаюсь выполнить запрос с курсором, он возвращает сообщение об ошибке:
File "C:\Users\User\Anaconda3\lib\site-packages\pyadomd\pyadomd.py", line 71, in execute
adomd_type_map[self._reader.GetFieldType(i).ToString()].type_name
KeyError: 'System.Object'
Проведя небольшое исследование, я обнаружил, что KeyError означает, что код пытается получить доступ к ключу внутри словарь, в котором этого ключа нет. Копаясь в своих переменных и просматривая код, я понял, что строка:
from pyadomd._type_code import adomd_type_map
Создал этот словарь ключей: значения: См. Словарь здесь
Содержит эти ключи: System.Boolean, System.DateTime, System.Decimal, System.Double, System.Int64, System.String. Я решил, что «KeyError: System.Object» относится к этому словарю. Моя проблема в том, как мне импортировать этот ключ System.Object в этот словарь? Из какой библиотеки / модуля / железа Python Ссылка на Clr я могу получить его?
Что я пробовал:
clr.AddReference("System.Object")
Выдало мне сообщение об ошибке: «Невозможно найти сборку» System. Object '. At Python .Runtime.CLRModule.AddReference (String name) «
Я тоже пробовал:
from System import Object #no error but didn't work
from System import System.Object #error saying invalid syntax
Думаю, это связано с некоторым clr.AddReference Iron Python вещь, которую мне не хватает, но я везде искал и не могу ее найти.
Спасибо!