mikesmallwood
Estoy usando OData V3 y V4 para recuperar datos en Power BI Desktop.
Recibo el siguiente error cuando intento ejecutar mi consulta desde Power BI Desktop.
«DataSource.Error: no pudimos analizar el resultado de la respuesta de OData. Error: el URI de contexto ‘http://meta-ltp-yoga.metaphorix.co.uk:7048/DynamicsNAV100/ODataV4/$metadata#Collection(NAV.Inventory …)’ no es válido para el tipo de carga esperada ‘Colección’.
Detalles:
DataSourceKind=OData
DataSourcePath=http://meta-ltp-yoga.metaphorix.co.uk:7048/DynamicsNAV100/ODataV4/Company(‘CRONUS%20UK%20Ltd. ….
Si vuelvo a escribir «http://Meta-Ltp-Yoga.metaphorix.co.uk:7048/DynamicsNAV100/ODataV4/Company(‘CRONUS UK Ltd.’)/InventoryMovements» en un navegador, los datos se devuelven correctamente.
¿Alguien puede aconsejar dónde podría estar el problema? (OData V3 funciona bien).
v-shex-msft
Hola @MikeSmallwood,
Según el mensaje de error, mencionó una variable de ‘colección’ no válida en su consulta.
No creo que no pueda usar directamente la consulta Odata V3 en Odata V4. (Puede contener alguna actualización para usar parámetro/variable)
Me gustaría sugerirle que consulte el documento V4 para crear una nueva consulta para esto e intente nuevamente.
Novedades en la versión 4.0 de OData
Saludos,
Xiaoxin-sheng
mikesmallwood
En respuesta a v-shex-msft
Hola @v-shex-msft
Gracias por la respuesta. Revisé la documentación y mi sintaxis se ve bien. Estoy luchando por aplicar cualquier contexto de filtro dentro de una función OData.Feed.
Ejemplo
Dejar
OdataFeed4 = «http://Meta-Ltp-Yoga.metaphorix.co.uk:7048/DynamicsNAV100/ODataV4/Company(‘CRONUS UK Ltd.’)/PurchaseOrders?$filter=Type eq ‘Item'»,
Fuente = OData.Feed(OdataFeed4)
en
Fuente
La URL funciona bien en un navegador.
Cualquier ayuda adicional sería muy apreciada.
v-shex-msft
En respuesta a mikesmallwood
Hola @MikeSmallwood,
Creo que puede intentar usar la fórmula a continuación, las palabras clave de consulta de poder distinguen entre mayúsculas y minúsculas, por lo que no puede usar ‘Let’ como inicio o la fórmula.
let OdataFeed4 = "http://Meta-Ltp-Yoga.metaphorix.co.uk:7048/DynamicsNAV100/ODataV4/Company('CRONUS UK Ltd.')/PurchaseOrders?$filter=Type eq 'Item'", Source = OData.Feed(OdataFeed4) in Source
Saludos,
Xiaoxin-sheng
mikesmallwood
En respuesta a v-shex-msft
Hola @v-shex-msft
‘Let’ fue solo un error tipográfico en mi mensaje. Estoy usando ‘let’ en mi consulta.
Solo que quede claro que esto funciona bien en un navegador pero no en la función OData.Feed.
Saludos,
Miguel
v-shex-msft
En respuesta a mikesmallwood
Hola @MikeSmallwood,
Según su descripción, parece un problema relacionado con las credenciales. Me gustaría sugerirle que use el modo privado para probar en el navegador web o en el escritorio power bi después de limpiar las credenciales odata almacenadas y los archivos de caché.
Saludos,
Xiaoxin-sheng
mikesmallwood
En respuesta a v-shex-msft
Hola @v-shex-msft,
Las credenciales están bien y la cadena de URL funciona bien en un navegador.
La cadena de URL también funciona bien en la función OData.Feed en V3 (es decir, si reemplazo «ODataV4» con solo «OData» en la URL).
Debe haber un problema con la sintaxis de la cadena para OData V4 o un problema con Power BI Desktop.
¿Puedes confirmar a través de un ejemplo que sabes que funciona?
Saludos familiares,
Miguel
v-shex-msft
En respuesta a mikesmallwood
Hola @MikeSmallwood,
Tal vez pueda intentar agregar el parámetro de página en la URL de solicitud o usar directamente odata como parámetro:
let OdataFeed4 = "http://Meta-Ltp-Yoga.metaphorix.co.uk:7048/DynamicsNAV100/ODataV4/Company('CRONUS UK Ltd.')/Page/PurchaseOrders?$filter=Type eq 'Item'", Source = OData.Feed(OdataFeed4) in Source
>>La cadena de URL también funciona bien en la función OData.Feed en V3 (es decir, si reemplazo «ODataV4» con solo «OData» en la URL).
Por cierto, revisé dos veces el documento oficial de la versión más reciente y no encontré v4/v3 en esa cadena de consulta.
Uso de expresiones de filtro en URI de OData
Aviso: si sus datos contienen datos de privacidad, oculte los datos confidenciales antes de compartirlos.
Saludos,
Xiaoxin-sheng
mikesmallwood
En respuesta a v-shex-msft
Hola @v-shex-msft,
Cuando NAV 2016 introdujo la compatibilidad con OData V4, proporcionaron una URL separada para el servicio web publicado V4. La única diferencia es el «V4» al final de OData en la URL (ver más abajo).
La URL funciona en un navegador con y sin «V4», pero presenta resultados diferentes según el protocolo V4 (ver más abajo). La función OData.Feed solo trabajar sin el «V4».
Necesito entender cómo usar OData.Feed para obtener la salida V4. ¿Hay alguien que pueda indicarme la dirección correcta?
Atentamente,
Miguel
dejar
Fuente = OData.Feed(«http://Meta-Ltp-Yoga.metaphorix.co.uk:7048/DynamicsNAV100/ODataV4/Company(‘CRONUS%20UK%20Ltd.’)/PurchaseOrders?$select=Buy_from_Vendor_No, Document_No&$filter=Buy_from_Vendor_No eq ‘30000’»)
en
Fuente
Resultado de URL V3
Resultado de URL V4