Comparteix a través de


Consulta de datos (versión preliminar)

[Este artículo es documentación preliminar y está sujeto a modificaciones].

En este artículo se describen los métodos disponibles para consultar datos de Dataverse mediante el SDK para Python. Puede consultar datos mediante el lenguaje de consulta estructurado (SQL) y las API basadas en OData.

Los desarrolladores de Python deben obtener información sobre el SDK para Python leyendo Introducción (versión preliminar) antes de continuar con este artículo.

Consulta de datos mediante SQL

El punto de conexión SQL del servicio web de Dataverse proporciona una interfaz de solo lectura a un conjunto limitado de comandos SQL SELECT . En este artículo se describen las SELECT opciones de consulta disponibles. También puede acceder al punto de conexión de SQL mediante la API web de Dataverse, por lo que el código escrito en lenguajes distintos de Python puede acceder a él.

Importante

La compatibilidad con SQL se limita a las consultas de solo lectura. Es posible que no se admita combinaciones complejas, subconsultas y determinadas funciones SQL. La consulta SQL debe seguir el subconjunto admitido:

  • WHERE solo puede ser un árbol de expresión booleano donde las hojas son operadores binarios ( =, >, como, etc.) con uno de los argumentos que son una referencia de columna directa y otro es una constante.
  • TOP solo permite un literal entero
  • ORDERBY solo puede hacer referencia a columnas y no permite expresiones complejas

En el código de ejemplo siguiente se muestra una consulta SQL en Python.

# SQL query (read-only)
results = client.query.sql(
    "SELECT TOP 10 accountid, name FROM account WHERE statecode = 0"
)
for record in results:
    print(record["name"])

Esta llamada devuelve una lista de diccionarios de filas de resultados. Se devuelve una lista vacía cuando no coinciden filas.

Consulta de datos mediante OData

Puede usar el SDK de las API de Python client.records para emitir consultas OData sobre los datos.

# OData query with paging
# Note: filter and expand parameters are case sensitive
for page in client.records.get(
    "account",
    select=["accountid", "name"],  # select is case-insensitive (automatically lowercased)
    filter="statecode eq 0",       # filter must use lowercase logical names (not transformed)
    top=100,
):
    for record in page:
        print(record["name"])

# Query with navigation property expansion (case-sensitive!)
for page in client.records.get(
    "account",
    select=["name"],
    expand=["primarycontactid"],  # Navigation property names are case-sensitive
    filter="statecode eq 0",      # Column names must be lowercase logical names
):
    for account in page:
        contact = account.get("primarycontactid", {})
        print(f"{account['name']} - Contact: {contact.get('fullname', 'N/A')}")

Al escribir las llamadas de OData, siga estas instrucciones.

  • Para el filter parámetro , use nombres lógicos en minúsculas exactos para los nombres de columna (por ejemplo, "statecode eq 0", no "StateCode eq 0").
  • Para el parámetro expand, use nombres de propiedad de navegación sensibles a mayúsculas que coincidan exactamente con los nombres de servidor.
  • La instrucción select y el parámetro orderby no distinguen entre mayúsculas y minúsculas, y se convierten automáticamente en minúsculas.

Consulte también