我正在尝试展平和过滤 CosmosDB 中的 json 数据。数据如下所示,我想展平数组变量中的所有内容,然后按数组内的特定 _id 和时间戳进行过滤:
{
"_id": 21032,
"FirstConnected": {
"$date": 1522835868346
},
"LastUpdated": {
"$date": 1523360279908
},
"Variables": [
{
"_id": 99999,
"Values": [
{
"Timestamp": {
"$date": 1522835868347
},
"Value": 1
}
]
},
{
"_id": 99998,
"Values": [
{
"Timestamp": {
"$date": 1523270312001
},
"Value": 8888
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud) 我有一个在 Databricks 中使用以下 Scala 代码在 SQL SERVER 中执行存储过程的工作示例。但我想知道是否可以在 Python JDBC 中做同样的事情?我无法让它发挥作用。请参阅下面的示例:
SCALA 中的工作代码
import java.sql.DriverManager
import java.sql.Connection
import org.apache.spark.sql.DataFrame
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.types.{StructType, StructField, StringType,IntegerType};
import java.sql.ResultSet
val username = "xxxxx"
val pass = "xxxxx"
val url = "jdbc:sqlserver://xxx.database.windows.net:1433;databaseName=xxx"
val table = "SalesLT.Temp3"
val query = s"EXEC sp_truncate_table '${table}'"
val conn = DriverManager.getConnection(url, username, pass)
val rs = conn.createStatement.execute(query)
Run Code Online (Sandbox Code Playgroud)
到目前为止的Python代码
connector_type_sql_server_driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
jdbc_hostname = "xxxx.database.windows.net"
jdbc_database = "xxxx"
jdbc_port = 1433
jdbc_url = f"jdbc:sqlserver://{jdbc_hostname}:{jdbc_port};database={jdbc_database}"
jdbc_spa_user = "xxx"
jdbc_spa_password = …Run Code Online (Sandbox Code Playgroud) 我有一个 azure blob 容器,其中每 6 小时放置一些带有数据的 json 文件,我想使用 Azure 数据工厂将其复制到 Azure SQL DB。文件的文件模式是这样的:“customer_year_month_day_hour_min_sec.json.data.json”
blob 容器也有其他 json 数据文件,因此我对数据集中的文件进行了过滤。
第一个问题是如何在 blob 数据集上设置文件路径以仅查找我想要的 json 文件?我尝试使用通配符 *.data.json 但这不起作用。我开始工作的唯一文件名通配符是 *.json
第二个问题是如何仅将数据从位于 blob 存储中的新文件(具有特定文件模式)复制到 Azure SQL?我无法控制将数据放入 blob 容器的过程,也无法将文件移动到另一个位置,这使得操作变得更加困难。
请帮忙。