Error de Odata V4. No se pudo analizar el resultado de la respuesta de OData.

Un usuario Pregunto ✅

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).

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.

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

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

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

Odata.PNG

Resultado de URL V4
OdataV4.PNG

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *