Let op: De Data Export Service moet eerst worden geactiveerd en geconfigureerd. Lees op onze portal hoe je de Data Export Service kunt activeren en daarna configureren.
Zodra je geabonneerd bent, zie je een dataset genaamd spend_cloud_[jouw_omgeving] in je BigQuery-verkenner. Als je deze dataset uitvouwt, zie je meerdere weergaven (views) die je kunt bevragen alsof het standaardtabellen zijn.
Deze weergaven bevatten de ruwe, onbewerkte data precies zoals deze is gestructureerd in de brondatabases van de Spend Cloud.
Deze weergaven bevatten voorbewerkte informatie en inzichten. Ze zijn gebouwd bovenop de ruwe data met behulp van vooraf gedefinieerde query's om rapportage eenvoudiger te maken.
Ruwe tabellen gebruiken specifieke numerieke voorvoegsels om aan te geven tot welke module ze behoren. Je ziet alleen tabellen voor modules die actief zijn in jouw omgeving.
| Voorvoegsel | Module | Belangrijkste tabellen |
|---|---|---|
raw_00_* | Algemene administratie | — |
raw_01_* | Facturatiemodule | raw_01_invoice, raw_01_invoice_line |
raw_02_* | Kas- en Pasmodule | raw_02_entry, raw_02_card |
raw_03_* | Declaraties | raw_03_declaration, raw_03_declaration_line |
raw_04_* | Contractenmodule | raw_04_contract, raw_04_contract_version |
raw_05_* | Verplichtingenmodule (Commitments) | raw_05_commitment, raw_05_commitment_line |
raw_06_* | Inkoopmodule (Procurement) | raw_06_order, raw_06_orderline |
raw_config_* | Spend Cloud Configuratie | — |
Let op: Kolommen kunnen worden toegevoegd of verwijderd uit weergaven tijdens platformupdates. Vermijd daarom het gebruik van
SELECT * FROM view. Selecteer in plaats daarvan expliciet de kolomnamen die je nodig hebt, bijvoorbeeld:
sql SELECT id, name FROM view
Veel tabellen bevatten specifieke systeemkolommen die zeer nuttig zijn:
| Kolom | Beschrijving |
|---|---|
__db_name__ | Bevat de naam van je Spend Cloud-omgeving. |
_date_created_ | Geeft aan wanneer een record is aangemaakt. |
_date_changed_ | Geeft aan wanneer een record voor het laatst is gewijzigd. |
Tip: Je kunt de kolom
_date_changed_gebruiken om efficiënt incrementeel data op te halen, in plaats van elke keer de volledige dataset op te halen. Deze velden zijn altijd van het type integer in het formaat Unix timestamp seconds (het aantal seconden vanaf 1-1-1970).
Nu je verbonden bent, kun je deze data inladen in verschillende analytische tools of andere doelsystemen. Hoe je BigQuery-data laadt in jouw doelsysteem, is afhankelijk van de mogelijkheden van het doelsysteem. Veel systemen hebben een standaard connector voor BigQuery — als deze bestaat, heeft dit de voorkeur. Hieronder staan algemene richtlijnen voor populaire platforms.
Tip: Gebruik de "Vernieuwingsopties" (Refresh Options) om automatische data-updates te plannen.
Om een verbinding te creëren waarbij je op "Vernieuwen" kunt klikken in Excel om de nieuwste BigQuery-gegevens op te halen, moet je Google's officiële ODBC-stuurprogramma (Open Database Connectivity) gebruiken.
Let op: Power BI heeft een experimentele BigQuery-connector gelanceerd die alleen werkt voor data die zich in de V.S. bevindt. Aangezien alle Spend Cloud-data veilig in de E.U. blijft, zal deze experimentele connector niet werken. In de Power BI-instellingen kan deze connector worden uitgeschakeld, waarna de koppeling wel werkt.
Heeft jouw doelsysteem geen standaard connector, dan is er altijd de mogelijkheid om data uit BigQuery te halen via de REST API. Google stelt in verschillende programmeertalen client libraries beschikbaar die feitelijk de REST API benaderen, maar eenvoudiger en betrouwbaarder werken. Lees daarover meer op deze pagina van Google. Mocht je toch graag de REST API gebruiken, lees daar dan meer over op deze pagina van Google.
De onderstaande proof-of-concept geeft weer hoe de data kan worden opgehaald met Python:
#Python library: google-cloud-bigquery
from google.cloud import bigquery
import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = {filepath_to_service_account_file}
class BigQueryClient:
def __init__(self, default_project_id: str):
self.default_project_id = default_project_id
self.client = bigquery.Client()
def get_table_names_in_dataset(self, dataset_name: str, project_id: str = None) -> list[str]:
project_id = self.default_project_id if project_id is None else project_id
return [t.table_id for t in self.client.list_tables(f"{project_id}.{dataset_name}")]
def get_query_result(self, full_table_name: str, query_field_names: list) -> list[dict]:
sql = f"select {','.join(query_field_names)} from `{full_table_name}`"
query_job = self.client.query(sql)
data = query_job.result()
return [{field_name: row[i] for i, field_name in enumerate(query_field_names)} for row in data]
bq = BigQueryClient(f"{project_id}")
print(bq.get_query_result(f"{project_id}.{dataset_id}.{view_id}", ["_name_"]))
