-
Notifications
You must be signed in to change notification settings - Fork 5
Closed
Description
use std::collections::HashMap;
use std::sync::Arc;
use datafusion::prelude::*;
use iceberg_catalog_rest::{RestCatalog, RestCatalogConfig};
use iceberg_datafusion::IcebergCatalogProvider;
#[tokio::main]
pub async fn main() {
println!("Hello, world?");
}
pub async fn get_catalog() -> IcebergCatalogProvider {
let config = RestCatalogConfig::builder()
.uri("https://catalog.embucket.com/catalog".to_string())
.warehouse("primary_wh".to_string())
.props(HashMap::default())
.build();
let catalog = RestCatalog::new(config);
IcebergCatalogProvider::try_new(Arc::new(catalog))
.await
.unwrap()
}
#[cfg(test)]
mod tests {
use super::*;
#[tokio::test]
async fn test_first_10_rows_feature() {
let catalog = get_catalog().await;
let ctx = SessionContext::new();
ctx.register_catalog("catalog", Arc::new(catalog));
let provider = ctx.catalog("catalog").unwrap();
let schemas = provider.schema_names();
println!("{schemas:?}");
assert_eq!(schemas.len(), 6);
let tables = provider.schema("engineering").unwrap().table_names();
println!("{tables:?}");
assert_eq!(tables.len(), 9);
let table_name = "nyc-taxi-demo";
let records = ctx
.sql(&format!(
"SELECT * FROM catalog.engineering.`{table_name}` LIMIT 10;"
))
.await
.unwrap()
.collect()
.await
.unwrap();
assert_eq!(records.len(), 1);
let record = &records[0];
assert_eq!(record.num_rows(), 10);
arrow::util::pretty::print_batches(&records).unwrap();
}
}Metadata
Metadata
Assignees
Labels
No labels